개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)
지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)
일반적인 앱의 개발 및 유지보수의 단계는 다음과 같다.
Plan - Code - Build - Test - Release - Deploy - Operate -....반복
개발자를 위한 자동화 프로세스이며 Code - Build - Test 단계에서 꾀할 수 있다.
Code : 개발자가 코드를 원격 코드 저장소 (Ex. github repository)에 push하는 단계
Build : 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드하는 단계
Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는 지 확인하는 과정
개발자는 코드를 자주 원격 코드 저장소에 push하고, 테스트 및 빌드를 거치며 결과는 통해 빌드가 성공했는지 실패했는지 확인을 하고, 이를 통해 다시 개선 방안을 찾는다.
통합과정을 통해 버그를 일찍 발견하고, 테스트가 완료된 코드에 빠른 전달이 가능해지며 지속적 배포가 가능해진다.
이 부분은 Release - Deploy - Operate 단계에서 꾀할 수 있다.
Release : 배포 가능한 소프트웨어 패키지를 작성
Deploy : 프로비저닝을 실행하고 서비스를 사용자에게 노출합니다. 실질적인 배포 부분
Operate : 서비스 현황을 파악하고 생길 수 있는 문제를 감지
테스트 자동화와 코드 릴리스 자동화를 포함하며, 운영팀이 보다 빠르고 손쉽게 애플리케이션을 프로덕션으로 배포할 수 있게 된다.
결과적으로 CI/CD는 파이프라인으로 표현되는 실제 프로세스를 의미하고, 어플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미한다.
배포에서 파이프라인(Pipeline)이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻한다. 파이프라인은 전체 배포 과정을 여러 단계로 분리하며, 각 단계는 파이프라인 안에서 순차적으로 실행되고, 각 단계마다 주어진 작업들을 수행한다.
파이프라인을 여러 단계로 분히라 때, 대표적으로 쓰이는 세 가지 단계는 다음과 같다.
구축된 파이프라인은 최신 버전의 소프트웨어 애플리케이션을 업데이트하고 제공하려는 일련의 처리 단계에 걸리는 시간을 수동으로 하는 것보다 더 빠르고 안정적이며 효과적으로 줄여주고 CI/CD 인프라와의 호환성과 효율성을 높여준다.