CI / CD란 무엇인가?
CI / CD는 소프트웨어 개발과정에서 품질 향상과 빠른 제품 출시를 위해 사용되는 개발 방범론과 관련된 개념이다. CI / CD의 기본 개념은 기속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다. CI / CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하기 위한 솔루션이다.
특히, CI / CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공한다. 이런 구축 사례를 일반적으로 "CI / CD 파이프라인" 이라 부르며, 개발 및 운영팀의 애자일 방식 협력을 통해 DevOps 또는 SRE(사이트 신뢰성 엔지니어링) 방식으로 지원된다.
CI (Continueos Intergration - 지속적인 통합)
CI는 개발자들이 코드를 공유 Repository에 통합할 때 발생하는 문제를 최소화하기 위해 개발 주기의 초기부터 코드 통합을 지속적으로 수행하는 것을 의미한다. 주요 특징은 다음과 같다.
1. 자동화된 빌드 및 테스트: 코드가 공유 Repository에 Push되면 자동으로 빌드 및 테스트 과정이 실행된다. 이를 통해 코드 변경 사항의 문제를 조기에 발견하고 수정할 수 있다.
2. 자동화된 통합: 다수의 개발자들이 동시에 작업하더라도 코드 변경 사항을 지속적으로 통합하여 충돌을 예방한다.
3. 자동화된 피드백: 빌드 및 테스트 결과를 실시간으로 개발자들에게 피드백하여 문제를 조기에 확인하고 수정할 수 있도록 돕는다.
CD (Continueos Delivery - 지속적인 제공)
CI의 빌드 자동화, 유닛 및 통합 테스트 수행 후, 이어지는 지속적 제공 프로세스에서는 유효한 코드를 Repository에 자동으로 배포한다. 그러므로 효과적인 CD 프로세스를 실현하기 위해서는 개발 파이프라인에 CI가 먼저 구축되어 있어야 한다. 지속적 제공의 목표는 프로덕션 환경으로 배포할 준비가 되어 있는 코드베이스를 확보하는 것이다.
CD의 경우, 코드 변경 사항 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계에서는 테스트 자동화와 릴리스 자동화가 포함된다. 이 프로세스를 완료하면 운영팀이 더욱 빠르고 손쉽게 애플리케이션을 프로덕션으로 배포할 수 있게 된다.
CD (Continueos Deployment - 지속적인 배포)
CI / CD 파이프라인의 마지막 단계는 지속적 배포이다. 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 릴리스하는 지속적 제공의 확장된 형태인 지속적 배포는 애플리케이션을 프로덕션으로 릴리스하는 작업을 자동화한다. 프로덕션 이전의 파이프라인 단계에는 수동 작업 과정이 없으므로, 지속적 배포가 제대로 이루어지려면 테스트 자동화가 제대로 설계되어 있어야 한다.
실제 사례에서 지속적 배포란 개발자가 애플리케이션에 변경 사항을 작성한 후 몇 분 이내에 클라우드 애플리케이션을 자동으로 실행할 수 있는 것을 한다(자동화된 테스트를 통과한 것으로 간주). 이를 통해 사용자 피드백을 지속적으로 수신하고 통합하는 일이 훨씬 수월해진다. 이러한 모든 CI / CD 적용 사례는 애플리케이션 배포의 위험성을 줄여주므로 애플리케이션 변경 사항을 한 번에 모두 릴리스하지 않고 작은 조각으로 세분화하여 더욱 손쉽게 릴리스할 수 있다. 그러나 자동화된 테스트는 CI / CD 파이프라인의 여러 테스트 및 릴리스 단계를 수행할 수 있어야 하기 때문에 많은 선행 투자가 필요합니다.
Reference
'기타' 카테고리의 다른 글
객체 지향 프로그래밍이란?? by Kotlin (1) | 2023.09.26 |
---|---|
DAO, DTO, VO란? (0) | 2023.05.15 |
가독성이 좋은 코드를 작성해야 하는 이유 (0) | 2023.03.25 |
Dependency Injection (DI, 의존성 주입) with Kotlin (0) | 2023.03.25 |