[AWS #0] 프로젝트 AWS 무중단 배포 흐름 (CI/CD + Auto Scaling)

도경원's avatar
Sep 30, 2025
[AWS #0] 프로젝트 AWS 무중단 배포 흐름 (CI/CD + Auto Scaling)
notion image

1. 문제 인식

  • 사용자가 늘어나면 트래픽 요구량이 증가하고, 반대로 줄어들 때도 있음.
  • 온디맨드 확장/축소(Auto Scaling)이 필요함.
  • 단일 서버(EC2 1대)로 운영하면 서버 장애 시 서비스 중단 위험 → 로드밸런서 + 다중 EC2 인스턴스 구조가 필요함.

2. 기본 흐름 정리

  1. 개발자 로컬 → GitHub Push
      • Spring Boot 프로젝트 (프로젝트E)와 테스트 코드 작성.
      • git push 하면 GitHub 저장소에 코드 반영.
  1. GitHub Actions (CI/CD 파이프라인)
      • 푸시 이벤트(Trigger) 발생 → 자동 실행.
      • 단계:
          1. 테스트 실행: 단위 테스트로 코드 안정성 검증.
          1. 빌드 (Jar 생성): Spring Boot 실행 가능한 jar 파일 생성.
          1. 배포 (Deploy): AWS 환경에 jar 업로드 및 실행.
  1. AWS 배포 구조
      • 로드밸런서(Load Balancer)가 클라이언트 요청을 여러 EC2 인스턴스에 분산.
      • 특정 EC2 장애 발생 시, 로드밸런서가 다른 인스턴스로 자동 라우팅 → 무중단 서비스.
      • 사용자가 많아지면 EC2 인스턴스를 복제(스케일 아웃), 줄어들면 축소(스케일 인).

3. 핵심 개념

🔹 CI/CD (지속적 통합 & 지속적 배포)

  • CI: 코드 푸시 → 자동 테스트 & 빌드 → 품질 보장.
  • CD: 빌드된 산출물(Jar)을 자동으로 서버에 배포.
  • 개발자는 git push만 하면 됨 → 나머지는 자동화.

🔹 무중단 배포 & 로드밸런싱

  • 로드밸런서는 항상 정상 인스턴스에만 트래픽 전달.
  • 신규 버전 배포 시 롤링 배포 방식으로 교체 → 서비스 끊김 없음.
  • 특정 인스턴스 장애 발생해도 사용자 입장에서는 문제없이 서비스 사용 가능.

🔹 확장성 (Scalability)

  • 오토 스케일링 그룹(ASG) 활용하면 트래픽 증가 시 EC2 자동 증설, 감소 시 자동 축소.
  • 예: 동시 접속자 100명 → EC2 인스턴스 3개로 분산 처리.

4. 그림으로 요약 (업로드한 다이어그램 설명)

  • 왼쪽: 개발자 → GitHub Push
  • 중앙: GitHub Actions에서 Test → Build(Jar) → Deploy 자동 실행
  • 오른쪽(AWS): 로드밸런서 + 다중 EC2 인스턴스 구조
    • 장애난 EC2는 제외되고
    • 나머지 EC2 인스턴스가 트래픽을 이어받아 무중단 서비스 보장

5. 앞으로 확장 포인트

  • DB까지 붙이고, Blue/Green 배포 방식도 적용 가능.
  • Docker & ECS(Fargate) → 컨테이너 기반 자동화로 발전 가능.
  • CloudWatch + Auto Scaling → 실시간 트래픽 대응.

Share article

Gyeongwon's blog