본문 바로가기
AI/MLOps

[Jenkins] CI/CD 이론

by merona99 2024. 11. 21.
반응형
Jenkins

CI/CD 이론

참고강의: 10개의 프로젝트로 한 번에 끝내는 MLOps 파이프라인 구현 초격차 패키지 Online.

 

 

 

[목차]

  1. CI/CD란?
  2. Workflow Management와 무엇이 다른가?
  3. CI/CD 도구들

 

 


 

1. CI/CD란?

[CI/CD 란?]

CI와 CD는 각각 특정 단어의 줄임말이다.

 

출처: databricks

 

Confinuous Integration (CI, 연속 통합)

개발자들이 코드 변경 사항을 중앙 저장소에 정기적으로 병합하는 것을 의미

이 과정에서 자동화된 빌드 및 테스트가 수행되어 코드 변경이 주 저장소에 통합되기 전에 문제를 조기에 발견하고 해결

 

Continuous Deployment (CD, 연속 배포)

테스트를 거친 코드를 자동으로 production 환경에 배포하는 과정

수동 개입 없이도 새로운 코드 변경 사항이 사용자에게 신속하게 도달하도록 함


[MLOps에서의 CI/CD 중요성]

빠른 반복과 지속적인 개선

  • 모델 반복 속도 향상
    • CI/CD는 모델 개발 및 테스트 주기를 단축시켜, 빠른 반복을 가능하게 함.
    • 이를 통해 데이터 과학자들은 모델을 지속적으로 개선하고 최적화할 수 있음

품질 보증 및 신뢰성

  • 자동화된 테스트
    • 모델의 품질을 보장하기 위해 자동화된 테스트를 수행.
    • 이는 모델의 정확도, 성능 및 안정성을 지속적으로 모니터링하고 검증

협업 및 투명성 강화

  • 협업 향상
    • CI/CD는 데이터 과학자, 개발자, 운영 팀 간의 협업을 강화
    • 코드, 데이터, 모델의 변경 사항이 지속적으로 통합되어 모든 이해 관계자가 최신 상태를 파악

배포 및 운영의 간소화

  • 자동화된 배포
    • 모델을 프로덕션 환경으로 자동 배포함으로써, 수동 프로세스에서 발생할 수 있는 오류를 줄이고 배포 속도를 향상

[MLOps에서의 CI/CD 예시]

자동화된 모델 훈련 및 평가

  • 상황: 데이터 과학팀이 새로운 데이터 세트를 사용하여 모델을 훈련
  • CI/CD적용: 코드 저장소에 새로운 데이터 세트와 훈련 코드가 푸시될 때마다, CI/CD 파이프라인이 자동으로 모델을 훈련시키고 기본 평가 지표를 생성
  • 결과: 데이터 과학자는 모델의 성능을 신속하게 평가하고, 필요한 조정을 즉시 수행할 수 있음

 

지속적인 모델 배포

  • 상황: 개발된 모델이 프로덕션 환경에서 사용될 준비
  • CI/CD 적용: 모델이 특정 성능 기준을 충족하면, CI/CD 파이프라인은 모델을 자동으로 프로덕션 환경에 배포
  • 결과: 모델 배포 과정이 자동화되어, 신속하고 안정적인 배포가 가능

 

모델 모니터링 및 재훈련

  • 상황: 프로덕션에 배포된 모델의 성능이 시간이 지남에 따라 저하
  • CI/CD 적용: CI/CD 시스템은 모델 성능을 지속적으로 모니터링하고, 특정 임계값 이하로 떨어지면 자동으로 재훈련을 트리거
  • 결과: 모델의 성능이 지속적으로 유지되며, 데이터 변화에 신속하게 대응

 

 

 

2. Workflow Management와 무엇이 다른가?

그렇다면 CI/CD와 이전에 학습했던 Workflow Management와는 비슷한 점이 많은 것 같은데 무엇이 다를까?

그건 바로 목적에 있어서 다르다.

 

CI/CD 도구: 코드의 통합, 테스트, 빌드 및 배포과정을 자동화하여 소프트웨어 개발 및 배포 프로세스를 효율적으로 만들기 위해 설계

Workflow Management: 데이터 처리 작업의 스케쥴링, 실행, 모니터링을 자동화하는 데 중점을 이룸

 

 

[CI/CD vs Workflow management]

