1. 개요
- 실시간 채팅 플랫폼의 CI/CD 파이프라인은 GitHub Actions를 중심으로 구성되어 있으며, AWS 서비스들과 긴밀하게 통합되어 있습니다.
- 각 단계별로 자동화된 프로세스를 통해 코드의 품질을 보장하고 안정적인 배포를 수행합니다.
2. 워크플로우 구성
- 세 가지 주요 워크플로우로 구성되어 있으며, 각각 독립적으로 동작합니다:
2.1 Pull Request 검증 워크플로우
- 트리거: Pull Request 생성 또는 업데이트
- 목적: 코드 품질 검증 및 테스트 자동화
- 프로세스:
- 변경된 모듈 감지
- common 모듈 변경
- http 모듈 변경
- ws 모듈 변경
- notification 모듈 변경
- 변경된 모듈에 대한 테스트 실행
- 테스트 결과 리포트
2.2 릴리즈 이미지 빌드 워크플로우
- 트리거: GitHub Release 생성
- 목적: 도커 이미지 생성 및 ECR 등록
- 프로세스:
- 릴리즈 태그 기반 빌드
- 서비스별 도커 이미지 생성
- chat-chat-http
- chat-chat-ws
- chat-chat-notification
- AWS ECR 인증
- 이미지 태깅 및 푸시
2.3 AWS 환경 배포 워크플로우
- 트리거: 수동 실행 (workflow_dispatch)
- 목적: ECS 서비스 업데이트
- 프로세스:
- 배포 전 상태 확인
- 현재 서비스 상태 검증
- 이전 배포 완료 여부 확인
- 서비스별 순차 배포
- 작업 정의 업데이트
- ECS 서비스 롤링 업데이트
- 배포 상태 모니터링
- 배포 결과 알림
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 모니터링 개선
- 상세 메트릭 수집
- 알림 체계 개선
- 로그 분석 강화