CI / CD란?

이용구·2023년 9월 18일

애플리케이션 개발 단계를 자동화하여 보다 짧은 주기로 통합 및 배포하는 것을 의미한다.


CI (Continuous Integration) : 지속적인 통합

새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어
공유 레포지토리에 통합되는 것.

동시에 작업하여 발생할 수 있는 충돌 문제를 수시로 확인하고 해결 가능하다.

  • 버그를 빠르게 찾아 해결
  • SW 품질 개선
  • 새로운 업데이트와 출시 시간을 단축시킴


적용 예시

1. 개발자는 소스코드를 버전 관리시스템(github 등)에 저장한다.
2. 소스코드의 변동이 생기면 버전 관리 시스템에서는 CI 툴(Jenkins)로 소스코드 변경을 알린다.
3. CI 툴에서 변동된 소스코드를 대상으로 Build, Test, Merge를 진행한다.
+협업 메신저 (슬랙, 메일 등)을 통해 통합 결과를 알려준다.




CD (Continuous Delibery(&Deployment)) : 지속적인 배포

개발자의 변경 사항을 레포지토리에서 고객의 프로덕션 환경까지 자동으로 배포하는 것

CD의 장점은 실제 배포할 어플리케이션의 서버가 여러 대일 때, 작업물이 여러 개일 때 나타나다.
작업물과 서버를 배포할 때 발생하는 실수를 방지한다.


코드 변경 사항이 CI를 거처 main에 merge 되면, 자동으로 배포해 주는 과정이다.





Tool

  • Jenkins
    Java로 작성된 CI 서버의 오픈소스 구현으로, 프로젝트 빌드 주기를 자동화하는 자체 호스팅 옵션으로 사용 가능하다.
    • 여러 커뮤니티 플러그인(Slack, GitHub, Docker 등)을 사용 가능하다.



  • Gitlab CI/CD
    on-primise git을 제공하는 업체이다. Commit, Marge, Release 등의 이벤트를 감지하여 CI/CD 파이프라인이 동작하는 환경을 제공한다
    • GitLab과 손쉬운 연동 가능.
    • Runner가 Docker 컨테이너 기반이기 때문에, Docker와 친화적이다.
profile
베짱이는 개미가 밉다

0개의 댓글