본문으로 건너뛰기

CI/CD 파이프라인

1. 개요

  • 실시간 채팅 플랫폼의 CI/CD 파이프라인은 GitHub Actions를 중심으로 구성되어 있으며, AWS 서비스들과 긴밀하게 통합되어 있습니다.
  • 각 단계별로 자동화된 프로세스를 통해 코드의 품질을 보장하고 안정적인 배포를 수행합니다.

2. 워크플로우 구성

  • 세 가지 주요 워크플로우로 구성되어 있으며, 각각 독립적으로 동작합니다:

2.1 Pull Request 검증 워크플로우

  • 트리거: Pull Request 생성 또는 업데이트
  • 목적: 코드 품질 검증 및 테스트 자동화
  • 프로세스:
    1. 변경된 모듈 감지
      • common 모듈 변경
      • http 모듈 변경
      • ws 모듈 변경
      • notification 모듈 변경
    2. 변경된 모듈에 대한 테스트 실행
      • 단위 테스트
      • 통합 테스트
    3. 테스트 결과 리포트
      • 디스코드 알림

2.2 릴리즈 이미지 빌드 워크플로우

  • 트리거: GitHub Release 생성
  • 목적: 도커 이미지 생성 및 ECR 등록
  • 프로세스:
    1. 릴리즈 태그 기반 빌드
    2. 서비스별 도커 이미지 생성
      • chat-chat-http
      • chat-chat-ws
      • chat-chat-notification
    3. AWS ECR 인증
    4. 이미지 태깅 및 푸시

2.3 AWS 환경 배포 워크플로우

  • 트리거: 수동 실행 (workflow_dispatch)
  • 목적: ECS 서비스 업데이트
  • 프로세스:
    1. 배포 전 상태 확인
      • 현재 서비스 상태 검증
      • 이전 배포 완료 여부 확인
    2. 서비스별 순차 배포
      • 작업 정의 업데이트
      • ECS 서비스 롤링 업데이트
      • 배포 상태 모니터링
    3. 배포 결과 알림

3. 배포 전략

3.1 무중단 배포

  • ECS 롤링 업데이트 사용
  • 최소 정상 인스턴스 수 유지
  • 상태 확인 기반 배포 진행

3.2 롤백 전략

  • 자동 롤백 트리거 조건
  • 수동 롤백 프로세스
  • 롤백 이후 알림

4. 모니터링 및 알림

4.1 배포 모니터링

  • CloudWatch 대시보드
  • ECS 서비스 지표
  • 애플리케이션 로그

4.2 Discord 알림

  • 배포 시작/완료 알림
  • 에러 발생 시 알림
  • 롤백 발생 시 알림

5. 보안

5.1 인증 및 권한

  • GitHub Secrets 사용
  • AWS IAM 역할 관리
  • ECR 저장소 접근 제어

5.2 보안 설정

  • 네트워크 보안 그룹
  • 시크릿 관리
  • 취약점 스캐닝

6. 향후 개선 계획

6.1 자동화 강화

  • 데이터베이스 마이그레이션 자동화
  • 테스트 커버리지 향상
  • 성능 테스트 자동화

6.2 모니터링 개선

  • 상세 메트릭 수집
  • 알림 체계 개선
  • 로그 분석 강화