Terraform(테라폼) 쉽게 이해하기
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
테라폼은 "코드로 인프라를 만드는 도구" 입니다.
여기서 인프라란, 서버•데이터베이스•네트워크 같은 서비스를 운영하기 위해 필요한 IT 자원을 말합니다.
집을 지을 때 설계도 없이, 인부에게 전화로 하나하나 지시하는 것과 같습니다.
"벽돌 여기 놓고, 창문 저기 내고, 문 이쪽에 달아주세요"
이 방식은 누가, 언제, 뭘 바꿨는지 알기 어렵고, 실수하기 쉽습니다.
건축 설계도를 그려놓고 "이 설계도대로 지어주세요"라고 하는 것과 같습니다.
코드로 작성하기 때문에 Git(버전 관리 도구)으로 변경 이력을 추적할 수 있습니다.
누가, 언제, 왜 바꿨는지 한눈에 확인 가능합니다.
수동으로 클릭하다 보면 설정을 빠뜨리거나 잘못 입력할 수 있습니다.
코드로 작성하면 항상 같은 결과가 나옵니다.
개발 환경을 만들어놨는데, 동일한 구성으로 운영 환경도 필요하다면?
코드를 복사해서 약간만 수정하면 똑같은 환경을 몇 분 만에 만들 수 있습니다.
"서버 설정 어떻게 했어?" 라고 물어볼 필요 없이, 코드를 보면 현재 인프라 상태를 바로 파악할 수 있습니다.
테스트용으로 만든 인프라를 지울 때, 하나하나 찾아서 삭제할 필요 없이 명령어 하나로 만들었던 모든 것을 한 번에 제거할 수 있습니다.
테라폼은 크게 3단계로 동작합니다.
원하는 인프라를 .tf 파일에 작성합니다.
예시) "AWS에 서버 1대를 만들어줘"
resource "aws_instance" "my_server" {
ami = "ami-12345678" # 서버의 운영체제 이미지
instance_type = "t3.micro" # 서버 사양
}
코드를 몰라도 괜찮습니다. 핵심은 "원하는 상태를 글로 적어놓는다" 는 것입니다.
terraform plan 명령어를 실행하면, 테라폼이 "이렇게 바뀔 예정입니다" 라고 미리 알려줍니다.
+ aws_instance.my_server 가 새로 생성됩니다
- 사양 : t3.micro
- 운영체제 : ami-12345678
실제로 아무것도 바뀌지 않습니다. 시뮬레이션입니다.
마치 네비게이션이 출발 전에 경로를 미리 보여주는 것과 같습니다.
terraform apply 명령을 실행하면, 미리보기에서 확인한 대로 실제 인프라가 생성•변경•삭제됩니다.
테라폼의 가장 중요한 특징은 "선언적(Declarative)" 이라는 점입니다.
| 명령형 (기존 방식) | 선언형 (테라폼 방식) | |
|---|---|---|
| 비유 | "밀가루 반죽하고, 오븐 180도로 예열하고, 30분 구워줘" | "케이크 하나 만들어줘" |
| 의미 | 과정을 하나하나 지시 | 최종 결과만 알려줌 |
| 장점 | 세밀한 제어 가능 | 간결하고 관리가 쉬움 |
테라폼에게는 "서버 2대가 있는 상태를 원해" 라고만 말하면 됩니다.
현재 서버가 0대면 2대를 만들고, 3대면 1대를 삭제합니다.
테라폼이 알아서 현재 상태 → 원하는 상태로 맞춰줍니다.
테라폼은 "지금 인프라가 어떤 상태인지" 를 기억하는 파일을 갖고 있습니다.
이것을 상태 파일(State File) 이라고 합니다.
[코드 : 원하는 상태] ← 비교 → [상태 파일 : 현재 상태] → [차이만큼 변경]
덕분에 코드를 수정하고 다시 적용하면, 바뀐 부분만 정확히 반영됩니다.
테라폼 = IT 인프라의 설계도를 코드로 작성하고, 자동으로 만들어주는 도구
수작업 대신 코드로 관리하면 → 기록이 남고, 실수가 줄고, 협업이 쉬워집니다.