kkokkio - 프로젝트/ADR(의사결정문서)

Terraform 도입

파란배개 2025. 6. 2. 10:09

문제 상황

문제 상황

기존 AWS에서 배포 환경을 구성할 때 대시보드 콘솔로 작업하는 경우 다음과 같은 문제점이 있었다.

  • 수작업의 한계
    • AWS 콘솔을 통해 클릭으로 리소스를 생성할 경우에는 매번 대시보드 화면을 전환하며 작업해야 해서 설정 누락 또는 실수로 인해 리소스가 의도대로 구성되지 않거나 비정상 동작하는 경우 발생
  • 설정 변경 추적 불가
    • 콘솔에서는 어떤 설정을 변경했는지 기록이 남지 않아 협업 시 버전 관리가 불가능함
  • 복잡한 구성 반복 어려움
    • dev/prd 환경처럼 유사한 구성을 여러 번 해야 할 때 반복성이 낮고 유지보수가 어려움
  • 구성 위치 파악 어려움
    • 리소스별 설정 위치가 흩어져 있어서 익숙하지 않은 경우 찾기 어려운 상황이 빈번히 발생

제안

제안 내용 및 이유

Terraform

  • 코드 기반인 IaC 도구로 AWS 리소스를 선언하고 자동으로 배포
  • 구성 변경 추적, 협업 시 Git 관리, 자동화, 검토 가능성(plan) 확보
  • 환경별로 쉽게 분리/복제할 수 있고 반복 생성에 유리
  • AWS 외에도 기타 클라우드 및 SaaS 리소스에도 확장 가능
  • 수업에서 Terraform을 사용한 실습 경험을 이미 갖추고 있어 도입 장벽이 낮음

장단점

제안된 기술 도입의 장단점

장점

  • 코드 기반 관리: 수동 작업 대신 코드로 선언 및 Git으로 버전 관리 가능
  • 자동화 가능: 한번 정의된 코드를 통해 인프라를 반복 생성 가능
  • 구성 추적과 검토 용이: terraform plan 명령어로 적용 전 변경점 확인 가능
  • 협업 친화적: 코드로 되어 구성을 확인하기 편하고 코드 리뷰와 함께 인프라 구조 논의 가능
  • 확장성: AWS 외 다양한 클라우드 및 서비스로 적용 가능

단점

  • 학습 곡선 존재: 초기에는 terraform 문법, 설정 등 이해가 필요
  • 리소스 변경 충돌 가능성: 수동 변경과 충돌 발생 시 terraform state와 실제 리소스 간 동기화 이슈 발생 가능
  • 도입 초기엔 느릴 수 있음: 작은 변경에도 plan/apply 시간이 걸릴 수 있음
  • 설정이 변경될 경우 terraform destroy terraform apply 로 재구성 시 기존 서버의 주소나 내부 설정이 바뀌어 재작업이 필요

대안

다른 대안

-AWS 콘솔 수동 구성

  • GUI로 직관적인 설정
  • 설정 누락/반복 불가/한눈에 보기 어려움

-WS CloudFormation

  • AWS 공식 IaC
  • 문법 학습장벽 높음
  • 멀티 클라우드 불가능

-수동 + 스크립트

  • shell 스크립트로 일부 자동화 가능
  • 재사용성·가독성 떨어짐

최종 채택 및 차후 과제

최종 채택 사항 및 차후 과제

Terraform을 프로젝트의 기본 인프라 구성 도구로 채택

  • VPC, EC2, RDS, Security Group, S3 등 모든 주요 리소스를 Terraform으로 구성 및 관리함
  • 개발 및 프로덕션 환경에 따라 파일을 분리해서 관리
  • user_data를 이용해 처음 환경 구성 시 도커 컨테이너도 자동 구성되게 설정

차후 과제

  • 모듈화를 통한 코드 재사용성 향상

'kkokkio - 프로젝트 > ADR(의사결정문서)' 카테고리의 다른 글

Flyway  (1) 2025.06.11
Swagger  (0) 2025.06.11
MySQL  (0) 2025.06.11
Spring Security + JWT  (0) 2025.06.11
Doppler 도입  (0) 2025.06.02