서버 운영 방식
- EC2-1 (운영 서버)
- Docker Compose를 통해 Spring Boot (백엔드), Redis, MySQL, Nginx 실행
- Blue-Green 무중단 배포 방식 적용
- EC2-2 (Jenkins CI/CD 서버)
- 코드 변경 감지 후 자동 빌드 및 배포
- Docker 이미지 생성 후 Docker Hub에 Push
- EC2-1에서 새로운 컨테이너(Green) 실행 후 트래픽 전환
- S3 + CloudFront (이미지 관리)
- 백엔드에서 이미지 업로드 시 S3 에 업로드
- 연결된 CloudFront 에 배포
배포 방식
- Docker Hub 에 이미지를 버전별로 관리
- 젠킨스를 이용해 CI/CD pipeline을 구축하여 배포 자동화
- Blue-Green 배포 로 무중단 배포 구현
- docker-compose.blue.yml
- docker-compose.green.yml
배포 플로우
현재 운영서버 (EC2-1) 에서 Blue 컨테이너가 실행중
- 개발자가 Github main branch 에 코드 push
- github webhook을 이용해 Jenkins (EC2-2)가 변경 감지
- Jenkins (EC2-2)가 변경 감지 후 빌드 & Docker 이미지 생성
- Jenkins (EC2-2)가 생성된 이미지를 Docker Hub에 Push
- Jenkins (EC2-2)가 EC2-1에서 Green 컨테이너 실행
- Green 컨테이너가 Docker Hub에서 최신 이미지 Pull 후 실행
- Nginx가 트래픽을 기존 Blue → Green으로 변경
- 문제없으면 기존 Blue 컨테이너 종료, 롤백 필요 시 다시 Blue로 전환