프로젝트를 진행하며 CI/CD라는 용어대 대해 알아보고 또한 현재 진행중인 프로젝트에 어떻게 적용시키는 게 좋을지에 대해 생각해보는 시간을 가졌습니다. 오늘은 CI/CD에 대한 개념을 알아보도록 하겠습니다.
CI/CD?
우선 CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 기본 개념은 지속적인 통합, 테스트, 서비스, 배포입니다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제을 해결하기 위한 솔루션입니다.
CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 CI/CD 파이프라인이라고 부릅니다.
CI란?
Continuous Integration의 약자로 한마디로 빌드/테스트 자동화 과정을 말합니다. CI는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미합니다.
개발자가 애플리케이션에 적용한 변경 사항이 병합되면 이러한 변경 사항이 애플리케이션을 손상시키지 않도록 자동으로 애플리케이션을 구축하고 테스트(일반적으로 단위 테스트 및 통합 테스트) 실행을 통해 변경 사항이 애플리케이션에 제대로 적용되었는지를 확인합니다.
CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다. 즉, 여러 개발자가 작성 또는 수정한 코드를 지속적으로 통합하고 테스트하는 것 입니다.
간단히 CI를 적용한 흐름을 나타낸다면 다음과 같습니다.
- 개발자가 구현한 코드를 소스/버전 관리 시스템에 저장합니다. (ex.github)
- 소스코드에 변화가 감지되면 또는 다른 설정을 통해 CI툴을 이용하여 소스코드 변경을 알립니다.
- CI툴에서 변경된 소스코드를 Build, Test, Lint 실행하고 결과를 전송합니다.
- 결과에 문제가 없다면 소스 병합이 됩니다. 결과에 문제가 있다면 소스를 수정한 후 다시 1번으로 돌아갑니다.
CI를 적용함으로써의 장점
다수의 개발자가 동시에 개발을 진행하고 소스를 병합하는 과정은 매우 번거로울 것 입니다. 또한 시간도 많이 잡아먹겠죠. CI를 적용함으로써 소스코드에 변경이 생길때마다 문제가 발생하는지 여부를 알 수 있기 때문에 빠른 검증이 가능합니다.
CD란?
Continuous Deployment의 약자로 한마디로 자동 배포화 과정입니다. 지속적인 배포, 지속적인 서비스 제공을 의미합니다.
CI/CD 파이프라인의 마지막 단계이기도 한 CD는 CI를 통해서 성공적으로 통합이 진행되었다면 사용자가 실제로 사용할 수 있도록 사용자 배포환경에 릴리즈하는 것을 말합니다. 즉, 애플리케이션을 프로덕션 환경으로 배포하는 작업을 자동화 하는 것입니다.
지속적 배포를 채택하면 품질 저하 없이 최대한 빨리 사용자에게 새로운 기능을 제공할 수 있습니다.
CD를 적용함으로써의 장점
한 번의 클릭으로 빌드 , 테스트, 배포 자동화까지 구현할 수 있다는 간편하다는 장점이 있습니다. 그러므로 개발자는 개발에만 집중할 수 있습니다.
CI/CD 지원 툴
- Jenkins
- Bamboo(상용)
- Github action
참고
'기타' 카테고리의 다른 글
다중 서버에서의 Session 불일치 현상과 해결 방법 (0) | 2021.11.07 |
---|---|
Scale-up 과 Scale-out에 대해서 알아보자 (0) | 2021.11.06 |
면접 질문 정리 (1) (0) | 2021.10.13 |
[8주차] 멘토링 키워드 (0) | 2021.10.06 |
[7주차] 멘토링 키워드 (0) | 2021.09.29 |
댓글