비교 사항 CI/CD 도구 Workflow management 도구
주요 목적 소프트웨어 개발의 연속적 통합 및 배포 자동화 데이터 처리 파이프라인 및 복잡한 워크플로우의 자동화 및 관리
핵심 기능 코드 통합 및 Merge
자동 빌드 및 테스트
자동 배포
데이터 파이프라인 설계 및 실행
모델 학습 및 평가 파이프라인 설계 및 실행
테스크 스케줄링 및 모니터링
의존성 관리
사용 사례 소프트웨어 개발 및 배포
DevOps 프로세스
데이터 엔지니어링
복잡한 데이터 처리 및 ETL 작업
배치 작업 스케쥴링
대표 도구 Jenkins, GitLab CI/CD, Github Actions, Circle CI, Travis CI Apache Airflow, Kubeflow, Apache NiFi
공통점 프로세스 자동화
효율성 및 생산성 향상
복잡한 작업 관리 최적화
프로세스 자동화
효율성 및 생산성 향상
복잡한 작업 관리 최적화
차이점 소프트웨어 개발 life cycle에 초정
코드 통합, 빌드, 테스트, 배포에 초점
DevOps 및 개발 팀에 맞춤
데이터 워크플로우 및 파이프라인 관리에 중점
데이터 처리, 모델 학습, 배치 작업에 초점
데이터 엔지니어 및 데이터 사이언티스트/분석가에 초점

 

 

 

3. CI/CD 도구들

도구 종류로는 Jenkins, GitLab CI/CD, Github Actions, Circle CI, Travis CI 가 있다.

 

 

Jenkins

Jenkins는 Java로 작성된 오픈 소스 자동화 서버로, 소프트웨어 개발의 연속적 통합 및 연속적 배포를 위한 도구

 

[주요 특징]

  • 플러그인 생태계: Jenkins는 방대한 플러그인 생태계를 가지고 있어, 다양한 개발, 테스트, 배포 도구들과의 통합이 가능
  • 유연성과 확장성: 사용자 정의 워크플로우 생성이 가능하며, Groovy 기반의 스크립트를 통해 파이프라인을 커스터마이징 할 수 있음
  • 마스터-슬레이브 아키텍처: 대규모 프로젝트와 다중 환경을 지원하기 위해 마스터-슬레이브 아키텍처를 사용
  • 강력한 커뮤니티 지원, 광범위한 플러그인, 높은 커스터마이징

GitLab CI/CD

GitLab CI/CD는 소스 코드 관리와 CI/CD가 통합된 웹 기반의 DevOps 생명주기 도구

 

[주요 특징]

  • 통합된 환경: 코드 저장소, CI/CD 파이프라인, 이슈 트래킹 등을 하나의 플랫폼에서 관리
  • YAML 파일 기반의 파이프라인 구성: .gitlab-ci.yml 파일을 통해 파이프라인을 구성하고 관리
  • 자동화된 테스트 및 배포: 코드 커밋 시 자동으로 테스트 및 배포가 이루어짐
  • 통합된 솔루션, 간편한 설정, 높은 가시성

GitHub Actions

GitHub Actions는 GitHub 저장소에 내장된 CI/CD 기능으로, 소프트웨어 워크플로우를 자동화

 

[주요 특징]

  • 깊은 GitHub 통합: GitHub 저장소와의 깊은 통합으로 워크플로우를 쉽게 설정하고 관리할 수 있음
  • 마켓플레이스: 다양한 액션을 제공하는 마켓플레이스를 통해 워크플로우를 확장할 수 있음
  • 리눅스, macOS, Windows 지원: 다양한 운영 체제에서의 빌드와 테스트를 지원할 수 있음
  • Github와의 원활한 통합, 쉬운 설정, 다양한 커뮤니티 기반 액션

Circle CI

Circle CI는 클라우드 기반 CI/CD 서비스로, 빠른 빌드, 테스트 및 배포를 지원

 

[주요 특징]

  • 컨테이너 기반의 아키텍처: Docker 컨테이너 또는 가상머신에서 빌드를 실행
  • 쉬운 통합: GitHub 및 Bitbucket과의 쉬운 통합을 제공
  • 병렬 처리: 작업을 병렬로 처리하여 빌드 시간을 단축
  • 빠른 빌드 속도, 사용의 용이성, 강력한 병렬 처리 가능

 

한 팀만 쓰기에는 조금 과한면이 있고 여러 팀이 사용해야 한다면 효율적인 방안이 될 수 있을 것 같다.


Travis CI

Travis CI는 Github 프로젝트에 쉽게 통합되는 CI 서비스로, 오픈 소스 프로젝트에 널리 사용한다.

 

[주요 특징]

  • GitHub와의 긴밀한 통합: GitHub 저장소와의 간편한 연동
  • YAML 파일을 통한 설정: travis.yml 파일을 통해 빌드 환경 및 스크립트를 정의
  • 다양한 언어 지원: 여러 프로그래밍 언어에 대한 빌드 환경을 지원
  • 간단한 설정, 다양한 언어 지원, 오픈 소스 프로젝트에 대한 무료 사용

 

 

 

 


 

 

 

// Circle CI, Travis CI는 처음 들어보는 도구였다. 이런것도 있었구나

 

반응형

'AI > MLOps' 카테고리의 다른 글

[HTTP & REST API ] 서버통신이론  (0) 2024.11.25
[Jenkins] CI/CD 실습  (0) 2024.11.22
[Workflow] Airflow Workflow Management 실습  (0) 2024.11.16
[Workflow] Workflow Management 이론  (0) 2024.11.15
[쿠버네티스] Orchestrator 실습  (0) 2024.11.14

댓글