CI (Continuous Integration), CD (Continuous Delivery)

1. 기존 개발 환경의 문제점과 CI/CD 도입 필요성

  • 전통적인 개발 환경의 코드 통합과 배포 문제들을 해결하기 위해 작게, 자주, 자동화 적용하는 개발/배포 철학인 CI (Continuous Integration)와 CD (Continuous Delivery or Continuous Deployment)가 등장

 

2. CI (Continuous Integration)의 개념 및 단계 별 활동

(1) CI의 개념 및 주요 단계

개념소프트웨어 품질 확보를 위해 코드 통합 주기 단축, 자동 빌드와 테스트로 품질을 검증하는 개발 프로세스
주요
단계

(2) CI의 주요 단계 및 활동

주요 단계활동도구 사례
① 코드 커밋
(Code Commit)
– Git 등 VCS Repository에 코드 푸시(Push)
– Pull Request, Review 후 메인 브랜치에 병합(Merge)
– GitHub
– GitLab
② 빌드 (Build)– 버그, 코드 스타일 위반, 보안 취약점 등 검사
– 소스 코드를 바이너리로 변환 등 실행 가능한 형태 생성
– Jenkins
– Gradle
테스트 (Test)– 단위 코드가 의도대로 작동하는지 검증(Unit Test)
– 전체 코드가 정상 동작하는지 검증 (Integration Test)
– JUnit
– Playwright

 

3. CD (Continuous Delivery)의 개념 및 단계 별 활동

  • CD: Continuous Delivery 또는 Continuous Deployment

(1) CD의 개념 및 주요 단계

개념사용자에 소프트웨어 신속 제공을 위해 코드 검증 및 운영 환경 배포를 자동화하는 프로세스
주요
단계

(2) CD의 주요 단계 및 활동

주요 단계활동도구 사례
④ 아티팩트 생성/저장
(Artifact Repository)
– 빌드/테스트 완료 결과물(실행 파일, Docker 이미지 등)에 버전을 추가하여 저장소에 안전하게 저장– JFrog
– Nexus Repo.
⑤ 스테이징 환경 배포
(Staging Deployment)
– 운영 환경과 거의 동일하게 구성된 환경에 배포
– 실제 데이터와 유사한 환경에서 최종 점검 진행
– Argo CD
– Jenkins
⑥ 운영 환경 배포
(Production Deployment)
– 실제 사용자가 사용하는 운영 환경에 배포
롤링, 블루/그린, 카나리 배포 등 중단 최소화
– Argo CD
– Jenkins
  • CI/CD의 기술적 도구를 기반으로 신뢰 구축과 개발/운영의 벽(Silo) 해소, 지속적 개선(Continuous Improvement) 문화 및 프로세스로 적용한 DevOps로 진화

 

3. CI/CD 파이프라인 기반 DevOps

(1) DevOps의 개요

개념수행 절차
개발과 운영의 합성어로 개발과 운영 간의 상호 작용을 원활하게 하기 위한 개발 방법론

(2) DevOps의 구성요소

구분구성요소역할
품질테스트 자동화서비스 통합/시스템 테스트
– 단위테스트(xUnit), UI 테스트
프로세스 내재화– 업무 백로그-운영을 프로세스화
– 운영 이슈 개선 위한 프로세스
프로세스소규모 릴리즈– 변화에 유연, 롤백 용이
– Cycle-time 감소, 피드백 강화
지속적 통합
(Cont. Integration)
– 개발초기-릴리즈 간 요구 반영
CMDB 코드 통합, Test, Release
도구어플리케이션
릴리즈 자동화
– 개발팀은 형상관리 기반 배치
– 운영팀은 표준화GW 사용
프로비저닝IaC 기반 코드 자동 설치, 시스템 구성
– Tool: 퍼펫(Puppet), 셰프(Chef)
  • DevOps에 인공지능 기반 분석 및 추론을 통해 IT 운영 문제 해결 및 자동화하는 AIOps로 진화

 
[참고]

  • RedHat, CI/CD(지속적 통합/지속적 배포)란, 2025.2
  • IBM, Chrystal R. China, Micheal Goowin, 지속적 통합이란 무엇인가요

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^