기반 프로젝트 : 기존 Spring Boot 백엔드 프로젝트
핵심 기술 : Docker, Jenkins, EKS, ArgoCD, GitHub Webhook
목표 : GitHub Webhook을 통한 자동화된 CI/CD 파이프라인 구성 및
ArgoCD 기반 무중단 배포 구현
기존 백엔드 프로젝트에서 DevOps 도입으로 인한 변경사항과 추가 기능을 명시
1. DevOps 도입 근거 및 목표
- GitHub Webhook을 활용하여 코드 푸시 시 자동으로 Jenkins 파이프라인 실행
- Docker 기반 컨테이너화 및 ECR 저장소 업로드를 통한 효율적인 배포
- ArgoCD 기반 GitOps 방식으로 무중단 배포 체계 구축
2. DevOps 도구 선택 및 적용 계획
- Jenkins: 유연한 파이프라인 정의 및 다양한 플러그인 생태계 활용 목적
- Docker: 마이크로서비스별 이미지 표준화
- AWS ECR: 안정적인 이미지 저장소 제공
- Kubernetes (EKS): 확장성과 고가용성을 위한 컨테이너 오케스트레이션
- ArgoCD: GitOps 방식의 선언적 배포 및 무중단 업데이트 적용
3. 배포 및 운영 전략
- Helm Chart를 기반으로 서비스별 Deployment/Service/Ingress 구성
- ArgoCD Sync를 통한 무중단 배포 및 상태 관리
- 서비스 상태 및 배포 결과는 ArgoCD UI에서 실시간 확인 가능
4. 기대 효과 및 성과 지표
- 푸시부터 배포까지의 시간 단축 (배포 자동화)
- 배포 실패 시 ArgoCD를 통한 손쉬운 롤백
- 운영 환경과 개발 환경의 상태 일치 보장 (GitOps)
REQ-F-001: GitHub Webhook 기반 자동 트리거
- 설명: GitHub의 push 이벤트 발생 시 Jenkins가 자동 빌드 수행
- 우선순위: High
- 관련 서비스: 전체 CI/CD 파이프라인
REQ-F-002: ArgoCD를 통한 무중단 배포
- 설명: Helm Chart로 작성된 Kubernetes 매니페스트를 ArgoCD가 자동 배포
- 우선순위: High
- 관련 서비스: ArgoCD, EKS, 각 마이크로서비스
REQ-NF-001: 높은 서비스 가용성
- 설명: 무중단 배포를 통한 99.9% 이상 가용성 확보
- 측정 기준: 월간 다운타임 45분 미만
- 검증 방법: 로그 및 모니터링 툴 검증
REQ-NF-002: CI/CD 자동화
- 설명: 빌드/배포 자동화로 수작업 제거
- 측정 기준: 배포 소요 시간 5분 이내
- 검증 방법: Jenkins/ArgoCD 로그 분석
Dockerfile
(서비스별 위치)helm/
디렉토리 내 Chart.yaml
, values.yaml
, templates/
(ingress, service, deployment)