computer science/software

Continuous Integration/Continuous Delivery (CI/CD)

nani-jin 2024. 5. 29. 12:50

 

1. 소프트웨어 빌드

  • 자신(혹은 팀)이 개발한 소프트웨어를 출시하기 위한 형태로 만드는 것
  • 배포하기 전부터 계속 빌드를 하면,  소프트웨어의 안정성이 증대됨. 테스트는 빌드의 주요한 부분!

 

 

2. Continuos Integration (CI)

  • 코드를 고칠 때마다 모든 테스트를 돌림으로써 기대하는 대로 코드가 동작함을 확인
  • 기본 원칙
    1. 코드 repo는 하나만 유지 (master/main)
      • branch를 만들어 작업한 후, master/main에 자주 머지해 싱크를 유지함
    2. 코드 변경을 최대한 자주 반영함
      • 자주, 조금씩
    3. 테스트를 최대한 추가
      • test coverage - 75%, 80% 이상으로 최소를 설정하고 진행
    4. 빌드를 계속 수행 (자동화)
      • commit build vs. nightly build
    5. 성공한 빌드를 프로덕션으로 배포 (자동화)
      • CD. Continuous Delivery

 

 

3. Continuous Delivery (CD)

  • 많은 회사들이 빌드 실패시, 빌드가 다시 성공할 때까지 코드 변경을 금지함
    • 빌드 실패 = 모든 사람들을 잡아두는 족쇄
  • 최근 점점 더 docker image로 만드는 것이 트렌드
  • 이것이 가능하려면.... 성숙한 엔지니어링 팀이어야 하며, 이 과정을 책임지는 DevOps 팀이 있어야함

 

 

4. Github Actions - Workflow

  • push/merge 시점이 CI/CD를 실행하기 위한 절호의 순간!
    • 코드가 master/main나 branch에 추가되는 순간, CI/CD를 트리거함
    • 이때 테스트를 수행하고 최종적으로 Docker Image를 만드는 것이 가능
    • 따라서 CI/CD는 Github에 구현하는 것이 가장 자연스러움

 

 

 

 

 

[출처] 데이터 엔지니어링 데브코스