DOing
CI/CD가 뭔데? 본문
항상 듣기만 했던 CI/CD에 대해서 이번에 공부를 해보려고 한다.
하나의 프로젝트를 끝까지 완료해보는 것도 좋은 경험이라는 말에 혹해서 공부해보기로 결심했다.
솔직히 말하면 프론트엔드 분들이 요청사항 추가할때마다 맨날 EC2들어가서 다시 배포하는게 너무 귀찮았다..
CI (Continuous Integration)
지속적 통합이란, 지속적으로 품질관리를 적용하는 프로세스를 실행하는 것이다. 고전적인 개발 프로세스는 개발을 완완료한 뒤에 품질 관리를 적용하는 방식이였다. 하지만 CI는 작은 작업단위의 작업에 품질 관리를 빈번하게 적용한다. 즉, 작은 기능들이 개발될 때마다 바로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합한다. 하루에도 여러번씩 병합될 수 있다.
CI의 장점은 오류를 빠르게 감지할 수 있으며 배포에 걸리는 시간을 줄여준다. 여러 개발자들이 함께 작업을 하는 환경에서 개발을 완료한 뒤에 품질 관리를 적용하고 통합을 하게 되면, 각 개발자들의 저장소와 베이스 코드와 너무 달라져 통합하는 것에 시간이 오래걸리게 될 수 있다. 이러한 경우를 '통합지옥'이라고도 부르는데 작업하는 시간보다 작업 내용을 통합하는데 걸리는 시간이 더 걸리게 될 수 있다. CI는 초기에 그리고 자주 통합하여 통합에 걸리는 시간을 단축해준다.
CD (Continuous delivery)
CI가 새로운 소스코드의 빌드, 테스트, 병합까지를 의미하였다면 CD는 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것을 의미한다. 소프트웨어를 더 빠르게, 더 주기적으로 빌드하고 테스트하고 출시하는 것을 목표로 한다. 이러한 방식은 변경사항의 배포에 대한 비용, 시간, 위험을 줄이며 소프트웨어가 언제든지 신뢰 가능한 수준으로 출시될 수 있도록 보증한다.
이러한 CI/CD를 자동화시켜주는 도구들이 있는데 대표적으로 jenkins, TravisCI, Github Action이 있다.
젠킨스가 가장 고전적이고 커스텀이 편하고, TravisCI는 입문하기 쉬우며, Github Action은 최근 가장 뜨고 있다. 다음 포스팅에서는 젠킨스를 직접 적용해보겠다.
'WEB' 카테고리의 다른 글
[WEB] HTTP 인증방식2_토큰기반 인증, JWT (1) | 2021.06.12 |
---|---|
[WEB] HTTP 인증방식1_세션/쿠키 (0) | 2021.06.11 |
빌드 도구, Gradle vs Maven (0) | 2021.05.08 |
[WEB] JAR vs WAR 그리고 스프링 부트 (0) | 2021.04.19 |
[WEB] Dyanmic IP와 DHCP (0) | 2021.04.14 |