CI/CD

CI/CD란?

… CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포입니다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(일명 "통합 지옥(integration hell)")를 해결하기 위한 솔루션입니다.

특히, CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다. 이러한 구축 사례를 일반적으로 “CI/CD 파이프라인”이라 부르며, 개발 및 운영팀의 애자일 방식 협력을 통해 DevOps 또는 SRE(사이트 신뢰성 엔지니어링) 방식으로 지원됩니다.

출처 : Redhat

위의 Redhat의 정의를 쉽게 풀어서 설명해보면 다음과 같이 설명할 수 있을 것 같다.

CI/CD는 애플리케이션 개발 단계를 자동화하여 더욱 짧은 주기로 고객에게 제공하는 방법.

Continuous Integration

더 자세히 들어가보자. CI는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다.

CI가 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 레포지토리에 병합된다.

따라서 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제를 이 방법으로 해결한다.

  1. 개발자가 구현한 코드를 기존 코드와 병합한다.

  2. 병합된 코드가 올바르게 동작하고 빌드되는지 검증

  3. 테스트 결과 문제가 있다면 수정하고 다시 1로 돌아간다. 문제가 없다면 배포한다.

Continuous Delivery

CD는 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deploy)를 의미하며 이 두 용어는 상호 교환하여 사용된다.

두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻한다.

때로는 얼마나 많은 자동화가 이루어지고 있는 지를 설명하기 위해 별도로 사용되기도 한다.

지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 레포지토리에 자동으로 업로드 되는 것을 뜻하며, 운영팀 (아마도 Devops)은 이 레포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다.

이렇게 되면 개발팀과 비즈니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결할 수 있다.

그러므로 지속적인 서비스 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.

Continuous Deploy

지속적인 배포(또 다른 의미의 CD)란 개발자의 변경 사항을 레포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스 하는 것을 의미한다.

이는 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결한다.

지속적인 배포는 파이프라인의 다음 단계를 자동화함으로써 Continuous Delivery의 장점을 활용한다.

결과적으로 CI/CD는 파이프라인으로 표현되는 프로세스를 의미하고, 애플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미한다.

CI/CD 파이프라인이 중요한 이유

CI와 CD는 모두 최신 DevOps에 필수적이며 Agile 방법론 지원에 도움이 돤다.

이와 같은 효과적인 CI/CD 파이프라인에는 다음과 같은 장점이 있다.

명확한 프로세스

체계적인 CI/CD 접근 방식은 파이프라인의 각 단계를 명확하게 배치하여 정확히 어떤 작업이 이루어져야 하는지에 대한 상세한 개요를 제공함으로써 구상부터 완료까지 프로젝트의 길잡이가 된다.

높은 품질의 코드

작고 점진적인 변화는 품질과 효과를 보다 쉽게 검토할 수 있다.

마찬가지로, 코드 내에 문제가 발생하면 훨씬 더 명백하게 드러나므로 프로세스 초기에 해결할 수 있다.

따라서 프로젝트 전체에 걸쳐 코드의 품질이 높아진다.

쉬운 액세스

변화가 중앙 리포지토리에 자동으로 저장되므로, 이해 관계자, QA, 기타 권한을 가진 팀과 개인이 최신 버전을 포함한 모든 버전의 제품에 직접 액세스할 수 있다.

신뢰할 수 있는 버전 관리

코드에 관련한 문제를 쉽게 해결할 수 없는 경우에는 이전 버전으로 롤백해야 할 수 있다.

효과적인 버전 관리 관행을 통해 번거로움을 최소화하여 롤백할 수 있다.

빠른 피드백

사용자와 테스트 담당자는 CI/CD 파이프라인을 통해 거의 즉각적인 피드백을 제공하여 개발 팀도 그만큼 즉각적으로 피드백에 대한 조치를 취할 수 있다.

짧은 테스트 주기

기존의 개발에서는 제품 전체에 해당하는 코드를 반복해서 테스트해야 하므로 테스트 사이클이 길고 복잡했다.

CI/CD 파이프라인에서는 코드의 양이 계속해서 감소하고 있어 이러한 문제가 더 이상 발생하지 않는다.

개발 민첩성 향상

개발 팀은 CI/CD 파이프라인을 통해 조직의 요구 사항에 즉각적으로 대응하고 필요한 경우 진행 중인 프로젝트에 대한 조치를 취할 수 있다.

개발 응답성이 향상됨에 따라, 기업은 필요한 시점에 정확히 강력하고 전문적인 소프트웨어 솔루션의 이점을 얻을 수 있다.

Last updated