IT Background

What is 'CI/CD'?(CI/CD란?)

Miiko 2022. 6. 29. 01:59

 

 

Application을 개발, 유지보수하는 과정에서 반복되는 '빌드 및 테스트' 과정과 'update된 application 배포' 과정까지를 지속적으로 수행한다는 의미를 가진 CI/CD란 정확히 어떤 의미일까요?

 

 

 

https://faun.pub/most-popular-ci-cd-pipelines-and-tools-ccfdce429867

 

CI(Continuous Integration)

CI는 지속적 통합을 의미합니다. 아마 '통합'이라는 단어에서 의미를 유추하실 수 있듯이, 하나의 프로젝트에 대하여 여러 개발자들에 의해 변경 사항들이 발생했을 때, 이들을 '빌드 및 테스트' 과정을 거쳐 공유 레퍼지토리에 통합시키는 것을 의미합니다. 위 그림에서 왼쪽에 해당하는 부분이 CI 작업에 해당합니다. (Code 수정-> Build -> Test)

 

예를 들어,

형상관리(Version Control Revision Control)툴에 공유 레퍼지토리를 두고 여러 개발자들이 함께 작업하는 경우라면, 개발자들은

각자 작업하는 부분에 대해 변경된 item들을 commit하게 될 것입니다. 이 과정에서 새로운 변경 사항들(commit들)에 대해 지속적으로 빌드 및 테스트 함으로써 모든 팀원들에게 동일한 작업 기반을 제공하여 변경 사항에 대한 충돌을 예방할 수 있습니다. 정기적인 통합없이 너무 많은 commit들이 쌓여버리면 같은 부분에 대한 수정사항들이 존재할 확률이 높아지고, 그 충돌을 해결하기 위한 작업으로 인해 시간을 더 많이 뺏기게 되겠죠😭 

 

CD(Continuous Delivery/ Continuous Deployment)

CD는 Continuous Delivery 또는 Continuous Deployment를 나타냅니다. 각각 살펴보면 Continuous Delivery는 공유 레포지토리로 자동으로 Release 하는 것, Continuous Deployment는 Production 레벨까지 자동으로 deploy 하는 것을 의미합니다. 위 그림에서 오른쪽에 해당하는 부분이 CD 작업에 해당합니다. (Release -> Deploy)

 

 

CD/CD

이제 CI/CD를 합쳐서 큰 관점에서 바라보게 되면,

개발자들에 의해 수정된 코드들을 지속적으로 빌드 및 테스트하여 통합하고, 이렇게 통합된 application을 지속적으로 공유 레퍼지토리에 release하고 product로 배포하는 전체 과정을 CI/CD라고 합니다.

 

이 과정들은 application을 개발하는 과정에서 수없이 반복됩니다. 따라서 이 과정들을 자동화하여 통합에서 배포까지 알아서 수행되도록 파이프라인을 구성하고, 각 단계를 모니터링 할 수 있도록 한다면 굉장히 많은 시간을 절약할 수 있을 것입니다. 이 작업은 DevOps 엔지니어들이 담당하고 있으며, 이들이 사용하는 대표적인 CI/CD 툴로는, Jenkins / Travis CI / Circle CI/ Bamboo 등이 있습니다. 

 

 

Jenkins
Travis CI
Circle CI
Bamboo

 

 

 

 

Refer to:

https://artist-developer.tistory.com/24

https://seosh817.tistory.com/104

'IT Background' 카테고리의 다른 글

[IT_Trend] 롤러블 디스플레이 (Rollable Display)  (0) 2021.10.19