문제 상황
문제 상황
기존 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 |