1 분 소요

[TIL]

오늘 배운 것

CI/CD

CI/CD 개발 프로세스

기업에서는 하루가 다르게 바뀌어가는 시장에서 어떻게 하면 고객의 요구를 빠르게 반영해서 제품을 출시 업데이트할 것인지 고민을 하게되고 그것이 관건이다.

이를 효과적으로 하기 위해 많은 기업에서 CI/CD 환경을 채택하고 있다. 따라서 CICD가 무엇인지 알고 있어야 한다.

CI/CD란:

어플리케이션 개발 단계부터 베포까지의 모든 단계를 자동화를 통해 효율적으로 사용자에게 빈번히 업데이트 하는 것

CI는 Continous Integration (지속적인 통합) CD는 Continous Delivery/Deployment (지속적인 제공/배포)

이라고 한다.

  1. Continous Integration (지속적인 통합) 버그나 추가 기능들이 메인 repo에 주기적으로 빌드 및 테스트되는 것!
  • 코드 변경사항을 주기적으로 빈번하게 머지해야한다.
    각각 개발자가 오랜 기간 머지하지 않고 있다가, 한꺼번에 머지하게되면 개발하거나 테스트하는 시간보다
    머지 시의 충돌 수정이 더 오래걸리게 되어 비효율적이다.
    따라서 추가 기능 혹은 문제들을 작은 단위로 나누어서 main repo에 주기적으로 빈번하게 반영하여
    최대한 충돌을 피하고 그때 그때 문제를 확인할 수 있도록 하는 것이 좋다.

  • 통합을 위한 단계(빌드 테스트 머지)의 자동화 개발자가 수정사항을 main repo에 반영하면 CI 서버에서 빌드와 테스트를 자동으로 진행하고
    (충돌은 없는지 버그는 없는지, 기본 코드에 영향이 가는 사항은 없는지 등)
    초록색 사인이 나오면 무사 통화하여 베포시 반영 가능.
    레드 사인이 나오면 개발자에게 확인 메세지가 와서 수정 권고를 하게 된다.

이처럼 주기적으로 머지하면 개발의 생산성을 높일 수 있다.
또한 추가 기능 혹은 문제들이 작은 단위로 구성되어 있으므로 문제점을 빠르게 발견할 수 있고, 어디서부터 어디까지가 잘못된 버전인지 알 수 있으므로 버그 수정이 용이하다.
결국, 코드의 퀄리티 향상, 제품의 안정성을 가질 수 있게 되는 것이다.

  1. Continous Delivery/Deployment (지속적 제공/배포)
    CI에서 모든 테스트를 거쳐 넘어온 코드들을 배포까지 진행하는 것!

지속적인 제공에서는 만약 CI에서 넘어온 코드가 문제가 없다는 것이 확인이 되면 배포/release할 준비를 한다.

이후 수동(개발자나 검증팀) 혹은 자동(툴)을 통해 배포를 위한 검증을 거치게 된다.
만약 이런 배포까지 자동으로 이루어져 있다면 지속적인 배포가 되는 것이고, 아니라면 지속적인 제공이 되는 것이다.!

하지만 검증 및 배포를 수동으로 하는지 자동으로 하는지는 부서마다 회사마다 다를 것이다.

따라서 이러한 개발 단계 ~ 배포 과정을 거치는 것이 CI/CD라고 한다!

code -> build -> test > release -> deployment

툴을 사용한다.
Jenkins, BuildKite, GitHub Actions 등등…

댓글남기기