CS 공부

CI/CD 란? ( CI/CD 스터디 시작 2021-02-08) 본문

CS공부/CICD

CI/CD 란? ( CI/CD 스터디 시작 2021-02-08)

kluiop1 2021. 7. 12. 02:33

CI/CD란

애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다.

 

CI(Continuous Integration)

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

 

CD (Continuous Delivery or Continuous Deployment)

지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환적으로 사용됩니다. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 합니다.

 

지속적인 서비스 제공(Continuous Delivery) 

지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리(예: GitHub 또는 컨테이너 레지스트리)에 자동으로 업로드 되는 것 입니다.

운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있습니다. 이는 개발팀과 비즈니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결해 줍니다. 지속적인 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 합니다.

 

지속적인 배포(Continuous Deployment)

지속적인 배포(또 다른 의미의 "CD": Continuous Deployment)란 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미합니다. 이는 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결합니다. 지속적인 배포는 파이프라인의 다음 단계를 자동화함으로써 지속적인 제공이 가진 장점을 활용합니다.

 

 

스터디 목표 설정

목표 설정 방식

1. 스터디원 각자 자기가 원하는 목표의 CI/CD를 설정한다.

2. 공통 부분을 우선적으로 구축한 후에 서로의 자료를 공유한다.

3. 각자 목표에서 다른 부분도 따로 구축한 후에 팀원들에게 설명하고 공유하여 다른 팀원이 참고할 수 있게 한다.

 

나의 목표

아래 그림과 같다..... 

젠킨스와 젠킨스의 코드 정적분석 라이브러리인 Sonarqube for jenkins, Gitlab, Slack을 사용하여 구축하기로 하였고 

서버는 GCP를 사용하고 각각의 프로그램 관리는 docker로 하였다

Sonarqube for jenkins는 젠킨스의 라이브러리여서 그림 2에서 하나의 컨테이너 안에 있는 것처럼 표현하였다.

 

 

그림 1. 
그림 2.

Web과 Was는 여길 참고!

https://com-study.tistory.com/26