제목 날짜 내용 발행일 23.04.03
해당 포스트는
CI/CD
를 학습한 것을 정리한 내용입니다.
CI/CD는 약어로, 몇 가지의 다른 의미를 가지고 있다.
"CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미
"CD"는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미
일반적인 앱의 개발 및 유지보수 단계는 아래와 같다.
여기서 지속적 통합 및 지속적 전달을 단계별로 생각해볼 수 있다.
개발자를 위한 자동화 프로세스라고 볼 수 있다
Code
- Build
- Test
단계에서 적용해 볼 수 있다.
Code : 개발자가 코드를 원격 코드 저장소 (Ex. github repository)에 push하는 단계
Build : 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드하는 단계
Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는 지 확인하는 과정
이 과정에서
이 지속적인 통합 과정을 통해
지속적 통합은 모든 코드 변화를 하나의 리포지토리에서 관리하는 것 부터 시작
이렇게 지속적 통합을 통해 개발팀은 각자 개발한 코드를 이른 시점에 자주 합치고 자주 테스트 해볼 수 있다.
지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)를 의미
이 두 용어는 상호 교환적으로 사용
Release
- Deploy
- Operate
단계에서 적용해 볼 수 있다.
Release : 배포 가능한 소프트웨어 패키지를 작성
Deploy : 프로비저닝을 실행하고 서비스를 사용자에게 노출
Operate : 서비스 현황을 파악하고 생길 수 있는 문제를 감지
지속적 배포의 경우, 코드 변경 사항의 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계로, 테스트 자동화와 코드 배포 자동화가 포함
이 프로세스를 완료하면 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 배포할 수 있기 때문에 운영팀이 보다 빠르고 손쉽게 애플리케이션을 프로덕션으로 배포할 수 있다.
실리콘밸리 테크 기업들은 다양한 모니터링 툴과 장애 대응 프로세스를 마련해 배포에 대한 자신감을 높여 조직의 비즈니스 역량을 키우고 있다.
뱅크셀러드 - 하루에 1000번 배포하는 조직 되기
Github Page
Github Page
가 알아서 해당 index.html
파일과 해당 디렉터리에 있는 파일을 잘 번들링해서 Github Page
서버에 업로드Github Page
배포에 성공했다면, 이미 지속적 배포를 경험해봤다고 할 수 있을까...CI/CD는 지속적 통합 및 지속적 제공(CD, Continuous Delivery)의 구축 사례만을 지칭할 때도 있고, 지속적 통합, 지속적 제공, 지속적 배포라는 3가지 구축 사례 모두를 의미하는 것일 수도 있다.
좀 더 복잡하게 설명하면 "지속적인 서비스 제공"은 때로 지속적인 배포의 과정까지 포함하는 방식으로 사용되기도 한다.
결과적으로 CI/CD는 파이프라인으로 표현되는 실제 프로세스를 의미
애플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미
이 용어는 사례별로 CI/CD 파이프라인에 구현된 자동화 수준 정도에 따라 그 의미가 달라진다.
CI를 먼저 추가한 다음 클라우드 네이티브 애플리케이션의 일부로서 배포 및 개발 자동화를 구현할 수 있다.