Nubes et Stella

CI / CD 본문

Knowledge/Dev(Ops)

CI / CD

SeongYeong Han 2023. 10. 22. 21:01

01. CI / CD (Continuous Integration/Continuous Delivery) 란?

기업에서 소프트웨어 개발 및 배포 프로세스를 개선하고 자동화하기 위한 개념이다. 애플리케이션 개발부터 배포까지 자동화하기 때문에 배포를 빠르게 자주 할 수 있다는 장점이 있다. 

 

기존의 소프트웨어 개발 방식은 각 분야별 개발자들이 각자 자신의 담당파트를 개발 한 후 특정 기일에 Merge하는 방식이였다. 이 이러한 방식은 Merge 과정에서 이슈가 발생하면 다시 처음부터 해결해야 하는 문제가 발생한다.

 

 

아래의 그림과 같이 메인 레포지토리 하나를 두고 하루에도 여러 번 각자의 코드를 PULL을 하고, 작은 단위로 코드 쉐어링을 하기 때문에 이슈가 발생하면 빠르게 해결할 수 있다. 이렇게 개발하여 배포 후 클라이언트가 불만을 가지면 빠르게 다시 수정하고 PULL하여 빠르게 대응 할 수 있다.

 

 

 

02. CI (Continuous Integration)

CI (Continuous Integration)를 우리말로 하면 "지속적 통합" 이다. 주기적으로 코드를 개발하고 레포지토리에 자주 PUSH 하여 Merge 하는 것을 말한다. Merge된 코드는 아래의 추가 과정을 거치게 된다.

Build 자동화 

사용자가 코드를 리포지토리에 푸시할 때, 리포지토리의 빌드 프로세스가 자동으로 시작되어 소프트웨어를 컴파일하고 실행 가능한 어플리케이션으로 만들게 된다. 

Test 자동화 

Build된 어플리케이션을 자동으로 Test하여, 결과를 사용자에게 전달한다. 테스트 결과에 따라서 사용자는 문제가 되는 부분을 즉각 수정 후 위 과정을 다시 거친다. 이렇게 빠르게 대응 할 수 있는 이유는 기존의 거대한 코드를 한번에 테스트 하는것이 아닌, 작은 부분의 코드를 테스트하기 때문에 가능하다.

 

 

03. CD (Continuous Delivery)

CD는 CI의 연장선상에 있으며, 코드 변경 사항이 통합된 후, 자동으로 품질 테스트를 통과한 경우에도 실제로 배포할 준비가 되었음을 의미하며, CD는 개발된 소프트웨어를 스테이징 환경 또는 프로덕션 환경으로 배포하기 위한 프로세스를 구축하는 것을 포함한다.

 


** Continuous Deployment (CD)

Continuous Deployment는 Continuous Delivery의 한 단계 더 나아간 것으로, 코드 변경 사항이 테스트를 통과하면 자동으로 프로덕션 환경으로 배포됩니다. 소프트웨어 배포의 자동화를 강화하는 것을 의미한다. 요약하자면 Continuous Delivery는 배포 준비가 끄나면 사용자가 수동으로 배포하고, Deployment는 배포까지 자동화 하는 것을 의미한다. 

 

- END -

'Knowledge > Dev(Ops)' 카테고리의 다른 글

애자일 방법론(Agile methodology)  (0) 2023.10.12
API(Application Programming Interface)  (0) 2023.08.22
매개변수(Parameter)와 인자(Argument)  (0) 2023.08.21
웹훅(Webhook)  (0) 2023.08.19