본문 바로가기
INFRA/DevOps

CI/CD 파이프라인 개념과 구축 방법

by BTC_조롱이 2022. 4. 29.

안녕하세요~~! Administrator팀입니다잇~

 

지난 포스트에서는 CI/CD란 무엇인지 알아봤었는데요, 이번 포스트에서는 파이프라인이 무엇인지, 파이프라인 구축 방법에 대해서 알아보려고 해요.

CI/CD가 뭐하는 건지 모르는 분은 아래 링크로!

DevOps의 핵심 CI/CD란?

 

CI/CD 파이프라인

CI/CD 파이프라인은 고객에게 새 버전의 소프트웨어를 제공하기 위해 수행해야 하는 단계입니다. 빌드-테스트-릴리즈-배포 등으로 이루어진 단계죠. DevOps 또는 SRE(사이트 신뢰성 엔지니어) 방식으로 더 효과적이게 소프트웨어를 제공하는 데에 초점을 맞춘 방법입니다.

CI/CD 파이프라인은 특히 통합 및 테스트 단계와 제공 및 배포 단계에서 모니터링 및 자동화를 도입하여 애플리케이션 개발 프로세스를 개선합니다. CI/CD 파이프라인의 각 단계를 수동으로 실행할 수도 있지만, CI/CD 파이프라인 자동화할 때 진정한 DevOps라고 할 수 있습니다..!

 

CI/CD 파이프라인의 요소

CI/CD 파이프라인의 단계는 각기 다른 태스크 하위 집합으로 이루어져 있는데, 이를 파이프라인 단계(pipeline stage)라고 부릅니다. 일반적인 파이프라인 단계는 다음과 같습니다.

 

  • 빌드(Build) - 애플리케이션을 컴파일하는 단계
  • 테스트(Test) - 코드를 테스트하는 단계. 이 단계를 자동화하여 시간과 수고를 줄일 수 있습니다.
  • 릴리즈(Release) - 애플리케이션을 리포지토리에 제공하는 단계. 깃과 같은 리포지토리에 릴리즈 합니다.
  • 배포(Deploy) - 코드를 프로덕션에 배포하는 단계
  • 검증 및 컴플라이언스(Validation & compliance) - 빌드 검증 단계는 해당 조직의 필요에 따라 결정됩니다. Clair와 같은 이미지 보안 스캔 툴을 사용하여 알려진 취약점(CVE)과 비교하는 방법으로 이미지의 품질을 보장할 수 있습니다.

여기에 나오지 않은 파이프라인 단계도 존재합니다. 이 목록은 흔히 볼 수 있는 단계의 예일 뿐입니다. 조직의 필요에 따라 고유한 파이프라인을 구성하면 됩니다.

 

여러 파이프라인 중에서 가장 대중적인 3가지를 골라서 장단점을 비교해보았습니다!

 

Jenkins

 

  - 무료

  - 다양한 플러그인, IDE 지원

  - 많은 사용자와 많은 문서

  - 규모가 작은 프로젝트의 경우 설정하는데 리소스 낭비가 발생할 수 있다.

  - 지라와 연동이 불편하거나 완벽하지 않을 수 있다.

 

Travis

 

  - 깃허브와 연동

  - 빌드 과정을 한 눈에 이해하기 쉽다.

  - 초기 설정이 젠킨스에 비해 간편 (YML 파일을 통한 설정)

  - 별도의 서버 필요 없다. Travis에서 알아서 VM으로 호스팅 해준다.

  - 기업용의 경우 다소 비싸다(월 129달러)

  - 로컬에서 CI환경과 동일한 빌드환경을 제공하지 않는다.

  - 젠킨스에 비해 플러그인이 다양하지 않다.

  - .travis.yml 파일을 수정하고 테스트하려면 git push를 반복해야한다.

 

Github Actions

 

  - 복잡한 과정없이 바로 깃허브에서 사용할 수 있다.

  - 빌드 과정을 눈으로 확인하기 쉽다.

  - 깃허브의 모든 이벤트에 대한 작업을 제공하고 다양한 언어와 프레임워크를 지원한다.

  - 젠킨스보다 빠르다.

  - Public은 무료, Private 저장소의 경우 매월 3000분 무료

  - 문서가 비교적 부족하다.

  - UI에서 개별 워크플로우 실행을 삭제할 수 없다.

  - 워크플로우에서 단일 작업만 다시 실행할 수 없다.

 

이 외에도 AWS, Azure, GCP 각 CSP들 안에서도 파이프라인 서비스를 만나 볼 수 있습니다 !!

 

긴 글 읽어주셔서 감사합니다 !!

 

 

 

 

'INFRA > DevOps' 카테고리의 다른 글

[AWS]Kubernetes  (0) 2022.05.01
k8s 보안  (0) 2022.04.29
kubectl 명령어 구조  (0) 2022.04.27
DevOps의 핵심 CI/CD란?  (0) 2022.04.22
Pod  (0) 2022.04.21

댓글