Study

Terraform을 사용하는 이유

kinim329 2026. 5. 13. 23:50

어제는 Terraform이 인프라를 코드로 관리하는 도구라는 것을 정리했다.

오늘은 Terraform을 왜 사용하는지에 대해 정리해보려고 한다.

인프라를 직접 만들 때의 문제

AWS에서 EC2를 만든다고 하면 콘솔에 들어가서 직접 설정을 선택해야 한다.

인스턴스 타입을 고르고, VPC와 서브넷을 선택하고, 보안 그룹을 만들고, 필요한 포트를 열어야 한다.

처음에는 크게 어렵지 않지만, 서버가 여러 개가 되면 문제가 생긴다.

어떤 설정으로 만들었는지 기억하기 어렵고, 사람이 직접 클릭해서 만들다 보면 설정이 조금씩 달라질 수 있다.

예를 들어 A 서버는 8080 포트가 열려 있는데, B 서버는 빠져 있을 수도 있다.

이런 차이는 나중에 배포나 운영 과정에서 예상하지 못한 오류로 이어질 수 있다.

Terraform을 사용하면 좋은 점

Terraform을 사용하면 인프라 설정을 코드로 남길 수 있다.

즉, EC2를 몇 개 만들지, 어떤 인스턴스 타입을 사용할지, 어떤 보안 그룹을 적용할지 등을 파일에 작성한다.

이렇게 하면 인프라 설정이 코드로 남기 때문에 나중에 다시 확인하기 쉽다.

또한 Git으로 관리할 수 있기 때문에 누가 언제 어떤 인프라 설정을 변경했는지도 추적할 수 있다.

원하는 상태를 기준으로 동작한다

Terraform의 중요한 특징은 “원하는 상태”를 기준으로 동작한다는 점이다.

예를 들어 코드에 EC2 인스턴스가 1개 필요하다고 작성되어 있는데 실제 AWS에는 없다면, Terraform은 EC2를 새로 생성한다.

반대로 코드에서 인스턴스 타입을 변경하면 Terraform은 현재 상태와 코드의 차이를 비교해서 변경이 필요한 부분을 알려준다.

이때 사용하는 명령어가 terraform plan이다.

terraform plan
 

이 명령어를 실행하면 실제로 적용하기 전에 어떤 리소스가 생성, 수정, 삭제될지 미리 확인할 수 있다.

그리고 문제가 없으면 다음 명령어로 실제 적용한다.

terraform apply

Terraform State

Terraform은 현재 인프라 상태를 기억하기 위해 State 파일을 사용한다.

이 파일에는 Terraform이 관리하는 리소스 정보가 저장된다.

예를 들어 어떤 EC2 인스턴스를 만들었는지, 어떤 보안 그룹을 만들었는지 같은 정보가 들어간다.

Terraform은 이 State 파일과 코드, 실제 인프라 상태를 비교해서 변경 사항을 판단한다.

그래서 State 파일은 Terraform에서 매우 중요하다.

혼자 테스트할 때는 로컬에 State 파일을 둘 수 있지만, 팀 프로젝트에서는 S3 같은 원격 저장소에 보관하는 경우가 많다.

그래야 여러 사람이 같은 인프라 상태를 기준으로 작업할 수 있다.

'Study' 카테고리의 다른 글

Terraform 개념 정리  (0) 2026.05.12
Jenkins 개념 정리  (0) 2026.05.11
로그 레벨  (0) 2026.05.10
로그 찍기의 중요성  (0) 2026.05.09
Redis로 분산락 거는 방법  (0) 2026.05.07