통합 지옥(integration hell) 탈출 : CI/CD 파이프라인과 도구

Heihei·2022년 12월 12일
0

DevOps

목록 보기
1/2

❗️ CI/CD 파이프라인이 필요한 이유

  • 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됨
  • 휴먼 에러(Human Error)를 방지할 수 있음
    • 휴먼 에러 : 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수. 배포 자동화를 통해 전체 배포 과정을 매번 일관되게 진행하는 구조를 설계하여 휴먼 에러 발생 가능성을 낮출 수 있다.
  • 버그를 일찍 발견할 수 있다.
  • 빌드 및 테스트와 같이 사람이 해야 할 일들을 자동화할 수 있다.
  • 테스트가 완료된 코드에 대해 빠른 전달이 가능하다.
  • 개발자의 생산성을 향상시킬 수 있다.

✅ CI(지속적 통합) 원칙

  1. 단일 소스 레파지토리 유지
  2. 빌드 자동화
  3. 셀프 테스팅 빌드
    • 테스트 주도 개발(TDD)를 통해 손상된 빌드 즉시 확인 및 수정 가능
  4. 매일 메인라인에 커밋
    • 빠르게 충돌 상황 감지
  5. 모든 팀원이 시스템 상태와 시스템에 적용된 변경 사항을 쉽게 확인 할 수 있어야 함
  6. 빌드의 오류를 즉시 수정 할 수 있어야 함
  7. 빌드가 빨리 되도록 유지해야 함
  8. 운영 환경과 동일한 환경에서 테스트가 진행되어야 함
  9. 배포 자동화가 이루어져야 함

✅ CD(지속적 배포)를 위한 파이프 라인 단계

1. Source 단계

  • Source 단계에서는 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행함

2. Build 단계

  • Build 단계에서는 Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공합니다. 또한 Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행함

3. Deploy 단계

  • Deploy 단계에서는 Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행함

❗️주의

  • 파이프라인의 단계는 상황과 필요에 따라 더 세분화되거나 간소화 될 수 있음

✅ 가장 많이 쓰이는 CI/CD 도구

1. Jenkins

  • 오늘날 시장에서 널리 사용되는 CI/CD 도구 중 하나인 Jenkins는 중앙 빌드 및 지속적인 통합 프로세스가 가능하며, Windows, macOS 및 기타 Unix 계열 운영 체제용 패키지가 포함된 독립형 Java 기반 프로그램이다. 수백개의 플러그인을 사용할 수 있는 Jenkins는 소프트웨어 개발 프로젝트의 빌드 파이프라인 구성, Build 자동화의 확립, 배포 및 테스트 자동화 등을 지원한다.
    공식 문서 : https://jenkins.io/

2. Github Actions

  • Github Action은 github에서 공식적으로 제공하는 CI/CD 툴, 다시 말해 개발의 work flow를 자동화할 수 있게 도와주는 툴이다.
    공식 문서 : https://docs.github.com/en/actions

3. AWS CodePipeline

  • AWS CodePipeline은 소프트웨어 릴리스에 필요한 단계를 모델링, 시각화 및 자동화하는 데 사용할 수 있는 지속적 전달 서비스이다. 소프트웨어 릴리스 프로세스를 구성하는 여러 단계를 신속하게 모델링하고 구성할 수 있다. CodePipeline 은 소프트웨어 변경 사항을 지속적으로 릴리스하는 데 필요한 단계를 자동화한다.
    공식 문서 : https://docs.aws.amazon.com/ko_kr/codepipeline
profile
모르면 배우면 된다!

0개의 댓글