Skip to content

✨ Feature - Terraform IaC API 구현 #18

@leeeunda

Description

@leeeunda

🛠️ Issue Description

AWS 인프라를 Terraform 코드로 관리할 수 있는 API 워크플로우를 구현했습니다. 사용자가 Terraform 코드를 작성하고, 검증하고, 실제 클라우드 환경에 배포하며, 필요시 인프라를 삭제할 수 있는 Infrastructure as Code 환경을 제공합니다.

💭 Functional role

  • Terraform 코드 검증 (/api/projects/{projectId}/terraform/validate): 문법 및 구성 오류 사전 검출
  • Terraform Plan (/api/projects/{projectId}/terraform/plan): 배포 전 변경사항 미리 확인
  • Terraform Apply (/api/projects/{projectId}/terraform/apply): 실제 AWS 환경에 인프라 배포
  • Terraform Destroy (/api/projects/{projectId}/terraform/destroy): 코드 기반 인프라 삭제
  • 배포 ID 기반 Destroy (/api/projects/{projectId}/terraform/deployments/{deploymentId}/destroy): 특정 배포의 인프라 삭제
  • 배포 상태 조회 (/api/projects/{projectId}/terraform/deployments/{deploymentId}): 실시간 배포 진행 상황 추적
  • 배포 이력 조회 (/api/projects/{projectId}/terraform/deployments): 프로젝트별 배포 기록 관리

📝 check-lists

  • TerraformExecutor 서비스: 프로젝트별 상태 파일 기반 실행 엔진
  • TerraformService: 비즈니스 로직 및 배포 상태 관리
  • Deployment 엔티티: 배포 이력 및 상태 추적 (PENDING, RUNNING, SUCCESS, FAILED)
  • DeploymentRepository: 프로젝트별 배포 이력 조회 (무한스크롤 지원)
  • Docker 이미지: Terraform 1.7.0 설치 및 환경 구성
  • 동기 처리: 배포/삭제 작업의 즉시 결과 반환
  • 보안: JWT 인증, 프로젝트별 접근 제어

🔄 추후 개선 사항

  • 상태 파일 관리: Terraform 상태 파일 백업 및 복구 기능
  • 멀티 클라우드: AWS 외 GCP, Azure 지원
  • 클라우드 자격 증명 관리: 클라우드 액세스 키 기반 인프라 배포 파이프라인 구성
  • 코드 템플릿: 일반적인 인프라 패턴에 대한 템플릿 라이브러리
  • 성능 최적화: Terraform 명령어 실행 속도 개선

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions