도라에몽주머니

[CI/CD] CI/CD 란 무엇일까? 본문

Study

[CI/CD] CI/CD 란 무엇일까?

에몽쓰 2024. 5. 29. 10:47

GitHub Actions에 대해 공부하던 중, CI/CD 라는 용어가 자주 나오는 것을 보고 용어를 한번 정리해야겠다는 생각이 들어 글을 작성하게 되었다.

 

 

CI/CD 란?

: 애플리케이션 개발부터 배포까지 모든 단계를 자동화함으로써 좀 더 효율적이고 빠르게 (사용자들에게 빈번하게) 배포할 수 있는 것 을 의미

 

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

: 코드의 변경 사항을 공유 소스 리포지토리에 자동으로 자주 통합(merge) 하는 것

 

CI은 왜 하는걸까?

  • 코드 병합(Code Merge) 에 시간을 덜 쓰기 위해서
    • CI (지속적인 통합) 를 빈번하게 하지 않으면 개발자 각자가 오랜시간동안 개발을 진행하고 merge 하게 된다. 그렇게 되면 충돌되는 코드가 더 많이 생길 수 있으며, 새로운 기능의 코드를 작성하는 시간 보다는 코드를 병합(merge) 하는 시간이 더 오래 걸릴 수 있다. 병합의 날(Merge Day) 을 정해 분기별 소스코드를 하루종일 병합하는 경우도 있다고 한다...
    • 따라서, 가능한 작은 단위로 나누어 주기적으로 개발 및 통합을 해나가는 것이 중요하다.
  • 개발자별로 각각 커스터마이징 된 IDE를 통합하게 될 때의 충돌을 줄이기 위해서
    • 팀이 하나의 IDE 사용에 동의하지 않고, 각자 로컬 IDE를 커스터마이징 하는 경우, CI를 하지 않는다면 애플리케이션을 병합할 때 상호 충돌할 가능성이 있다. 이러한 가능성을 줄이기 위해, CI를 통해 자동으로 애플리케이션을 빌드하고 테스트를 실행해야한다.
    • 따라서, CI를 통해 충돌을 보다 빠르게 발견하고 자주 수정할 수 있도록 하는 것이 중요하다.

 

CD (Continuous Delivery, Continuous Deployment) ; 지속적인 제공, 지속적인 배포

Continuous Delivery ; 지속적인 제공

: CI를 통해 검증된 코드를 리포지토리로 릴리즈 하는 것을 자동화하는 것

Continuous Deployment ; 지속적인 배포

: 지속적인 제공(Continuous Delivery) 의 확장으로, 변경 사항을 리포지토리에서 프로덕션으로 릴리즈 하는 것을 자동화하는 것

 

CD의 장점

  • 코드를 배포하는 데 필요한 노력을 최소화 할 수 있다. (개발의 효율성을 높일 수 있다.)
  • 개발팀과 비즈니스 팀 간의 가시성과 커뮤니케이션 부족 문제를 해소할 수 있다.
  • 수동 프로세스를 하게 되면 운영팀은 프로세스 과부화 문제가 발생할 수 있는데, 이러한 프로세스 과부화 문제를 CD를 통해 해결할 수 있다.