xtring.dev

[CI/CD] '지속적인 통합'과 '지속적인 전달/배포'로 프로젝트 빌드를 가속화 하자 - CI/CD에 대해서 알아봅시다 🛠 본문

Infra.

[CI/CD] '지속적인 통합'과 '지속적인 전달/배포'로 프로젝트 빌드를 가속화 하자 - CI/CD에 대해서 알아봅시다 🛠

xtring 2021. 3. 20. 04:31
반응형

 

 

CI/CD

 

 

 

 

 

 

CI/CD 에 대해서 한번쯤은 들어보지 않으셨나요?

'우리 회사에서는 CI/CD로 프로젝트를 배포하고 있어 '

💁🏻‍♂️ 백엔드 개발자 박모씨

 

 

 

이런식으로 정말 한번쯤은 들어봤을 법한 CI/CD에 대해서 우리도 알아봅시다!

 

CI/CD 에 대해 자세히 알아 보니 서비스를 제공하는데 있어 꼭 필요한 기능이라는 것을 알았습니다. 나도 필요한 기능인 CI/CD 를 자세히 알아봅시다.🥸

 

 

 

 

CI/CD 일련의 과정

 

 

 

 

 

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

  지속적인 통합이란 무엇일까요? 우리가 배포하고 있는 Repository의 코드를 빌드테스트 자동화하고 병합하는 일련의 과정을 의미입니다. Git을 통해 다수의 개발자가 하나의 저장소에 작업을 하는 경우 새로운 코드의 추가, 변경을 통해 서로 충돌을 일으키고 다시 병합하는 과정을 가지게 됩니다.(매우 힘든 과정이며 시간도 많이 걸립니다. 🤣)

 

  '지속적인 통합'을 통해서 빌드와 테스트 자동화를 통해 코드의 일관성(Consistency)을 유지하고 지속으로 문제없이 통합 할 수 있습니다. 즉, 빌드 및 테스트를 자동화해주어 통합의 과정을 단축시킬 수 있습니다.

 

 

CI의 과정은

  • local에서 코드를 수정하고 Github에 Push 합니다.
  • CI 도구가 변경된 코드에 대한 빌드와 테스트를 수행하고 결과를 피드백(실패/성공)합니다.

 

 

 

 

CD(Continuous Delivery/Deploy, 지속적인 전달/배포)

 

 

 

  CI의 빌드와 테스트를 마치고 나면 정상적인 동작인 확인하고 결과물을 배포해야합니다. CD는 자동화 수준에 따라 2가지로 구별할 수 있습니다.

 

  • Continuous Delivery(지속적인 전달) : 프로덕션은 수동으로 배포한다.
  • Continuous Deployment(지속적인 배포) : 프로덕션까지 자동으로 배포한다.

 

 

1. Continuous Delivery(지속적 전달)

  CI의 빌드 자동화, 유닛 및 통합 테스트를 수행하면 유효한(업데이트된) 코드를 Repository에 자동으로 릴리즈 합니다. 그러므로 효과적인 '지속적 전달'을 실행하기 위해서는 개발 파이프라인에 CI가 먼저 구축되어 있어야 합니다. 지속적 제공의 목표는 프로덕션 환경으로 배포할 준비가 되어 있는 코드 베이스를 확보하는 것입니다.

 

  '지속적 전달'에는 코드 변경 사항의 병합부터 프로덕션 빌드, 그에 따른 모든 단계의 테스트 자동화와 릴리즈가 포함됩니다. 이 프로세스가 완료되면 운영팀은 보다 빠르고 손쉽게 애플리케이션을 프로덕션으로 배포 할 수 있게 됩니다.(Continuous Deploy하지 않으면 수동으로 배포하는 과정을 거칩니다.)

 

 

 

2. Continuous Deploy(지속적 배포)

  CI/CD 파이프라인의 마지막 단계는 '지속적 배포'입니다. 애플리케이션을 프로덕션으로 릴리즈하는 작업을 자동화합니다. 프로덕션 이전의 파이프라인 단계에는 수동 작업 과정이 없으므로, 지속적 배포가 제대로 이루어지기 위해서는 테스트 자동화의 설계가 중요합니다.

 

  실제 사례에서 '지속적 배포'란 개발자가 애플리케이션에 변경사항을 작성한 후 몇 분 이내에 애플리케이션을 자동으로 실행할 수 있는 것을 의미합니다. 즉, 모든 자동화된 테스트를 통합한 것입니다.(문제가 없다)

 

  CD의 대표적인 Tool은 AWS Code Deploy 가 있습니다.

 

 

 

 

 

  이러한 CD를 통해 사용자들에게 프로덕션을 연속적으로/지속적으로 제공합니다. 따라서 새로운 서비스를 추가하는데 속도감과 개발자에게 편안함을 더해줄 수 있죠.

 

  이러한 CI/CD의 과정은 자동화를 통해 애플리케이션을 배포하는데 안정적으로 만들어주며 위험성을 줄일 수 있습니다. 또 버전관리를 통해서 변경사항들을 쪼개서 손쉽게 릴리스 할 수 도 있죠.😁

 

  그러나 단 하나의 단점이 있습니다. 바로 시간! 이러한 CI/CD 파이프라인을 구축하기 위해서는 프로젝트를 빌드하기 전 선행투자가 필요합니다. 그래도 지속적이고 안정적인 서비스 제공을 위해서는 절대 손해는 아니라고 봅니다. 😉

 

 

 

 

 

 

 

 

 

Ref. 📗

CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정

CI(Continuous Integration), CD(Continuous Delivery / Deployment)에 대해 알아보자.

반응형
Comments