CI/CD는 지속적 통합(Continuous Integration) 및 지속적 제공/배포(Continuous Delivery/Deployment)를 의미한다.
지속적 통합(CI)은 코드 변경 사항을 공유 소스 코드 리포지토리에 자동으로 자주 통합하는 사례를 나타내고, 지속적 제공 및/또는 배포(CD)는 코드 변경 사항의 통합, 테스트, 제공을 나타내는 프로세스로, 두 가지 부분으로 구성된다.
CI/CD는 소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 한다.
CI (Continuous Integratino)
CI/CD에서 “CI”란 Continuous Integration 즉, 지속적인 통합이라는 의미이다.
지속적 통합은 코드 변경 사항을 정기적으로 중앙 코드 저장소에 병합하고, 병합된 코드 변경 사항의 신뢰성을 보장하기 위해 자동화된 테스트를 수행하는 개발자용 자동화 프로세스입니다. 이는 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 저장소에 통합되도록 합니다. 가능하다면 하루에 여러 번까지 이루어집니다.
CI가 필요한 환경
- 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경
: 한 공유 레포지토리에 수많은 commit 들이 쌓이게 되고, 그럴 때마다 빌드, 테스트, 병합까지 하려면 상당히 번거로움. - MSA(Micro Service Arichtecture) 환경
: MSA 환경헤서는 대부분 Agile(소규모 기능 단위로 빠르게 개발&적용을 반복하는 개발방법론) 방법론이 적용되기 때문에, 기능 추가가 매우 빈번히 발생함.
이러한 환경에서 CI를 통해 변경사항이 자동으로 빌드/테스트/통합되어 개발 생산성을 높이고 충돌을 방어할 수 있음.
CI의 핵심 목표
성공적인 CI의 핵심 목표는 개발자가 적용한 변경 사항들이 애플리케이션을 손상시키지 않도록 보장하는 것이다. 이를 위해 CI는 자동화된 빌드 및 다양한 수준의 자동화된 테스트(단위 테스트와 통합 테스트)를 수행하여 변경 사항을 검증한다. 자동화된 테스트를 통해 새 코드와 기존 코드 간 충돌을 빠르게 발견하고, 버그를 자주 수정할 수 있습니다.
CD (Continuous Delivery & Continuous Deployment)
"CD"는 Continuous Delivery(지속적 제공) 및/또는 Continuous Deployment(지속적 배포)를 의미하며 이 두 용어는 상호 교환하여 사용된다.
Continuous Delivery(지속적 제공)
지속적 제공은 CI에서 빌드와 단위 및 통합 테스트를 자동화한 다음, 검증된 코드를 리포지토리로 릴리스하는 것을 자동화한다. 개발자의 애플리케이션 변경 사항이 자동으로 버그 테스트를 거치고 리포지토리(예: GitHub, 컨테이너 레지스트리)로 업로드된다는 것을 의미한다.
Continuous Deployment(지속적 배포)
지속적 배포는 지속적 제공의 확장으로, 개발자의 변경 사항을 리포지토리에서 프로덕션으로 릴리스하는 것을 자동화하여 고객이 사용할 수 있도록 하는 것을 말한다. 이를 통해 운영 팀의 수동 업무를 줄일 수 있고, 사용자 피드백을 지속적으로 수신하고 통합하는 일이 수월해진다. 그러나 이를 위해서는 잘 설계된 테스트 자동화가 필수적이며, CI/CD 파이프라인에서 다양한 테스트 및 릴리스 단계를 자동화해야 한다.
CD의 핵심 목표
CD의 핵심 목표는 개발자가 애플리케이션의 변경 사항을 빠르게, 안정적으로 프로덕션 환경에 배포할 수 있는 자동화된 프로세스를 구축하는 것이다. 이를 통해 애플리케이션 배포의 오류 가능성을 줄이고, 사용자 경험을 개선하며, 시장 반응 속도를 높이는 것이 목표이다.
CI/CD Tool
CI/CD 툴은 팀이 개발, 배포, 테스트를 자동화하도록 지원한다. 특히 통합(CI) 측면을 다루는 툴도 있고, 개발 및 배포(CD)를 관리하는 툴도 있으며, 지속적인 테스트 또는 관련 기능에 특화된 툴도 있다.
- Jenkins
- CircleCi
- TeamCity
- Bamboo
- GitLab
Reference
CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이
CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포까지 애플리케이션 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하는 것을 뜻합니다.
www.redhat.com
CI/CD란 무엇인가 (Feat. DevOps 엔지니어)
안녕하세요. 개발자의 용어를 쉽고 명확하게 설명해드리는 개발자 김모씨입니다. CI/CD ?! 개발자로 밥먹고 사시는 분들이시라면, 혹은 IT서비스 업계에 종사하시는 분들이라면, 한 번 쯤은 들어
artist-developer.tistory.com
CI/CD 기본개념과 가장 많이 쓰이는 도구 5가지 | 하늘네트
CI/CD란? CI = 지속적인 통합(Continuous Integration); 한마디로 “빌드와 테스트 자동화” CD = 지속적인 전달(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment); 한마디로 “배포 자동화” 덧붙이
www.hanl.tech
'Study > DevOps' 카테고리의 다른 글
[Docker_CI/CD_스터디] 3. GitLab으로 AWS Cloud로의 지속적인 배포 (0) | 2025.02.04 |
---|---|
[Docker_CI/CD_스터디] 2. GitLab 세팅 & Docker Image 빌드 및 푸시 (0) | 2025.01.31 |
[Docker_CI/CD_스터디] 1. AWS EC2 인스턴스 생성 및 Docker 설치 (0) | 2025.01.26 |
댓글