728x90

지속적인 전달(Continuous Delivery, CD)은 지속적인 통합(CI)을 기반으로 하여 소프트웨어를 신속하고 안정적으로 배포할 수 있도록 하는 DevOps의 핵심 개념입니다. 


1. 배경

전통적인 소프트웨어 배포는 수동 프로세스가 많고, 릴리스 준비와 승인 절차에 오랜 시간이 걸리며, 배포 후 오류가 발생할 경우 되돌리기 어려운 문제가 있었습니다. 이에 따라 배포 주기를 단축하고, 위험 없이 자주 릴리스할 수 있는 자동화된 방법이 필요해졌습니다. 이러한 요구를 충족하기 위해 등장한 개념이 **지속적인 전달(Continuous Delivery)**입니다.


2. 개념 또는 정의

**지속적인 전달(Continuous Delivery, CD)**이란,
CI 이후의 과정을 자동화하여, 언제든지 운영 환경(production)에 안정적으로 릴리스할 수 있는 상태로 소프트웨어를 유지하는 개발 및 배포 방식을 말합니다.

즉, 코드를 푸시한 이후 자동 빌드, 테스트, 배포 준비까지 모든 단계를 자동화하고, 운영 환경에 배포할지만 ‘사람이 승인’할 수 있도록 만드는 것입니다.


3. 어떤 기술인지 구체적으로 설명

지속적인 전달은 다음과 같은 주요 단계로 구성됩니다:

  1. CI 단계를 통해 통합된 코드는 빌드와 자동 테스트를 통과합니다.
  2. 배포용 아티팩트가 생성되고, 스테이징(준운영) 환경에 자동 배포됩니다.
  3. 통합 테스트, 성능 테스트, 보안 검사 등 추가 검증 작업이 자동으로 수행됩니다.
  4. 운영 환경에 배포가 필요한 시점에 **승인(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와 클라우드 환경에서 매우 중요합니다.

 

 

정보기술연구모임

https://cafe.naver.com/itpewiki    

728x90

+ Recent posts