Prod/Stage 배포 프로세스 개선 안

푸르둥개·2025년 11월 19일

내가 생각하는 Prod/Stage 환경의 배포 프로세스 개선안 정리 함
운영자(DevOps)와 개발자(Dev) 모두가 안정적이고 신속하게 배포 및 롤백을 수행할 수 있도록 지원
ArgoCD 중심의 GitOps 기반 배포 자동화 체계 구축
Slack 연동을 통한 실시간 배포 현황 모니터링

Work Flow (전체 아키텍처 개요)

역할 및 권한

배포 절차

  • 1단계: GitHub 소스 Push
    • Trigger: repository에 tag 생성 (예: v1.2.3)
    • Slack 알림 항목:
      • Repository: repo-name
      • Tag: v1.2.3
      • 환경: staging, prod
      • Ingress 도메인 정보
  • 2단계: ArgoCD 수동 Sync 대기
    • Git 변경 감지 → 자동 Application 상태 업데이트
      • Slack 알림 항목:
        • Sync 상태: OutOfSync
        • Diff 정보: 변경 내역
        • Health 상태: Healthy / Degraded
  • 3단계: ArgoCD Sync 실행
    • 운영자/개발자가 ArgoCD UI 또는 CLI로 수동 Sync 실행
    • Slack 알림 항목:
      • Sync 진행 중
      • Error Log (발생 시)
      • Health 상태
  • 4단계: Kubernetes 모듈 배포 상태 확인
    • 배포 대상 모듈:
      • Deployment / DaemonSet / Job 등
    • Slack 알림 항목:
      • Event 시간 (Age)
      • 모듈 상태 (Ready, Error 등)
      • Deployment 상태 메시지

롤백 절차

  • 1단계: ArgoCD “HISTORY AND ROLLBACK”
    • ArgoCD UI에서 이전 Revision 선택
      • Slack 알림 항목:
        • 롤백 Revision 정보
        • Error Log
        • Health 상태
  • 2단계: Kubernetes 롤백 결과 확인
    • 롤백된 모듈 상태 실시간 확인
      • Slack 알림 항목:
      • Event 시간 (Age)
      • 모듈 상태
      • 상태 메시지

Slack 연동 설계

  • 채널 권장 예시
    • #deploy-status : 전체 배포/롤백 현황
    • #deploy-error : 오류 및 실패 알림
  • 메시지 형식 예시 (JSON Payload)
{
  "text": " [배포 시작] repo-name @v1.2.3 (prod)",
  "attachments": [
    {
      "fields": [
        {"title": "Repository", "value": "repo-name", "short": true},
        {"title": "Tag", "value": "v1.2.3", "short": true},
        {"title": "Environment", "value": "prod", "short": true},
        {"title": "Ingress", "value": "https://app.example.com", "short": false}
      ]
    }
  ]
}

운영 시 고려사항

  • ArgoCD RBAC 설정: Dev/Ops 역할에 맞는 권한 분리
  • Tag Naming Convention: 예) v1.2.3-staging, v1.2.3-prod
  • Slack 알림 오류 핸들링: 실패 시 로그 저장
  • 자동 롤백 전략 (선택사항): HealthCheck 실패 시 이전 버전 자동 복구
profile
DevOps, 개발팀과 운영팀이 알아두면 좋은 정보를 공유합니다.

0개의 댓글