inblog logo
|
Gyeongwon's blog
    AWS

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

    도경원's avatar
    도경원
    Sep 30, 2025
    [AWS #0] 프로젝트 AWS 무중단 배포 흐름 (CI/CD + Auto Scaling)
    Contents
    1. 문제 인식2. 기본 흐름 정리3. 핵심 개념4. 그림으로 요약 (업로드한 다이어그램 설명)5. 앞으로 확장 포인트
    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
    Contents
    1. 문제 인식2. 기본 흐름 정리3. 핵심 개념4. 그림으로 요약 (업로드한 다이어그램 설명)5. 앞으로 확장 포인트

    Gyeongwon's blog

    RSS·Powered by Inblog