CI/CD에 관하여

하나의 서비스를 개발하고 계속해서 운영및 관리해나가고자 할 때, 업데이트 사항을 매번 개발자들이 수동으로 빌드시켜 테스트한 뒤 배포 설정을 하게 된다면 반복적인 작업이 될 뿐만 아니라 상당히 많은 시간을 사용하게 됩니다.

이런 문제점을 해결하기 위해 나온 개념이 CI/CD입니다. 개발서비스 운영관리 문제점들을 해결하여 많은 시간을 투자하지 않더라도 기존 수동 방식보다 더 많은 업데이트, 수정 사항들을 적용시킬 수 있게 되었다고 할 수 있습니다

CI

CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)

새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.

CI가 나오기 전까지는 개발자들이 직접 개발한 코드들을 통합하고 컴파일 → 빌드 → 테스트,배포 과정을 거치게 되는데 코드에 문제가 있었다면 다시 컴파일 → 빌드, 테스트 과정을 진행하게 되고 이 과정을 재설정을 통해 실행하는데 많은 시간이 소모되어 업데이트하고 최신의 서비스를 제공하는 과정들이 어려웠습니다.

빌드, 테스트를 수행하고 저장소통합까지 실제 서비스를 문제없이 배포할 수 있도록 준비하는 과정

CD

CD는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)

항상 신뢰 가능할 때 배포될 수 있도록 관리하자는 개념으로 지속적인 제공으로도 사용되고 있습니다. 대표적으로 CI를 거친 코드가 빌드, 테스트 과정이 성공적으로 진행되었다고 할 때, 실제 서비스되는 저장소에 업로드되는 것, 통합을 의미하며 지속적인 배포는 저장소에 업로드 된 코드들을 실제 사용자가 이용할 수 있는 배포환경까지 실행하는 것을 얘기합니다

장소에 업로드 된 코드들을 실제 사용자가 이용할 수 있도록 배포하는 과정

간략화

자동화된 통합 ⇒ 제공 ⇒ 배포로 간략화 할 수있으며 각 과정의 출력된 결과물이 다음 과정의 입력으로 들어가는 방식인 파이프라인을 이름에 붙이기도 하며 주로 아래 이미지와 같은 과정을 거친다고 이해할 수 있습니다.


대표적인 CI/CD Tool

참고