728x90
지속적인 전달(Continuous Delivery, CD)은 지속적인 통합(CI)을 기반으로 하여 소프트웨어를 신속하고 안정적으로 배포할 수 있도록 하는 DevOps의 핵심 개념입니다.
1. 배경
전통적인 소프트웨어 배포는 수동 프로세스가 많고, 릴리스 준비와 승인 절차에 오랜 시간이 걸리며, 배포 후 오류가 발생할 경우 되돌리기 어려운 문제가 있었습니다. 이에 따라 배포 주기를 단축하고, 위험 없이 자주 릴리스할 수 있는 자동화된 방법이 필요해졌습니다. 이러한 요구를 충족하기 위해 등장한 개념이 **지속적인 전달(Continuous Delivery)**입니다.
2. 개념 또는 정의
**지속적인 전달(Continuous Delivery, CD)**이란,
CI 이후의 과정을 자동화하여, 언제든지 운영 환경(production)에 안정적으로 릴리스할 수 있는 상태로 소프트웨어를 유지하는 개발 및 배포 방식을 말합니다.
즉, 코드를 푸시한 이후 자동 빌드, 테스트, 배포 준비까지 모든 단계를 자동화하고, 운영 환경에 배포할지만 ‘사람이 승인’할 수 있도록 만드는 것입니다.
3. 어떤 기술인지 구체적으로 설명
지속적인 전달은 다음과 같은 주요 단계로 구성됩니다:
- CI 단계를 통해 통합된 코드는 빌드와 자동 테스트를 통과합니다.
- 배포용 아티팩트가 생성되고, 스테이징(준운영) 환경에 자동 배포됩니다.
- 통합 테스트, 성능 테스트, 보안 검사 등 추가 검증 작업이 자동으로 수행됩니다.
- 운영 환경에 배포가 필요한 시점에 **승인(Manual Gate)**을 통해 최종 배포가 수행됩니다.
이러한 과정은 모든 버전이 언제든지 배포 가능한 ‘릴리스 후보 상태’를 유지하도록 하며, 릴리스의 신뢰성, 속도, 빈도를 크게 향상시킵니다.
4. 주요 기술
| 분류 | 기술/도구 | 설명 |
| CI/CD 플랫폼 | Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps | 빌드 및 배포 파이프라인 자동화 |
| 아티팩트 저장소 | Nexus, JFrog Artifactory, GitHub Packages | 빌드 결과물 저장 및 추적 |
| 배포 자동화 | Spinnaker, Argo CD, Octopus Deploy | 테스트 및 운영 환경으로의 배포 관리 |
| 테스트 도구 | Selenium, Postman, Gatling, OWASP ZAP | 자동화된 기능, 성능, 보안 테스트 수행 |
| 승인 관리 | Slack Approvals, Jira Integrations | 운영 배포 전 수동 승인 절차 구현 가능 |
5. 활용 방법 및 전망
- 활용 방법:
- 마이크로서비스 기반의 CI/CD 파이프라인에서 서비스별 독립 배포에 사용
- 테스트 자동화와 결합하여 QA 효율성 제고
- 클라우드 네이티브 환경(GKE, EKS, AKS 등)에서 자동 롤링 배포 구현
- 전망:
- 배포 속도 경쟁이 치열해지는 가운데, 지속적인 전달은 시장 반응에 신속하게 대응할 수 있는 핵심 전략이 됨
- AI 기반 테스트 자동화 및 롤백 판단 자동화 기능이 추가되며 고도화
- GitOps 기반 배포 방식(예: Argo CD, Flux 등)과 결합되어 더욱 정교한 CD 구현 가능
6. 유사 기술과 비교
| 구분 | 지속적인 통합 (CI) | 지속적인 전달 (CD) | 지속적인 배포 (CD: Continuous Deployment) |
| 정의 | 코드 변경을 자주 통합하고 자동으로 테스트 | 통합된 코드를 자동 테스트 후 배포 가능 상태로 유지 | 테스트 통과 시 운영 환경까지 자동 배포 |
| 배포 여부 | 없음 | 수동 승인으로 운영 배포 | 운영 환경까지 자동 |
| 위험 통제 | 낮음 | 중간 | 상대적으로 높음 |
| 자동화 범위 |
빌드 및 테스트까지 | 스테이징 배포까지 | 운영 배포까지 포함 |
지속적인 전달은 지속적인 배포와 달리 운영 배포는 수동 승인을 거치므로 보안·품질 관리 요구가 높은 기업 환경에서 적합합니다.
요약 정리
- **지속적인 전달(Continuous Delivery)**는 소프트웨어를 언제든지 운영 환경에 배포할 수 있도록 만드는 자동화된 배포 준비 체계입니다.
- CI 이후의 빌드, 테스트, 아티팩트 관리, 스테이징 배포 등 모든 단계를 자동화하며, 릴리스 시점은 사람이 제어합니다.
- 배포 리스크를 줄이면서도 빠른 릴리스 주기를 가능하게 하며, 특히 DevOps와 클라우드 환경에서 매우 중요합니다.
정보기술연구모임
728x90
'IT 자료 > Software engineering' 카테고리의 다른 글
| 빌딩(Building) (0) | 2025.05.11 |
|---|---|
| UML과 SysML의 차이점 (1) | 2025.05.10 |
| 블랙박스 테스트(Black-box Testing) (1) | 2025.05.10 |
| 화이트박스 테스트(White-box Testing) (0) | 2025.05.10 |
| 지속적인 통합(Continuous Integration) (0) | 2025.05.01 |