CI / CD 개발

Chunbae·2024년 9월 22일
0

개발이론

목록 보기
1/6

여러 개발자 블로그와 강의를 보면서 CI / CD가 뭘까? 라는 생각을 들을때 마다 했던거 같다. 도대체 그게 뭐길래 그렇게 중요하다하고 필수라고 하는거지? 라는 생각에 해당 포스팅을 작성할려한다.

CI / CD 란?

한줄로 설명하자면 쉽고 빠르게 안정적인 배포를 하기위해 생겨난 것이 바로 CI / CD이다.

CI/CD란 지속적인 통합(Continuous Integration)과 지속적 제공/배포(Continuous Delivery / Continuous Deployment)를 의미한다.

CI - Continuous Integration

CI란 Continuous Integration의 약어로 지속적 통합을 뜻한다.
새롭게 생성한 기능이나 보수한 기능이 주기적으로 메인 Repo에 빌드되고 테스트 후 머지되는 것을 말한다.

주요 포인트

  • 코드 변경사항을 주기적으로 머지해야한다.
    A와 B의 개발자가 있다고 하면 서로 다른 기능을 계속해서 구현을 하다가 마무리를 하기위해 메인 레파지토리에 머지를 할려고할 때 서로다른 코드를 통합하려할때 발생하는 오류가 생긴다. 그럼 개발을 진행하는 시간보다 해당 코드를 합치고 테스트하는 과정이 더 오래걸린다는 문제점이 발생한다.
    이러한 문제를 방지하기 위해 메인 레파지토리에서 메인이 되는 프로젝트환경을 가져와 작은 단위로 기능을 구현하여 주기적으로 Merge하는 방법이 생겨났다.

  • 통합을 위한 단계(Merge, Build, Test)의 자동화
    주기적으로 Merge되는 코드가 build를 진행했을때 문제가 없는지 또 빌드되고 새롭게 추가된 코드가 기존코드와 만났을때 버그나 오류를 발생시키지 않는지 테스트를 진행한다.
    개발을 진행하면서 매일 몇번씩 커밋을 날리고 머지를 진행하는 과정을 자동화시키는파이프라인을 구현해 사용한다. 커밋을 할때마다 빌드와 일련의 자동테스트가 이루어져 동작을 확인하고 변경에 인해 생기는 문제가 없을때 그때 머지가 가능하도록 안정성을 보장하는 과정이다.
    만약 테스트에서 문제가 생겼을 경우 해당 커밋을 날린 개발자에게 따로 알림이 가 코드에 문제가 있음을 알리고 코드의 수정이 빠르게 이루어질수 있도록 한다.

CD - Continuous Delivery / Deployment

CD란 Continuous Delivery와 Deployment 두개를 사용하는 단어이다. 하나는 Delivery는 지속적 제공을 의미하고, Deployment는 지속적 배포를 의미한다.
downtime(중단시간)을 최소화하며 사용자들이 서비스에 대한 연속적 접근을 유지하며 최신버전을 이용할수 있도록하는 것을 목적으로 한다.

Delivery

CI를 통해서 빌드가 되고 테스트가 진행되었다면 배포가 준비가 완료된 상태이다.
이때 개발자 또는 검증팀이 검수를 마치고 배포를 진행하는 것이 Continuous Dlivery 지속적 제공이다.

Deployment

CI를 통해 빌드와 테스트가 자동으로 진행되고 배포 준비가 완료되었을때 자동으로 검증을 마치고 배포를 진행하는 것이 Continuous Deployment이다.

정리

CI/CD라는 개념을 충분히 숙지를 할 수 있었던 기회였던거같다.
두 개념이 따로따로가 아닌 두개가 하나의 개념으로서 개발이 이루어진다는 점이 흥미로웠다. CI라는 개념을 공부하면서 부트캠프 1차 프로젝트를 진행할때 머지를 할 때마다 오류가 발생해 손으로 직접 코드를 병합했던 기억이 난다..ㅎ 현재는 github flow 기능을 사용하여 코드 리뷰를 진행하고 CI의 기능을 일부지만 나도 모르게 수행하고 있었다는 점에놀랐고, 왜 코드리뷰의 기능이 생겼는지도 알게되었다.

현재 프로젝트는 진행이 마무되었지만 다음 프로젝트를 진행할떄는 CI/CD에 대한 스크립트와 기능을 사용해봐야겠다.


Reference

https://blog.nextinnovation.kr/tech/CI_CD/
https://www.jetbrains.com/ko-kr/teamcity/ci-cd-guide/benefits-of-ci-cd/
https://www.youtube.com/watch?v=0Emq5FypiMM

profile
말하는 감자

0개의 댓글