CI/CD 란? 

소프트웨어 개발 과정을 자동화하여 개발의 효율성과 신속성을 극대화하는 방법론

 

지속적통합(CI): 개발자들이 코드를 주기적으로 메인 레포지토리에 병합하여(코드 충돌 최소화) 자동으로 빌드 및 테스트하는 과정

지속적배포(CD): CI 과정을 넘어 빌드 및 테스트를 거친 코드 변경사항이 운영환경에 배포하는 과정

 

CI/CD의 중요성

개발주기를 단축하고, 소프트웨어 품질을 향상시키며, 사용자 만족도 증가

코드의 변경사항을 자동으로, 즉각적으로 현재 운영중인 서비스에 반영할 수 있게 함

잠재적인 문제를 조기에 발견하게 함

 

CI/CD를 위한 툴 - Github Actions

Github actions는 Github 리포지토리의 이벤트에 반응하여 워크플로우를 자동으로 실행

코드 푸시 or 풀 리퀘스트 -> 빌드, 테스트, 배포 등 자동 실행

 

코드 버전 관리 툴 github과 긴밀하게 연결되어 있으므로, 간편하게 사용할 수 있음

 

 

도커(docker)란?

도커는 애플리케이션을 컨테이너(container)라는 격리된 환경에서 실행할 수 있도록 해주는 오픈 소스 가상화 기술

가상화 기술은 이전부터 사용했지만(Virtual Machine 등), docker의 장점이 있다.

 

격리 시켜야 하는 이유?

하나의 물리적 시스템 안에서 여러 애플리케이션을 구동하면, 충돌이 일어나거나 관리 어려움(하나의 애플리케이션의 에러로 다른 시스템까지 영향)

 

배포 환경을 옮길 때에도 서버에 이전 서버와 같이 모든 환경 세팅을 새로 해야하는 번거러움 존재(도커로 이식성 증가)

 

도커 vs Virtual Machine(VM, 가상머신)

 

오른쪽 VM의 경우, 격리시키고자 하는 App을 위해 게스트 OS를 각각 올려 리소스를 할당한다.

그러나, 얼마만큼의 리소스를 할당할 것인지 미리 정의해야하고, 그로 인해 낭비되는 리소스 존재 가능성이 있다.

 

왼쪽 docker container를 적용하면, 하나의 OS를 docker를 통해 App 들이 공유하게 되어 리소스를 효율적으로 활용 가능

게스트 OS를 사용하지 않아 가볍고 쉬움.

 

도커 주요 개념 및 특징

  • 컨테이너: 애플리케이션과 그 종속성을 포함하는 실행 가능한 소프트웨어 패키지. 애플리케이션이 동작하는 환경을 코드로 정의
  • 이미지: 컨테이너 실행에 필요한 파일과 설정 값 등을 포함하는 불변의 템플릿. 코드, 런타임, 라이브러리, 환경변수 등
  • 도커 허브: 도커 이미지를 공유할 수 있는 중앙 저장소
  • 도커 파일: 컨테이너 이미지를 빌드하기 위한 명세서

 

도커가 쓰이는 분야

  • 지속적인 통합 및 배포(CI/CD), 데브옵스(DevOps)
  • 애플리케이션 실행 환경 통일
  • 딥러닝 환경 설정과 고정, 통일
  • 마이크로서비스 아키텍처의 독립 개발, 배포

'AI 인공지능 > MLOps' 카테고리의 다른 글

[CI/CD] CI/CD 기초 개념  (0) 2024.04.09
[Wandb] YOLOv8 & Wandb sweep 함께 사용하기  (0) 2024.03.26

+ Recent posts