728x90
CI/CD(Continuous Integration and Continuous Deployment/Delivery)는 소프트웨어 개발 및 배포 프로세스를 자동화하여 효율성을 높이고, 개발부터 운영까지의 사이클 타임을 단축하는 데 초점을 둔 접근 방식입니다. 이를 이해하기 위해 각 단계와 예시를 살펴보겠습니다.
1. CI (Continuous Integration)
개념
CI는 개발자들이 변경한 코드를 자주, 그리고 지속적으로 중앙 저장소에 병합하여 품질을 보장하는 프로세스입니다. 각 변경 사항은 자동화된 테스트를 통해 코드의 품질을 검증합니다.
예시
- 개발자가 새 기능을 구현:
- 한 개발자가 새로운 로그인 기능을 추가하고 이를 GitHub에 푸시합니다.
- 자동화 빌드 및 테스트:
- 푸시된 코드가 CI 서버(예: Jenkins, GitLab CI/CD, GitHub Actions)에 의해 감지됩니다.
- CI 서버는 새로운 코드를 빌드하고 단위 테스트, 통합 테스트를 실행합니다.
- 문제 발견:
- 테스트 중 버그가 발견되면 빌드가 실패하고 개발자에게 알림이 전송됩니다.
- 개발자는 문제를 수정하고 다시 푸시하여 테스트를 통과합니다.
- 결과 병합:
- 모든 테스트가 통과되면 코드가 메인 브랜치에 병합됩니다.
2. CD (Continuous Delivery)
개념
CD는 CI를 확장하여 소프트웨어를 실제 배포 가능한 상태로 만드는 과정을 자동화합니다. 이 단계에서는 수동 승인 없이도 항상 배포 준비가 완료된 상태를 유지합니다.
예시
- QA 환경으로 배포:
- CI를 통해 통합된 코드가 성공적으로 빌드되면, QA(품질 보증) 환경에 자동 배포됩니다.
- 스테이징 환경에서 테스트:
- QA 팀은 스테이징 환경에서 애플리케이션을 테스트하고 성능, 보안 및 UI를 점검합니다.
- 수동 승인:
- QA가 최종 확인 후 프로덕션 환경으로 배포를 승인합니다.
3. CD (Continuous Deployment)
개념
Continuous Deployment는 Continuous Delivery의 다음 단계로, 변경 사항을 자동으로 프로덕션 환경에 배포하는 과정을 의미합니다. 여기에는 사람이 개입하지 않으며, 모든 것이 자동으로 처리됩니다.
예시
- 프로덕션 자동 배포:
- 코드를 Git에 푸시하고 CI/CD 파이프라인이 빌드, 테스트를 거쳐 프로덕션에 바로 배포합니다.
- 실시간 모니터링:
- 배포된 애플리케이션의 상태를 실시간으로 모니터링하여 문제가 발생하면 롤백 기능을 실행합니다.
CI/CD 파이프라인의 흐름
- 코드 작성 및 푸시:
개발자가 로컬에서 코드를 작성하고 Git에 푸시합니다. - 빌드 단계:
CI/CD 도구가 코드를 빌드하여 실행 가능한 상태로 만듭니다. - 테스트 단계:
단위 테스트, 통합 테스트, 회귀 테스트가 실행됩니다. - 배포 단계:
스테이징, QA 또는 프로덕션 환경으로 배포됩니다. - 모니터링 및 롤백:
배포 후 모니터링을 통해 문제를 감지하고, 필요시 이전 상태로 롤백합니다.
사용 도구 예시
- CI/CD 도구:
- Jenkins, GitHub Actions, GitLab CI/CD, CircleCI, Travis CI
- 테스트 도구:
- Selenium, JUnit, PyTest
- 배포 도구:
- Kubernetes, Docker, Ansible, Terraform
- 모니터링 도구:
- Prometheus, Grafana, New Relic
장점
- 효율성 향상: 개발, 테스트, 배포 과정이 자동화되어 시간을 절약합니다.
- 품질 보증: 변경 사항이 빠르게 테스트 및 배포되어 오류를 초기에 감지할 수 있습니다.
- 고객 만족도: 신속한 기능 배포로 사용자 피드백을 빠르게 반영할 수 있습니다.
728x90
'etc' 카테고리의 다른 글
On-premise와 SaaS? (3) | 2025.02.11 |
---|---|
Deepseek? (1) | 2025.02.03 |
MSA 서비스의 설계 및 구현과 예시 (2) | 2025.01.15 |
프롬프트 엔지니어링? (2) | 2024.12.18 |
Devops? (2) | 2024.12.11 |