Hi yoahn 개발블로그

CI/CD 파이프라인 본문

42 SEOUL

CI/CD 파이프라인

hi._.0seon 2021. 8. 6. 16:55
반응형

CI/CD

CI는 Continuous Integration이라는 뜻으로, 지속적인 통합이라는 의미이며

CD는 Continuous Delivery and Continuous Deployment 두가지 모두의 축약어이다. 지속적인 서비스 제공 혹은 지속적인 배포라는 의미다.

 

CI (Continuous Integration) :지속적 통합

지속적인 통합이란, 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것을 의미한다.

 

코드 버전 관리를 하는 Git, SVN 등에 push 가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포파일을 만드는 과정을 CI 라고 한다.

 

CI가 필요한 이유는 코드 변경이 일어날 때마다 혼자 작업하는 경우라면 매번 배포 파일을 직접 생성해야한다.

그런데 만약 두명 이상이 작업하는 경우라면 다른 사람이 추가/수정한 코드와 내가 추가/수정한 코드를 합치는 과정이 필요하고, 배포 담당자가 배포 파일을 생성한 뒤 배포하게 된다.

 

 

(아직 이해가 되지 않는 부분인데, 하나의 레포지토리에서 다른 팀원과 브랜치를 나누거나 작업량이 적은경우에는 한 브랜치에서 각자 커밋하면서 자동으로 병합되지 않는 부분이 있다면 직접 병합 후 다시 커밋해야 하는데, CI 설명을 찾아보면 수동으로 코드를 통합할 필요가 없다고 해서 이해가 되지 않는다. 깃헙에서 자동으로 코드를 병합해주지 못하는 것을 해줄 수 있는 프로그램이 있다는 것인가,....?)

 

CI 를 사용하게 되면 원격 저장소로 코드가 푸쉬 될 때마다 코드를 병합하고, 테스트 코드와 빌드를 수행하면서 자동으로 코드가 통합되어 더는 수동으로 코드를 통합할 필요가 없어진다.

 

하지만 CI 도구를 도입했다고 해서 CI를 하고 있는 것은 아니다.

https://www.martinfowler.com/articles/originalContinuousIntegration.html

CI 규칙 4가지

1. 모든 소스코드가 실행되고, 누구든 현재의 소스에 접근할 수 있는 단일위치를 유지해야 한다.

2. 빌드 프로세스를 자동화해서 누구든 소스로부터 시스템을 빌드하는 단일 명령어를 사용할 수 있게 해야 한다.

3. 테스팅을 자동화해서 단일 명령어로 언제든지 시스템에 대한 올바른 테스트 묶음들을 실행할 수 있어야 한다.

4. 누구나 현재 실행파일을 얻으면 지금까지 최고의 실행 파일이라고 확신을 할 수 있어야한다.

 

지속적 통합을 위해서는 코드가 완전하다는 것을 보장하기위해 테스트 코드가 구현되어 있어야 한다.

 

CD (Continuous Deployment & Continuous Delivery): 지속적인 서비스 제공 & 지속적인 배포

Continuous Delivery 는 공유 레포지토리로 자동으로 Release 하는 것,

Continuous Deployment는 Production 레벨까지 자동으로 배포하는 것을 의미한다.

 

CD 가 필요한 이유는 배포할 때 지금까지 사용한 방법은 기존 서버를 종료시키고, 새로운 서버를 실행시키는 방법을 택했는데, 이 과정에서 새로운 서버가 시작되기 전까지 사용자들이 서비스에 접근하지 못한다는 점과 코드 변경사항이 있을 때마다 직접 배포를 해야 하는 점이 있었다. 배포할 때 배포 담당자가 없으면 배포가 원활히 진행되지 않는 문제점도 존재했다.

 

CD를 적용하면 배포를 자동으로 해주게 되므로 변동사항이 있을때마다 서로 상황을 공유하고 직접 배포하는 번거로움을 줄일 수 있다.

https://artist-developer.tistory.com/24

 

CI/CD란 무엇인가 (Feat. DevOps 엔지니어)

안녕하세요. 개발자의 용어를 쉽고 명확하게 설명해드리는 개발자 김모씨입니다. CI/CD ?! 개발자로 밥먹고 사시는 분들이시라면, 혹은 IT서비스 업계에 종사하시는 분들이라면, 한 번 쯤은 들어

artist-developer.tistory.com

CI & CD 도구 종류

1. 젠킨스

Java 기반의 크로스 플랫폼 오픈 소스 CI & CD 도구

지속적인 제공을 촉진하는 것과 함께 지속적 통합을 제공한다. 실시간 테스트 및 보고가 가능하다.

 

  • Windows, Linux, macOS 플랫폼에서 사용할 수 있다.
  • 무료 및 오픈 소스
  • 클라우드 플랫폼과 통합됨

2. Travis CI

사설 클라우드 & 자체 호스팅 플랫폼에서 사용하려는 기업과 오픈 소스 커뮤니티를 위한 다양한 제품을 제공

 

  • Java, C#, Julia, Python 등 모든 프로그래밍 언어를 지원

다음 글에서 젠킨스로 ci 배포하는 과정을 남길 예정..

반응형
Comments