read

DevOps의 Delivery Pipline를 구축하기 위해 필요한 CI/CD의 개념에 대해 소개하려고 합니다.

DevOps의 중요한 역할 중 하나는 개발에서 운영까지 문제없이 배포가 되도록 파이프라인을 구성하고 관리 및 모니터링해야합니다. 개발팀 내에서는 소스코드가 Git으로 관리되며, DevOps 팀에서는 여러 사람의 작은 단위의 코드 작업도 빈번하게 반영이 될 수 있도록 코드의 통합부터 배포까지의 프로세스를 자동화합니다.

CI/CD 란?

CI/CD는 빌드, 테스트, 배포를 자동화하여 개발팀과 운영팀 간의 격차를 해소합니다. CI는 코드 관점에서의 통합을 의미하고, CD는 실제 서비스 환경에 적용을 의미합니다.

CD의 경우에는 지속적 제공과 지속적 배포로 구분하거나 혹은 통합하여 사용됩니다.

  1. 지속적 통합(Continuous integration, CI): 소프트웨어 품질을 높이기 위해 지속적으로 코드의 변경 사항을 통합하여 빌드 및 테스트를 진행
  2. 지속적 제공(Continuous delivery, CD): 팀이 짧은 주기로 소프트웨어를 릴리즈
  3. 지속적 배포(Continuous delivery, CD): 팀이 짧은 주기로 소프트웨어를 운영 환경에 적용

출처: Wikipedia1

CI (Continuous Integration)

CI의 Integration은 일반적으로는 Git으로 관리하는 소스코드를 통합한다는 의미로 사용됩니다. 여러 개발자들이 작업한 내용들을 통합해서 문제없이 빌드되는 절차를 의미합니다.

여러 사람들이 동시에 작업하기 떄문에 코드 충돌, 버그, 오류 등이 발생할 수 있고, 배포 담당자가 매번 통합 후 빌드를 할 수 없기 떄문에 이를 피하기위해서 자동화가 필요합니다. 코드를 컴파일 외에도 테스트, 정적 분석 등의 추가적인 절차를 추가하여 코드 품질을 유지하기도 합니다.

CI 툴은 GitHub, gitlab 등에서 자체적으로 제공하는 서비스와 Jenkins와 같이 별도의 빌드 서버를 구축하는 방법 등이 있습니다.

출처: RedHat2

CD (Continuous devlivery)

CI 프로세스를 거쳐 통합된 코드를 리포지토리에 릴리즈합니다. DevOps팀 혹은 운영팀은 해당 리포지토리에 릴리즈된 코드를 기준으로 실제 운영 환경에 배포 전 테스트를 진행합니다.

CD (Continuous Deployment)

테스트 및 빌드가 끝난 패키지를 개발/운영 환경에 반영하는 과정을 자동화하고, 더 짧은 주기로 서비스를 배포하여 배포마다 발생하는 비용, 시간, 위험을 줄일 수 있습니다.

Colcusion

기존에 수동으로 배포하던 프로세스을 벗어나 더 짧은 주기로 자주 배포하기 위한 CI/CD에 대해서 정리하였습니다. CI/CD 파이프라인을 구축하면 개발에서 운영의 배포시에 수동으로 작업하던 많은 작업 및 테스트를 자동화할 수 있습니다.

  1. Wikipedia, https://en.wikipedia.org/wiki/CI/CD 

  2. Redhat, https://www.redhat.com/ko/topics/devops/what-is-ci-cd 

Blog Logo

Taekyung Han


Published

Image

SHEPHEXD

CAN MACHINES THINK LIKE HUMANS?

Back to Overview