우노
[DevOps] CI/CD 란? 본문
DevOps 란?
- 개발 및 운영을 관리하고
- CI/CD를 위한 파이프라인을 구성하고 자동화하는 역할을 의미합니다.
CI/CD 란?
- 애플리케이션 개발 단계를 자동화하여, 보다 빠른 주기로 고객들에게 서비스를 제공하는 개발 방식입니다.
CI 란?
- Continous Integration(지속적 통합)으로, 빌드, 테스트, 머지를 자동화하는 것을 의미합니다.
- 만약, 개발자가 하위 브랜치의 코드를 업데이트 했을 경우, 개발자가 직접 해당 브랜치를 빌드하고 테스트한 뒤, 문제가 없는지 확인하고 main 브랜치와 병합한다면, 시간이 많이 소요될 수 밖에 없습니다.
- 하지만, CI 서비스를 사용한다면, 하위 브랜치의 코드를 업데이트 하는 것만으로도, 빌드와 테스트를 자동으로 트리거되어 검증할 수 있게 됩니다.
- 결과적으로, 우리는 버그를 신속하게 찾아 해결할 수 있을 뿐 아니라, 소프트웨어 업데이트를 검증하고 릴리즈하는데에 걸리는 시간을 단축할 수도 있습니다.
CD 란?
- Continous Delivery(지속적 제공) 또는 Continous Deployment(지속적 배포)로,
- 개발자의 변경 사항이 반영된 애플리케이션을, 실제 사용 환경에 자동으로 배포하는 것을 의미합니다.
- CI 에서, 업데이트 된 코드가 빌드 및 테스트되고, 배포가 준비되었을 경우,
- 배포를 수동으로 진행하는 것이 Continous Delivery(지속적 제공) 이고,
- 배포를 자동으로 진행하는 것이 Continous Deployment(지속적 배포) 입니다.
CI/CD 적용 예제
- CI/CD 적용 전
- 개발자들이 업데이트된 코드를 feature 브랜치에 push 합니다.
- but, 에러가 발생한 부분을 눈치채지 못합니다.
- feature 브랜치를 master 브랜치에 merge 합니다.
- 에러가 발생했다면 에러를 해결하고, 위 과정을 다시 반복합니다.
- 에러가 해결되었다면 배포를 시작합니다.
- 배포과정 또한, 개발자가 직접해야하므로 많은 시간이 소요됩니다.
- 개발자들이 업데이트된 코드를 feature 브랜치에 push 합니다.
- CI/CD 적용 후
- 개발자들이 업데이트된 코드를 feature 브랜치에 push 합니다.
- push 를 통해 CI 서버가 Trigger 되어 Build, Test 를 자동으로 실행하고 결과를 전송합니다.
- 개발자들은 결과를 전송받고, 에러가 발생했다면 에러를 해결한 뒤, 위 과정을 다시 반복합니다.
- 에러를 해결해, 정상적으로 feature 브랜치를 master 브랜치에 merge 할 경우,
- CD 서버를 통해 자동으로 Deploy 과정을 진행합니다.
대표적인 CI / CD 툴
- Jenkins
- 무료입니다.
- 단, 별도의 서버가 필요합니다.
- 별도의 서버를 준비해 해당 서버에 설치하여 운영하는 방식이라, 무료지만 실제론 무료가 아닌 느낌입니다.
- 규모가 작은 프로젝트의 경우, 리소스 낭비가 발생할 수 있습니다.
- 다양한 플러그인, IDE를 지원합니다.
- 많은 사용자와 많은 문서가 존재합니다.
- 설정 및 운영이 불편하다는 평이 많습니다.
- 지라와 연동이 불편하거나 완벽하지 않을 수 있습니다.
- 무료입니다.
- Github Actions
- public 은 무료, private 은 매월 3000분 무료입니다.
- 깃허브의 모든 이벤트에 대한 작업을 제공하고, 다양한 언어와 프레임워크를 지원합니다.
- 복잡한 과정없이 바로 깃허브에서 사용할 수 있습니다.
- 문서가 비교적 부족합니다.
- 빌드 과정을 눈으로 확인하기 쉽습니다.
- 젠킨스보다 빠릅니다.
- 설정 및 운영이 불편하다는 평이 많지만, 젠킨스만큼은 아닙니다.
- UI 에서 개별 워크플로우 실행을 삭제할 수는 없습니다.
- 워크플로우에서 단일 작업만 다시 실행할 수는 없습니다.
- 빠르고, 서드 파티가 필요 없기 때문에 요즘 대세입니다.
- AWS CodeBuild / Travis CI / Circle CI / Bamboo / ETC
결론
- 실무에서 개발자가 직접 빌드, 테스트, 배포하는 것은 리소스낭비입니다.
- 따라서, 자동화 구축은 필수입니다.
참고
Comments