CI/CD 란
작성일
CI/CD는 애플리케이션 개발 단계부터 배포까지의 프로세스를 자동화하는 것이다. CI, CD에 대해 알아보자.
CI(Continuous Integration)
CI란 지속적인 통합을 의미하며 간단하게 요약하면 빌드/테스트 자동화 과정
이다.
보통은 다수의 개발자가 형상관리 툴을 사용하여 코드 변경 사항이 있을 때마다 공유 리포지토리에 코드를 업데이트할 것이다. 두명의 개발자 A, B가 C라는 업무에 대해 연관된 코드 작업을 진행할 경우 서로 충돌이 발생할 수 있다. 이러한 부분을 커밋을 할 때마다 빌드와 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장하는 것이 CI의 장점이다.
CD
CD는 배포 자동화 과정
이다. CD는 지속적인 서비스 제공(Continuous Delivery)과 지속적인 배포(Continuous Deployment)의 두 가지 의미가 있다.
지속적 서비스 제공은 자동 배포 단계 전에 승인이 필요하다. 테스트 또는 스테이징 환경에서 코드 변경 사항을 검증한 후 승인을 통해 Prod 환경으로 코드를 제공하는 방식이다.
지속적 배포는 위와 같이 배포할 준비가 완료되면 자동화를 통해 배포를 진행하는 것을 의미한다.
정리하자면 Continuous Integration → Continuous Delivery → Continuous Deployment의 프로세스를 거친다.
대표적인 CI/CD 종류로는 Github Actions, Jenkins 등이 있다.
CI/CD 적용 전 후 비교
CI/CD 적용 전
- 개발자들이 코드를 작성
- 각자의 feature 브랜치에 코드를 push (이 과정에서는 에러가 발생했는지 알 수 없음)
- 각자의 코드를 git에 올리고 main 브랜치에 통합
- 에러가 발생하면 어느 부분에 에러가 있는지 디버깅하고 코드를 수정
- (1)~(4) 과정을 반복
- 에러가 해결되면 배포를 시작. 배포 과정 또한 개발자가 직접 배포하여 많은 시간이 소요됨
CI/CD 적용 후
- 개발자들이 코드를 작성
- 각자의 feature 브랜치에 코드를 push
- git push를 통해 트리거가되어 CI 서버에서 자동으로 Build, Test를 실행하고 결과를 전송
- 개발자들은 결과를 전송받고 에러가 난 부분을 수정 후 main 브랜치에 merge
- main 브랜치에 코드를 merge하고 Build, Test가 정상적으로 수행되면 CI 서버에서 자동으로 배포