728x90
반응형
SMALL
학습내용
- CI/CD
- 배포 전략
- Git Actions 실습
학습정리
1. CI/CD
- CI (Continuous Integration, 지속적 통합)
- 개념
- 개발자가 코드를 변경하면, 이를 자동으로 빌드 및 테스트 후 리포지토리에 병합
- 코드 품질을 유지하면서 빠르게 개발 및 협업 가능
- 주요 기능
- 자동 빌드
- 자동 테스트
- 코드 병합
- 개념
- CD (Continuos Deployment, 지속적 배포)
- 개념
- 테스트 성공 시 자동으로 배포
- 주요 기능
- 자동 배포
- 버전 관리
- 환경별 배포
- 개념
- 주요도구
- GitHub Actions, GitLab CI/CD, Jenkins, CircleCI 등
2. 배포전략
Blue-Green 배포 전략
개념
- 두 개의 환경(Blue=현재 운영 중, Green=새 버전)을 동시에 유지
- Green(새 버전)으로 전체 트래픽 전환
- 문제가 있으면 다시 Blue(이전 버전)로 롤백
Blue-Green 배포 프로세스
- 기존 서비스 Blue(운영 중)
- 새로운 버전 Green(배포 완료, 트래픽 없음)
- 트래픽을 Blue → Green으로 변경 (즉시 배포)
- 문제가 발생하면 다시 Blue로 트래픽 전환 (빠른 롤백)
배포 예제 (Nginx 로드 밸런서)
events { } http { upstream blue { server app-blue:80; } upstream green { server app-green:80; } server { listen 80; location / { proxy_pass http://blue; # 초기에는 Blue 환경으로 설정, green으로 변경 } } }
Canary 배포전략
개념
- 새 버전을 일부 사용자(10~20%)에게만 배포
- 문제가 없으면 점진적으로 전체 배포 진행
- 장애 발생 시, Canary 버전을 롤백하여 안정적인 이전 버전 유지
Canary 배포 프로세스
- 기존 서비스(Stable)와 새로운 서비스(Canary) 공존
- 일부 트래픽만 Canary 버전으로 유도 (예: 10%)
- 문제 발생 시 Canary를 롤백, 이상 없으면 점진적으로 확장
- 최종적으로 Canary가 100% 트래픽을 처리하면 기존 버전 종료
배포 예제 (Nginx 로드 밸런서)
# 보통 8:2로 많이 사용하지만 테스트를 통해서 수치 변경 upstream stable { server stable-app:80; } upstream canary { server canary-app:80; } server { listen 80; location / { set $canary_ratio 20; if ($request_uri ~ "^/api") { set $canary_ratio 50; } random split_clients $canary_ratio%: $canary { 0%: stable; *: canary; } proxy_pass http://$canary; } }
3. Git Actions
개념
- GitHub에서 제공하는 CI/CD(Continuous Integration/Continuous Deployment) 자동화 도구
- 코드 변경시 자동화 된 빌드,테스트,배포 가능
- YAML 기반 설정 파일 사용
주요 개념
- Workflow: 자동화 작업의 전체 프로세스
- Job: 워크플로우 내에서 실행되는 단위 작업
- Step: Job 내에서 실행되는 개별 명령
- Runner: Workflow를 실행하는 환경 (GitHub 제공 또는 자체 호스팅 가능)
YAML 파일 구조
# 사용방법 #github repository에서 .github/workflows/ 디렉토리 안에 해당 yaml 저장하여 설정 name: CI Pipeline # 이벤트를 정의하는 부분 on: push: branches: - main pull_request: branches: - main # 여러 개의 작업 단위 실행 가능 jobs: build: runs-on: ubuntu-latest # 개별 명령어 실행 steps: - name: Checkout repository uses: actions/checkout@v3 # GitHub Marketplace에서 제공하는 액션 활용 - name: Run a simple command run: echo "Hello, GitHub Actions!"
ps. 이번 시간엔 CI/CD에 대해 학습하였는데 전체적인 흐름은 알게 되었는데
자세한 사용방법이나 다양한 설정에 대해서 추후 다시 깊게 공부 해야 할 것 같다.
728x90
반응형
LIST
'TIL' 카테고리의 다른 글
9_2.Docker 이미지 생성 및 docker hub 실습 (1) | 2025.02.18 |
---|---|
9_1.클라우드 및 Docker 개념 학습 (0) | 2025.02.17 |
8_4.MSA 운영 및 모니터링 구축 실습 (0) | 2025.02.14 |
8_3.MSA 데이터 설계 전략 실습 (0) | 2025.02.14 |
8_2.MSA DDD 설계 및 구현 실습 (0) | 2025.02.11 |