테라폼은 하시코프에서 오픈소스로 개발중인 클라우드 인프라스터럭처 자동화를 지향하는 코드로서 인프라스트럭처(IaC) 도구이다.
IaC란?
- IaC(Infrastructure as Code)는 코드로 인프라스트럭처를 관리한다는 개념으로 테라폼에서는 하시코프 설정 언어(HCL)을 사용해 클라우드 리소스를 선언합니다.
쉽게 말해 인프라를 사람이 읽을 수 있는 코드로 만든다는 의미 입니다.
1. 자동화
- 수동으로 서버를 생성하는게 아닌 코드로 생성하기 때문에 서버 운영 및 관리가 모두 자동화 될 수 있습니다.
2. 속도 & 안전
- 코드로 실행되기 때문에 사람이 수동으로 작업하는 것보다 훨씬 빠르며 또한 사람이 직접 할 때 생길 수 있는 실수들을 방지할 수 있습니다.
3. 문서화
- 모든 인프라가 코드로 기록 및 관리 뙤기 때문에 자동으로 문서화가 됩니다.
- 가장 큰 장점 중 하나로 많은 회사에서 인프라를 직접 구현하고 관리한 담당자를 제외하고는 전체 서버를 전부 파악하고 있는 사람이 없는 경우가 많습니다. 하지만 테라폼의 경우에는 새로 들어온 개발자라도 코드를 보면 전체적인 구성을 이해할 수 있습니다.
4. 형상관리
- git을 통해 형상관리가 가능하며, 인프라의 변경 기록을 쉽게 볼 수 있습니다.
5. 리뷰 및 테스트
- 코드 리뷰와 테스트를 통해 문제가 실제로 발생 되는 것을 어느 정도 예방 할 수 있습니다.
테라폼의 기본 개념
1. 프로비저닝
- 어떤 프로세스나 서비스를 실행하기 위한 준비 단계
- 프로바이더로는 AWS, GCP, Azure와 같은 범용 클라우드 서비스를 비롯해 깃허브, 데이터 도그와 같은 특정 기능을 제공하는 서비스, mysql, 도커와 같은 로컬 서비스를 지원합니다.
2. Resource
- 리소스란 특정 프로바이더가 제공해주는 조작 가능한 대상의 최손 단위를 의미합니다.
3. Plan
- 테라폼 프로젝트 디렉터리 아래의 모든 .tf 파일의 내용을 실제로 적용 가능한지 확인하는 작업을 말합니다.
- 테라폼은 이를 terraform plan 명령어로 제공하며, 이를 명령어로 실행하면 어떤 리소스가 생성되고, 수정되고, 삭제될지 보여줍니다.
4. Apply
- 테라폼 프로젝트 디렉터리 아래의 모든 .tf 파일의 내용대로 리소스를 생성, 수정, 삭제하는 일을 Apply를 통해서 적용합니다.