예전에 Terraform 글을 쓰면서 vagrant와 terraform을 가볍게 비교하고 넘어간 적이 있다. Vagrant 와 같은 도구는 데모용 가상화 환경을 구축하기 위해 존재 하지만 프로덕션 환경과 더 밀접하게 일치하는 실제 인프라에서 소프트웨어를 데모하는 것은 여전히 매우 어렵다는게 요지였는데, 이는 Vagrant가 소수의 버추얼머신을 사용하는 개발 환경을 위해 개발된 것이고, Terraform은 실제 인프라를 관리하기 위해 설계/개발된 것이기 때문이다.
1. Vegrant, Docker, Terraform 이란?
(1) Vagrant는
- 여러 운영 체제에서 일관된 개발 환경 워크 플로를 제공하는 데 초점을 맞춘 도구
- 가볍고 재현 가능하며 이식 가능한 개발 환경을 만들고 구성
- 개발 환경 관리에 중점을 둔 도구
- 가상 머신을 CLI로 관리
(2) Docker는
- 컨테이너화 시스템이 존재하는 한 지속적으로 소프트웨어를 실행할 수있는 컨테이너 관리 도구
- 분산 애플리케이션을 구축, 배포 및 실행하기 위한 개방형 플랫폼
(3) Terraform은
- 인프라 구축을위한 도구
2. Vagrant vs. Docker
- 컨테이너(Docker)는 일반적으로 가상 머신(Vagrant)보다 가볍기 때문에 컨테이너 시작 및 중지가 매우 빠름
- Docker는 macOS, Linux 및 Windows에서 기본 컨테이너화 기능을 사용함
- 현재 Docker는 특정 운영 체제 (예 : BSD)를 지원하지않지만, Vagrant는지원함
- 마이크로 서비스가 많은 환경의 경우 Docker는 단일 Docker VM을 쉽게 시작하고 그 위에서 많은 컨테이너를 매우 빠르게 시작할 수 있기 때문에 매력적임
- Vagrant는 Docker 공급자를 사용하여이 작업을 수행 할 수도 있음
- Vagrant의 주요 이점은 일관된 워크 플로이지만 순수한 Docker 워크 플로가 의미가있는 경우가 많음
3. Vagrant vs. Terraform
- Vagrant와 Terraform은 모두 HashiCorp의 프로젝트
- Vagrant는 개발 환경 관리에 중점을 둔 도구(개발 환경을 위한 것)
- Terraform은 인프라 구축을위한 도구(일반적으로 인프라 관리를 위한 것)
- Vagrant는 Terraform이 제공하지 않는 여러 높은 수준의 기능을 제공
- 동기화 된 폴더, 자동 네트워킹, HTTP 터널링 등은 개발 환경 사용을 용이하게하기 위해 Vagrant에서 제공하는 기능
- Terraform은 개발 환경이 아닌 인프라 관리에 중점을두기 때문에 이러한 기능은 해당 프로젝트의 범위를 벗어남
- Terraform의 주요 용도는 AWS와 같은 클라우드 공급자의 원격 리소스를 관리하는 것
- Terraform은 여러 클라우드 제공 업체에 걸쳐있는 매우 큰 인프라를 관리 할 수 있도록 설계됨
- Vagrant는 주로 소수의 가상 머신만 사용하는 로컬 개발 환경을 위해 설계됨
[출처]
1. Vagrant vs. Docker, Hashi Corp Vagrant, https://www.vagrantup.com/intro/vs/docker
2. Vagrant vs Terraform, Hashi Corp Vagrant, https://www.vagrantup.com/intro/vs/terraform
3. Docker vs Vagrant: What You Need to Know, LUMEN, https://www.ctl.io/developers/blog/post/docker-vs-vagrant
'DevOps' 카테고리의 다른 글
Terraform aws s3 bucket 만들어보기 (0) | 2021.04.16 |
---|---|
ec2 zsh, oh-my-zsh 설치 (0) | 2021.04.06 |
윈도우에서 aws ec2 .pem파일로 접속하기(putty) (0) | 2021.04.06 |
[DevOps/03]The Core Terraform Workflow 테라폼 코어 워크플로우 (0) | 2021.04.06 |
[DevOps/02]Terraform Use cases 테라폼을 사용하는 이유 (0) | 2021.04.06 |