CI/CD 이론
참고강의: 10개의 프로젝트로 한 번에 끝내는 MLOps 파이프라인 구현 초격차 패키지 Online.
[목차]
- CI/CD란?
- Workflow Management와 무엇이 다른가?
- CI/CD 도구들
1. CI/CD란?
[CI/CD 란?]
CI와 CD는 각각 특정 단어의 줄임말이다.
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 |
댓글