CI/CD
CI : 지속적인 통합(Continuous Integration)
CD : 지속적인 서비스 제공(Continuous Delivery) / 지속적인 배포(Continuous Deployment)
지속적 통합(Continuous Integration, CI)
개발자를 위한 자동화 프로세스
Code : 개발자가 코드를 원격 코드 저장소에 push하는 단계
Build : 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드하는 단계
Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는지 확인하는 과정
📋 지속적통합은 모든 코드 변화를 하나의 리포지토리에서 관리하는 것부터 시작한다.
모든 개발팀이 코드의 변화를 확인할 수 있어 투명하게 문제점을 파악할 수 있다.
잦은 pull request와 merge로 코드를 자주 통합한다.
지속적 통합으로 보안이슈나 에러등을 쉽게 파악할 수 있어 해당 이슈를 빠르게 개선할 수 있다.
지속적 배포(Continus Delivery/Deployment, CD)
지속적인 서비스 제공 및 지속적인 배포를 의미하며 이 두 용어는 상호 교환적으로 사용된다
Release : 배포 가능한 소프트웨어 패키지 작성
Deploy : 프로비저닝을 실행하고 서비스를 사용자에게 노출
Operate : 서비스 현황을 파악하고 문제점 감지
📋 지속적 배포의 경우, 코드 변경 사항의 병합부터 빌드 제공에 이르는 모든 단계로, 테스트 자동화, 코드 배포 자동화가 포함된다.
배포 자동화
한 번의 클릭이나 명령어 입력으로 전체 배포 과정을 자동으로 진행하는 것
자동화가 필요한 이유
수동적이고 반복적인 배포 과정을 자동화해 시간이 절약됨
휴먼에러를 방지함
(휴먼에러 : 사람이 수동적으로 배포 과정을 진행하는 중 생기는 실수)
CI/CD 파이프라인
수 없이 진행되는 배포 과정을 자동화 시키는 방법을 구축
자동화를 꾀하는 부분은 보통 코드가 빌드되면서 최종적으로 배포가 되는 단계까지이며 이부분을 지속적인 통합, 배포를 위해 일련의 자동화 단계를 민든다. 이것을 파이프라인을 구축했다고 표현한다.
CI/CD 파이프라인을 구성하는 기본단계, 수행작업
배포에서 파이프라인은 소스 코드의 관리부터 실제 서비스로의 배포과정을 연결하는 구조를 뜻함
파이프라인은 전체 배포 과정을 여러 단계로 분리하고 각 단계는 파이프라인 안에서 순차적으로 실행되며, 각 단계마다 주어진 작업을 수행한다.
Source 단계 : 원격저장소에 관리되고 있는 소스코드에 변경사항이 일어날 경우 감지하고 다음단계로 전달하는 작업
Build 단계 : source단계에서 전달받은 코드를 컴파일, 빌드, 테스트해 가공
Deploy 단계 : build단계에서 전달받은 결과물을 실제 섭스에 반영하는 작업수행
CI/CD 파이프랑니 구성요소, 장점
- 빌드 (소프트웨어 컴파일)
- 테스트(호환성 및 오류검사)
- 릴리스(버전 제어 저장소의 애플리케이션 업데이트)
- 배포 (개발에서 프로덕션 환경으로의 변환)
- 규정 준수 및 유효성 검사
💡이렇게 구축된 파이프라인은 최신 버전의 소프트웨어 애플리케이션을 업데이트하고 제공하려는 일련의 처리 단계에 걸리는 시간을 수동으로 하는것보다 더 빠르고 안정적이며 효과적으로 줄여주고 CI/CD 인프라와의 호환성과 효율성을 높여준다.
내용 참조, 출처 : 코드스테이츠
이미지 출처 : 코드스테이츠
정연님 깃허브액션 가르쳐주기 싫다고 페어 명단을 새로 짜게 하시다니 정말 너무하시네요