Spring PetClinic 오픈소스 기반 개인 프로젝트
Petclinic MSA
Spring PetClinic 오픈소스를 MSA 구조로 전환하고, AWS 기반 3-tier 인프라와 배포 자동화 흐름을 설계하는 프로젝트입니다.
2025.09 ~ 진행중GitHub
Role.
- Spring PetClinic 구조 분석 및 서비스 단위 분리
- ECS Fargate 기반 컨테이너 실행 환경 설계
- Blue-Green, Canary 배포 전략 실험
- Terraform 기반 인프라 코드화
Architecture.
- VPC를 Public/Private Subnet으로 분리하고 ALB를 통해 서비스 트래픽을 진입시킵니다.
- 각 서비스 컨테이너는 ECS Fargate에서 실행되며, 배포 이미지는 ECR에 저장합니다.
- GitHub Actions에서 이미지 빌드와 ECS 서비스 업데이트를 자동화하는 구조를 목표로 합니다.
- Prometheus와 Grafana를 붙여 서비스 상태와 배포 이후 지표를 관찰할 수 있도록 확장할 예정입니다.
Gallery.
Key Work.
- Spring PetClinic 오픈소스를 MSA 구조로 전환
- GitHub Actions를 활용한 Blue-Green 및 Canary 배포 흐름 구현
- AWS 3-tier 아키텍처 구성 및 Auto Scaling 적용
- ECR/ECS 기반 컨테이너 오케스트레이션 구성
- Terraform IaC로 인프라 전체 코드화
- Prometheus + Grafana 모니터링 구성 예정
- Azure, NCP 동일 환경 배포를 고려한 멀티 클라우드 확장 설계
Troubleshooting.
Problem
ECS Fargate 배포 시 태스크가 Target Group Health Check에서 Unhealthy 상태를 반복하며 롤백되었습니다.
Root Cause
ALB에서 컨테이너 포트 8080으로 접근하는 보안 그룹 인바운드 규칙이 누락되었고, Spring Security가 /actuator/health 요청을 401로 차단했습니다.
Action
ALB 보안 그룹에서 컨테이너 포트 접근을 허용하고, health check URL은 permitAll()로 예외 처리해 무중단 배포 파이프라인을 안정화했습니다.
Stack.
Spring Boot / Docker / AWS ECS / ECR / ALB / Auto Scaling / Terraform / GitHub Actions / Prometheus / Grafana
Learning.
- 배포 자동화는 애플리케이션 설정, 네트워크, 헬스 체크 정책이 함께 맞아야 안정적으로 동작합니다.
- MSA 전환은 서비스 분리 자체보다 운영 경계와 관찰 지표를 함께 설계하는 것이 중요했습니다.
Next.
- 모니터링 대시보드 구성
- Canary 배포 단계별 검증 기준 정리
- NCP 또는 Azure 환경으로 동일 구조 배포 실험