DevOps에서는 CI/CD가 중요하다.
그럼 CI/CD가 뭘까?
Continous Integration, Continous Deployment의 약자로, 애플리케이션 개발단계를 자동화하여 애플리케이션 개발을 보다 짧은 주시로 고객에게 제공하는 방법이다.
새로운 코드가 반영될 때 개발, 운영 팀에서 발생하는 문제를 해결해주는 솔루션이다.
CI/CD는 애플리케이션 통합, 테스트, 제공, 배포에 이르는 전체 라이프사이클을 지속적으로 모니터링하고 자동화하여 개발자의 수고스러움을 덜고 코드와 서비스의 안정성을 높여준다.
이러한 전체 흐름을 CI/CD 파이프라인이라고 한다.
CI
Continous Integration 지속적인 통합의 약자로 개발자를 위한 자동화 프로세스이다.
CI가 구축되나면 애플리케이션 코드 변경사항이 있을 경우 가령 깃헙같은 원격 저장소에 푸쉬하면 자동으로 변경소스를 가지고 빌드/테스트되어 오류를 잡아내고 공유 저장소에 병합되어 여러 개발자가 동시에 개발을 할 경우 생기는 충돌 문제도 해결할 수 있다.
즉, 테스트를 자동화해주고 코드 신뢰도를 높여준다.
CD
Continous Deployment 지속적인 배포, Continous Delivery 지속적인 서비스 제공의 약자로 앞선 CI에서 애플리케이션 코드 변경사항을 체크하였다면 이러한 테스트를 거친 소스를 저장소에 자동 업로드하는 것을 말하며, 운영팀은 이 저장소 소스를 기반으로 실시간 운영 환경으로 배포할 수 있다. (Continous Delivery 지속적인 서비스)
개발자의 변경사항을 저장소에서 고객이 사용가능한 운영환경까지 자동으로 릴리지하는 것을 Continous Deployment 지속적인 배포라고 한다. 자동화해주므로 수동으로 개발자가 릴리즈하던 수고스로움과 프로세스 과부하 문제를 해결한다.
Jenkins, GitOps, Travis, Bamboo
이 중 Jenkins가 무료이며 많은 부분 지원을 하여 가장 많이 쓰이는 CI/CD 툴이다.
CI/CD 파이프라인 예시 이미지를 보면 무슨 말인지 이해가 잘 될 것이다.
실제 제가 진행한 파이프라인 예시입니다.
1. 도커와 jenkins, github를 사용한 파이프라인
파이프라인 구성과정 바로가기
2. 도커, 쿠버네티스, jenkins, github를 사용한 파이프라인
파이프라인 구성과정 바로가기