DX Data School

CI/CD

Kim J 2024. 4. 5. 10:10

1. CI/CD

1) 개요

  • CI/CD의 개념은 Continuous Integration (지속적인 통합), Continuous Delivery (지속적인 제공), Continuous Deployment (지속적인 패포)
  • 애플리케이션 개발 단계를 자동화해서 애플리케이션을 보다 짧은 주기로 고객에게 전달하기 위한 방법
  • 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하는 방법이다
  • 지속적인 통합이 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 레포지토리에 병합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제 해결

 

2) 지속적인 통합 (Continuous Integration)

  • 개발팀이 작은 변경 사항을 구현하고 코드를 버전 제어 레포지토리에 자주 체크인하도록 하는 코딩 철학이자 일련의 관행
    • Coding -> Code Review 후 Merge -> Build -> Test -> Report => Release

 

3) 지속적인 제공 (Continuous Delivery)

  • 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 레포지토리에 자동으로 업로드 되는 것

 

4) 지속적인 배포 (Continuous Deployment)

  • 레포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스 하는 것

 

5) CI/CD

  • 코드의 변경 사항이 생겼을 때 레포지토리에 코드를 PUSH 만 하면 테스트와 빌드를 자동을 수행하여 배포하는 것
    • 개발자가 git push를 하면 git hub의 action(webhook)이 Jenkins와 같은 빌드 도구에 빌드를 요청하고 빌드가 끝나면 docker 이미지를 만들어 docker hub와 이미지 레포지토리에 업로드 하고 이미지를 다운받아 kubenetes와 같은 오케스트레이션 도구와 HELM 같은 배포 도구를 이용해 운영 환경에 자동으로 배포

 

  • 기술 요소
    • Docker
    • Kubenetes
    • Jenkins 등 빌드 도구
    • Prometheus & Grafana 등 모니터링 도구

 

6) 지속적 인도

  • 전통적인 방식
    • 고객의 요청을 정의하는 것으로 시작해 제품을 릴리스 함으로써 종료
      • 고객 요청 > 개발 (분석, 계획, 구현, 단위 테스트, 시연) > 품질 보증 (통합 테스트, 인수 테스트, 비기능 분석) > 운영 (릴리스, 모니터링)
    • 인도 기간이 길고 피드백 주기도 느리고 자동화가 미비하며 의사소통 부족 등의 문제가 발생함

 

7) 자동 배포 파이프라인

  • 코드 레포지토리에 변경이 발생할 때 마다 실행되는 일련의 스크립트로 프로세스가 성공하면 프로덕션 환경으로 배포가 되는 것 - 대표 서비스 git hub action
  • 과정
    • 지속적 통합
      • 여러 개발자가 작성한 코드가 통합 되었는지 확인
    • 자동 인수 테스트
      • 인수 테스트 (자동)
        • 비즈니스 관점에서 기능적 요구 사항을 검증하는 테스트로 고객이 요구한 기능이 전부 구현되었는지 확인
      • 단위 테스트 (자동)
        • 버그를 최소화하고 소프트웨어의 품질을 향상하도록 개바자를 지원하는 테스트
      • 탐색적 테스트 (수동)
        • 수동으로 하는 블랙박스 테스트로 경험을 바탕으로 시스템의 문제를 찾아내거나 개선하는 테스트
      • 비기능 테스트 (자동)
        • 성능, 확장성, 보안 등 과 관련된 시스템 속성을 검증
      • 통합 테스트
    • 구성 관리
      • 수동 운영 단계를 대체하는 환경을 구성
      • 최근에는 이 작업을 코드로 작성하도록 권장하며 모니터링 또한 필수

 

'DX Data School' 카테고리의 다른 글

Docker  (0) 2024.04.05
Container 와 Virtualization  (0) 2024.04.05
MSA 구성 요소 및 MSA 패턴  (1) 2024.04.01
리액티브 선언  (0) 2024.04.01
Micro Service를 구현하기 위한 조건  (0) 2024.04.01