[용어소개] CI/CD (Continuous Integration and Continuous Delivery)

  • cloudnativelab
    (클라우드네이티브랩)
  • cloudnativelab's Avatar 이 글의 작성자
  • Offline
  • Newbie
  • Newbie
더보기
02 Jul 2020 08:12 - 28 Jan 2022 23:53 #5096 작성자: cloudnativelab
cloudnativelab 님의 글: [용어소개] CI/CD (Continuous Integration and Continuous Delivery)
CI/CD (Continuous Integration and Continuous Delivery)

최진식 (LG CNS 클라우드운영혁신팀장 / 자바 고양이 Tomcat 이야기, Amazon Web Services 이야기 저자)



하루가 다르게 세상이 달라지는 요즘 각 기업들의 비즈니스도 그에 맞추어 빠르게 변화합니다. 인터넷 기업들의 경우 하루에 많게는 1000번의 배포를 수행한다고 합니다. 그런데 이렇게 많은 배포를 매번 손으로 수행한다면 어떻게 될까요? 한차례의 배포도 여러 과정을 거쳐야 하기 때문에 하루 1000번의 배포라는 것은 상상할 수 없을 것입니다. 그래서 CI/CD는 필수 요소입니다.

CI(Continuous Integration)는 지속적 통합이라는 의미로 코드를 변경한 후 Push하면 자동으로 빌드와 테스트가 수행되어 공유 레포지토리에 통합되는 것입니다. 한편 CD(Continuous Delivery 혹은 Deployment)는 지속적 배포라는 의미인데 테스트가 완료된 코드가 운영 환경에 배포되는 것입니다.

식당에서 고객에게 음식을 제공하기 위해서는 ① 재료를 넣고 ② 조리를 하고 ③ 간을 본 후에 ④ 접시에 담아 ⑤ 손님에게 제공하는 단계를 거칩니다. 하지만 이러한 단계들이 CI/CD 파이프라인으로 구성되어 있다면 단지 재료를 넣는 것만으로 완성된 음식이 손님에게 배달됩니다. 여기서 재료를 넣는 것이 Push, 조리를 하고 간을 보는 것이 빌드와 테스트, 손님에게 제공되는 것을 배포라고 볼 수 있습니다.

이렇게 CI/CD를 도입하게 되면 손으로 직접 수행하던 반복작업들이 사라지기 때문에 시간과 노력을 절감할 수 있습니다. 또한 통합/빌드/테스트/배포 과정이 자동화되어 휴먼에러도 방지할 수 있습니다. 한편 응용 코드뿐 아니라 인프라 자원을 관리하기 위한 코드(Terraform 등)도 CI/CD 파이프라인을 통해 배포됩니다.

CI/CD의 오픈소스 툴로는 GitLab, Jenkins, Spinnaker 등이 있습니다. CSP사에서는 AWS의 Code Pipeline, GCP의 Cloud Build, Azure의 DevOps Service 등의 서비스를 제공합니다.


[무단전재 및 재배포 금지]
Time to create page: 0.050 seconds
Powered by Kunena Forum