CI 란?
Continuous Integration 의 약자로 지속적 통합이라는 뜻이다.
단순히 말해 개발자들이 개발한 코드들을 빈번히 Merge 하여 충돌을 없애기 위함이 가장 큰 이유이다.
또한 코드들을 빈번히 Merge하는 과정에서 코드를 Build하고 Test 하여야 하는데, 빈번하게 Build와 Test를 진행해야 하기 때문에 한꺼번에 통합해서 빌드/테스트 하는 것보다 시간이 더 오래 소모되고 귀찮다는 단점이 있었다.
그리하여 코드는 작성하되 테스트와 빌드는 프로그램이 자동으로 해주는 방법으로 시간도 절약하고 귀찮지 않게 하는 방법이 발전 되었다. (Git과 같은 SCM을 이용해 코드를 통합하고 테스트/빌드는 자동화)
CI의 장점
- 코드를 검증하는 데 들이는 시간이 축소된다.
- 개발에 있어서 편리하다
- 코드 품질을 높일 수 있다.
CD 란?
Continuous Delivery/Deployment의 약자로 지속적 제공/배포라는 의미다.
CI 과정이 다 끝나 빌드, 테스트가 완료 돼 배포 준비가 마무리 된 애플리케이션을 개발자가 수동 또는 자동으로 배포 진행하는 것을 의미한다.
수동일때 Delivery , 자동일때 Deployment 라고 한다.
CI/CD 파이프라인이란?
이러한 일련의 과정 즉, 애플리케이션 개발 단계를 자동화 하여 보다 짧은 주기로 고객에게 애플리케이션을 제공하는 방법이다.
파이프라인은
- 빌드 (소프트웨어 컴파일)
- 테스트 (호환성 및 오류검사)
- 릴리스 (버전 제어 저장소의 애플리케이션 업데이트)
- 배포 (개발에서 프로덕션 환경으로의 변환)
- 규정 준수 및 유효성 검사
등으로 구성 되어있다.
CI/CD 는 아래와 같은 장점이 있다.
- 빠른 제품 반영으로 비즈니스 가치 향상
- 운영의 안정성 확보
- 요구사항에 기반한 빠른 피드백
- 소프트웨어의 품질 향상
- 협업을 위한 협력성 증대
실무에서 어떻게 사용되고 있는지?
이 가이드에서는 테스트 및 프로덕션 환경에 대한 배포를 2개의 Cloud Build 파이프라인, 즉 테스트 파이프라인과 프로덕션 파이프라인으로 구분합니다.
앞의 다이어그램에서 테스트 파이프라인은 다음과 같은 단계로 구성됩니다.
- 개발자가 Cloud Source Repositories에 코드 변경사항을 커밋합니다.
- 코드 변경사항으로 인해 Cloud Build에 테스트 빌드가 트리거됩니다.
- Cloud Build가 자체 실행되는 JAR 파일을 빌드하여 Cloud Storage의 테스트 JAR 버킷에 배포합니다.
- Cloud Build가 테스트 파일을 Cloud Storage의 테스트-파일 버킷에 배포합니다.
- Cloud Build가 새로 배포된 JAR 파일을 참조하도록 Cloud Composer에 변수를 설정합니다.
- Cloud Build가 데이터 처리 워크플로 Directed Acyclic Graph(DAG)를 테스트하여 Cloud Storage의 Cloud Composer 버킷에 배포합니다.
- 워크플로 DAG 파일이 Cloud Composer에 배포됩니다.
- Cloud Build가 새로 배포된 데이터 처리 워크플로가 실행되도록 트리거합니다.
앞의 다이어그램에서 프로덕션 파이프라인은 다음과 같은 단계로 구성됩니다.
- 개발자가 Cloud Build에서 프로덕션 배포 파이프라인을 수동으로 실행합니다.
- Cloud Build가 자체 실행되는 최신 JAR 파일을 Cloud Storage의 테스트 JAR 버킷에서 프로덕션 JAR 버킷으로 복사합니다.
- Cloud Build가 프로덕션 데이터 처리 워크플로 DAG를 테스트하여 Cloud Storage의 Cloud Composer 버킷에 배포합니다.
- 프로덕션 워크플로 DAG 파일이 Cloud Composer에 배포됩니다.
'DevOps' 카테고리의 다른 글
DevOps 인터뷰 질문 - 작성 (0) | 2023.06.19 |
---|---|
DevOps 인터뷰 질문 (0) | 2023.06.19 |
[번역]How to become devops engineer (0) | 2022.10.27 |
[번역] DevOps 엔지니어가 되는 방법: 2022년에 따라야 할 8가지 주목할만한 팁 (0) | 2022.05.10 |
[번역] DevOps 엔지니어 되기 - 종합가이드(2021년판) (0) | 2022.05.10 |