녕지의 개발 블로그
Published 2022. 12. 27. 10:37
CI/CD CS

CI란?

CI는 지속적 통합 (Continuous Integration)으로, 모든 개발이 끝난 이후에 코드 품질을 관리하는 고전적인 방식의 단점을 해소하기 위해 나타난 개념이다.

 

즉, 개발을 하면서 코드에 대한 통합을 지속적으로 진행함으로써 품질을 유지하자는 것이다.

 

예를 들면 10명의 개발자가 참여하는 프로젝트가 있다고 가정한다.

git에는 기본 틀이 잡혀 있는 코드가 올라와있고, 각 개발자가 자신의 로컬 환경에 clone 받아서 작업을 시작한다.

그런데 개발이 끝날 때까지 모든 개발자가 한 번도 중앙저장소에 코드를 올리지 않았고, 개발이 끝난 이후에 10명의 개발자의 개발자 코드를 한번에 통합해야 되는 상황이라면?

 

소스량이 많아져 통합과정이 복잡해지고 신뢰도가 떨어지는 상황에 대응하기 위해 지속적인 통합이 필요하다.

 

중앙 저장소에 코드만 제대로 올려놓으면 알아서 테스트와 빌드를 수행하고, 그 결과를 잘 정리해 개발자에게 자동으로 알려 주는 프로그램이 있다면 좋지 않을까? 라는 생각에서 따라오게 된 것이 CI이다.

 

그렇기 때문에 CI를 설명할 때 항상 자동화라는 키워드가 함께 따라온다.

 

CI 자동화가 잘 이루어졌을 때 단순화 뿐만 아니라 복잡한 절차가 모두 생략된다.

 

CD란?

CD란 지속적 배포(Continuous Deploy/Continuous Delivery)로써, 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 지속적으로 관리하자는 개념이다.

 

어려울 것 없이 CI의 연장선이라고 생각하면 편하다.

배포 이전에 테스트와 필수적이기 때문에, 사실상 CD가 가능하려면 CI가 선행되어야 한다고 봐도 된다.

 

즉, CI 프로세스를 통해 개발 중에 지속적으로 빌드와 테스트를 진행하고,

이를 통과한 코드에 대하여 테스트 서버와 운영 서버에 곧바로 그 내용을 배포해 반영하는 것이다.

 

이상적인 환경이라면 테스트와 빌드가 지속적으로 이루어지기 때문에, 배포 또한 자연스럽게 지속적으로 이루어지게 된다

 

CI = 빌드 및 테스트 자동화

CD = 배포 자동화

라고 기억해도 무방하다.

 


참고 자료

https://itholic.github.io/qa-cicd/

'CS' 카테고리의 다른 글

브라우저와 작동 원리  (0) 2023.01.06
GET과 POST의 차이  (0) 2023.01.04
HTTP란?  (0) 2022.12.25
인터넷의 작동 원리  (2) 2022.12.23
profile

녕지의 개발 블로그

@녕지

주니어 개발자가 쓰는 IT에서 살아남기 . . .