본문으로 건너뛰기

배포 개요

멀티 리전 쇼핑몰 플랫폼은 GitOps 패러다임을 채택하여 Git 저장소를 단일 진실 공급원(Single Source of Truth)으로 사용합니다. 인프라 변경은 Terraform으로, 애플리케이션 배포는 ArgoCDKustomize로 관리합니다.

배포 파이프라인 개요

GitOps 원칙

1. 선언적 구성 (Declarative)

모든 인프라와 애플리케이션 상태는 코드로 선언됩니다:

multi-region-architecture/
├── terraform/ # 인프라 코드
│ ├── environments/
│ │ └── production/
│ │ ├── us-east-1/ # 프라이머리 리전
│ │ └── us-west-2/ # 세컨더리 리전
│ └── modules/ # 재사용 모듈
├── k8s/ # Kubernetes 매니페스트
│ ├── base/ # 공통 설정
│ ├── services/ # 서비스별 배포
│ ├── overlays/ # 리전별 오버레이
│ │ ├── us-east-1/
│ │ └── us-west-2/
│ └── infra/ # 인프라 컴포넌트
└── .github/workflows/ # CI/CD 파이프라인

2. 버전 관리 (Versioned)

  • 모든 변경사항은 Git 커밋으로 추적
  • Pull Request를 통한 변경 리뷰
  • 롤백은 Git revert로 수행

3. 자동화 (Automated)

  • PR 생성 시 자동 Plan/Preview
  • main 브랜치 머지 시 자동 배포
  • ArgoCD가 Git 상태와 클러스터 상태를 지속적으로 동기화

4. 감사 가능 (Auditable)

  • Git 히스토리로 변경 이력 추적
  • GitHub Actions 로그로 배포 기록 확인
  • ArgoCD 동기화 히스토리

배포 흐름

인프라 변경 (Terraform)

애플리케이션 변경

환경 구성

리전별 역할

리전역할배포 순서데이터베이스 모드
us-east-1Primary1번째Writer
us-west-2Secondary2번째 (us-east-1 완료 후)Reader / Failover

배포 순서

배포 순서 중요

인프라 변경 시 반드시 us-east-1(Primary)을 먼저 배포해야 합니다. 글로벌 데이터베이스의 경우 Primary 리전에서 글로벌 클러스터가 생성된 후 Secondary가 조인합니다.

도구 스택

도구용도버전
Terraform인프라 프로비저닝1.7.0
ArgoCDKubernetes GitOps2.10.x
KustomizeKubernetes 매니페스트 관리5.x
GitHub ActionsCI/CD 파이프라인-
Docker컨테이너 이미지 빌드-
ECR컨테이너 레지스트리-

브랜치 전략

브랜치 규칙

브랜치용도보호 규칙
main프로덕션 배포PR 필수, 리뷰 1명 이상, CI 통과
feature/*기능 개발-
fix/*버그 수정-
hotfix/*긴급 수정main에서 분기, 바로 머지 가능

롤백 전략

인프라 롤백

# Git에서 이전 상태로 되돌리기
git revert <commit-hash>
git push origin main

# 또는 특정 버전으로 직접 롤백
cd terraform/environments/production/us-east-1
terraform plan -target=module.eks
terraform apply -target=module.eks

애플리케이션 롤백

# ArgoCD CLI 사용
argocd app rollback <app-name> <revision>

# 또는 Git revert
git revert <commit-hash>
git push origin main
# ArgoCD가 자동으로 이전 상태로 동기화

다음 단계