computer science/software
Continuous Integration/Continuous Delivery (CI/CD)
nani-jin
2024. 5. 29. 12:50
1. 소프트웨어 빌드
- 자신(혹은 팀)이 개발한 소프트웨어를 출시하기 위한 형태로 만드는 것
- 배포하기 전부터 계속 빌드를 하면, 소프트웨어의 안정성이 증대됨. 테스트는 빌드의 주요한 부분!
2. Continuos Integration (CI)
- 코드를 고칠 때마다 모든 테스트를 돌림으로써 기대하는 대로 코드가 동작함을 확인
- 기본 원칙
- 코드 repo는 하나만 유지 (master/main)
- branch를 만들어 작업한 후, master/main에 자주 머지해 싱크를 유지함
- 코드 변경을 최대한 자주 반영함
- 자주, 조금씩
- 테스트를 최대한 추가
- test coverage - 75%, 80% 이상으로 최소를 설정하고 진행
- 빌드를 계속 수행 (자동화)
- commit build vs. nightly build
- 성공한 빌드를 프로덕션으로 배포 (자동화)
- CD. Continuous Delivery
- 코드 repo는 하나만 유지 (master/main)
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에 구현하는 것이 가장 자연스러움
[출처] 데이터 엔지니어링 데브코스