Project: Shoong-Delivery

[아키텍처] CI/CD 파이프라인 아키텍처 구축기

2-30 2026. 5. 18. 21:49

v0.1 - 초기 구조

구성 요소

  • Developer -> Source Repository (GitHub): 개발자가 코드 Push 및 PR Open
  • GitHub Action (CI):
    • Job 1: Checkout -> ESLint/Format Check -> Type Check
    • Job 2: Docker Image Build -> Trivy (보안 스캔) -> ECR 푸시
  • GitOps Repository: ECR 이미지 태그 자동 업데이트
  • Argo CD: GitOps Repo 변경 감지 -> Helm으로 매니페스트 생성 -> Kubernetes 배포

문제점

  • 테스트 단계 없음
  • PR Open과 main 머지 후 트리거 구분 불명확

v0.2 - CI 구조 개선

구성 요소

  • GitHub Action CI에서 테스트 단계 추가
  • GitHub Action (CI) 트리거 및 job 구분 명확화:
    • job - PR Open: Checkout -> ESLint/Format Check -> Type Check -> Test
    • job - Branch Merge: Docker Image Build -> Trivy -> ECR 푸시

문제점

  • dev / staging / prod 환경 분리 없음

v0.3 - 배포 환경 분리

구성 요소

  • staging 환경 미포함: 서비스 규모가 작아 dev / prod 2단계로만 구성

문제점

  • 브랜치 보호 정책(main PR은 develop에서만)
  • AWS OIDC 인증
  • ECR 이미지 태그 규칙(dev-{sha} / prod-{sha})
  • GitOps 업데이트 방식(sed -> commit -> push, GITOPS_TOKEN 인증)
  • ArgoCD App of Apps 부트스트랩 구조

v0.4 — 실제 구현 반영

개선 사항

  • 브랜치 정책 job 추가job - Check Branch 박스. main 브랜치 PR은 develop에서만 머지 가능 (위반 시 워크플로 실패)
  • CI job 이름 변경
    • job - Code Quality (PR Open 시): Checkout -> ES Lint/Format Check -> Type Check -> Test
    • job - Publish dev/prod (Push develop/main 시): Docker Image Build -> Trivy -> ECR
  • ECR 이미지 태그 규칙 명시dev-{sha} / prod-{sha} 라벨을 ECR 노드 옆에 표기
  • AWS 인증을 OIDC로 명시AWS IAM 노드를 Workflow 영역 밖에 별도 추가, Workflow -> IAM 점선 화살표 라벨 OIDC AssumeRole. Long-lived AWS access key 없이 aws-actions/configure-aws-credentials@v4로 Role Assume
  • ArgoCD App of Apps 구조 표기 — ArgoCD 박스 안에 두 부트스트랩 앱 표기
    • app-of-apps-dev/prod: 서비스 5개(shoong-order, shoong-kitchen, shoong-delivery, shoong-notification, shoong-batch) + infra Apps
    • app-of-apps-shared: Istio (base/istiod/gateway) 등 클러스터 공용 인프라

문제점

  • Frontend 분기 미반영shoong-frontend는 ECR/ArgoCD 경로가 아닌 npm build -> S3 sync -> CloudFront Invalidation 별도 흐름. 다음 버전에서 분기 박스 추가 예정