CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)

애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합, 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업 시 충돌 문제 해결

CD는 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)

모두 파이프라인의 추가 단계에 대한 자동화를 뜻, 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용


CI/CD의 단계

일반적인 앱의 개발 및 유지보수 단계



지속적 통합(Continuous Integration, CI)


개발자를 위한 자동화 프로세스, Code - Build - Test 단계

  • Code - 개발자가 코드를 원격 코드 저장소 (Ex. github repository)에 push하는 단계
  • Build - 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드하는 단계
  • Test - 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는 지 확인하는 과정

버그 일찍 발견 가능, 테스트가 완료된 코드에 대해 빠른 전달 가능, 지속적인 배포 가능

모든 코드 변화를 하나의 리포지토리에서 관리하는 것 부터 시작

투명하게 문제점을 파악 가능

잦은 풀 리퀘스트(pull request)와 머지(merge)로 코드를 자주 통합

기본적인 테스트도 가능

코드를 머지하기 전, 이미 빌드 오류나 테스트 오류를 확인하여 훨씬 더 효율적인 개발 가능


지속적 배포(Continuous Delivery/Deployment, CD)


지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment) 의미, Release - Deploy - Operate 단계

  • Release - 배포 가능한 소프트웨어 패키지를 작성
  • Deploy - 프로비저닝을 실행하고 서비스를 사용자에게 노출. 실질적인 배포
    • 프로비저닝(provisioning) - 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것
  • Operate - 서비스 현황 파악, 생길 수 있는 문제 감지

코드 변경 사항 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계, 테스트 자동화 코드 배포 자동화 포함

완료하면 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 배포 가능, 운영팀이 빠르고 손쉽게 애플리케이션을 프로덕션으로 배포 가능

클라우드 기술 발전과 맞물려 지속적 통합과 지속적 배포가 빠른 속도로 진행되면서 CI/CD를 하나로 묶어서 다루는 경우가 점차 증가


CI/CD의 영역

지속적 통합, 지속적 제공, 지속적 배포라는 3가지 구축 사례 모두를 의미하기도 함

결과적으로, CI/CD는 파이프라인으로 표현되는 실제 프로세스 의미, 애플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것 의미. CI/CD 파이프라인에 구현된 자동화 수준 정도에 따라 그 의미가 달라짐

대부분 CI를 먼저 추가한 다음 클라우드 네이티브 애플리케이션 일부로 배포 및 개발 자동화를 구현

댓글남기기