진수개발블로그
[CS] CI/CD 개념 본문
개요
CI/CD는 지속적 통합(Continuous Integration) 및 지속적 제공/배포(Continuous Delivery/Deployment)를 의미하며, 소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표한다.
지속적 통합(CI)은 코드 변경 사항을 공유 소스 코드 리포지토리에 자동으로 자주 통합하는 사례를 나타낸다. 지속적 제공 및/또는 배포(CD)는 코드 변경 사항의 통합, 테스트, 제공을 나타내는 프로세스로, 두 가지 부분으로 구성, 지속적 제공에는 자동 프로덕션 배포 기능이 없는 반면, 지속적 배포는 업데이트를 프로덕션 환경에 자동으로 릴리스한다.
CI : 지속적인 통합 / 빌드와 테스트 자동화
CD : 지속적인 전달,배포 / 배포자동화
이렇게 연결된 두 사례를 일반적으로 CI/CD 파이프라인이라 부른다.
CI/CD의 장점
CI/CD는 버그 및 코드 오류를 예방하는 동시에 지속적인 소프트웨어 개발 및 업데이트 주기를 유지하는 데 도움이 된다.
애플리케이션이 커질수록, CI/CD기능을 활용하면 복잡성을 줄이고 효율성을 높이며 워크플로우를 간소화 할 수 있다.
즉, "속도" 와 "효율" 적인 측면에서 강력한 이점이 있다. "Quality at Speed"가 소프트웨어 개발의 이상이라면, 현 시장과 같이 다차원으로 끈임없이 진화되고 있는 개발환경을 고려할때, 고객 요구에 신속하고 유연하게 대응할 수 있는 개발안을 구축하는 것이다.
이러한 문제에 대한 솔루션이 Agile 문화와, DevOps의 한부분으로서 CI/CD개념이 나왔다.
일반적인 CI/CD툴
CI/CD 툴은 팀이 개발, 배포, 테스트를 자동화하도록 지원한다.
1. 젠킨스(Jenkins)
현재 실무에서 사용중인 툴, 시장에서 널리 사용되는 CI/CD 도구 중 하나이며, 중앙 빌드 및 지속적인 통합 프로세스가 가능하며, Windows, macOS 및 기타 Unix 계열 운영 체제용 패키지가 포함된 독립형 Java 기반 프로그램이다. 수백개의 플러그인을 사용할 수 있는 Jenkins는 소프트웨어 개발 프로젝트의 빌드 파이프라인 구성, Build 자동화의 확립, 배포 및 테스트 자동화 등을 지원한다.
2. GitLab
현 실무에서 사용중인 툴2 , 분산버전 관리 시스템, 무결성, 브랜치생성과 머지의 자유로움 등의 장점이 있다. 주요 퍼블릭 클라우드 공급업체 중 하나
3. BamBoo(대나무)
이외에도 Spinnaker, GoCd, Concourse,Screwdriver 등의 제품이 있다.
참고
CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이 (redhat.com)
'알고리즘공부 > CS' 카테고리의 다른 글
[CS] 자바 디자인 패턴 - 싱글턴 패턴(Singleton pattern) (0) | 2024.07.06 |
---|