About me
home
Portfolio
home

DevOps, CI/CD

생성일
2023/05/13
작성자
태그
SageMaker
DevOps와 CI/CD는 소프트웨어 개발 및 배포 과정을 자동화하고, 효율화하는 데 중점을 둔 개념이다.
1.
DevOps DevOps는 "개발(Development)"과 "운영(Operations)"의 합성어다. 이는 소프트웨어 개발에서 개발 팀과 운영 팀 사이의 의사소통과 협력을 개선하려는 문화, 움직임, 철학을 의미한다. 전통적으로, 이 두 팀은 서로 다른 목표와 작업 방식으로 인해 격리되어 있었고, 이로 인해 소프트웨어 배포에 문제가 발생하기도 했다.
DevOps의 목표는 이 두 팀 간의 격차를 줄이고, 더 빠르고 효율적으로 소프트웨어를 배포하는 것이다. 이를 위해, DevOps는 계속적인 통합(CI), 계속적인 배포(CD), 자동화, 모니터링, 반복적인 피드백 루프와 같은 일련의 기술적인 방법과 접근법을 활용한다.
2.
CI/CD CI/CD는 "Continuous Integration(지속적 통합)"와 "Continuous Deployment(지속적 배포)"를 의미한다. 이는 소프트웨어 개발의 주요 실천법 중 하나로, 코드 변경 사항을 자주 및 지속적으로 메인 브랜치에 통합하고, 애플리케이션을 고객에게 자동으로 배포하는 프로세스를 가리킨다.
Continuous Integration(CI): 개발자들은 자신들의 변경 사항을 공유 브랜치에 정기적으로 커밋하고, 이 변경 사항을 빌드하고 테스트하는 프로세스이다. 이렇게 하면 코드 베이스에 대한 변경 사항을 빠르게 감지하고, 문제가 발생하면 즉시 수정할 수 있다.
Continuous Deployment(CD): CI의 자연스러운 연장선으로, 통합과 테스트가 완료된 코드를 자동으로 프로덕션 환경에 배포하는 과정이다. 이를 통해 신규 릴리즈를 더 자주하고, 오류를 더 빨리 찾아 수정하며, 고객에게 더 빨리 가치를 제공할 수 있다.

1. Jenkins (설치형)

설치형이므로 서비스가 돌아갈 서버(윈도우,맥,리눅스)에 직접 다운받고 깔아서 사용해야 함
젠킨스를 깔아서 실행하면 크롬 등의 브라우저로 접속할 수 있는 웹사이트가 하나 열린다.
서버의 IP 주소에 젠킨스 기본 포트 8080으로 접속하면 CI/CD 작업 콘솔로 접속.
젠킨스에 새 자동화 작업(매크로)를 생성 → GitHub과 연동 → 소스코드가 PUSH될 때마다 젠킨스에서 이 서버로 코드들을 자동으로 젠킨스 전용 폴더로 다운로드

2. Travis CI, Circle CI, Team City(클라우드형)

(Travis CI, Circle CI, Team City) 클라우드 공간에서 자동화 작업을 설정

3. GitHub Actions(저장소형)

GitHub Actions란?

GitHub Actions는 GitHub에서 호스팅하는 CI/CD 서비스이다. 이를 통해 개발자들은 자신들의 소프트웨어 프로젝트와 함께 작동하는 자동화된 프로세스를 만들고 실행할 수 있다. 이를 통해 더 빠르고 안정적인 소프트웨어 배포를 할 수 있다.

[GitHub Actions 이해하기]

GitHub Actions는 이벤트 기반의 시스템이므로, 저장소에 특정 이벤트가 발생하면 (예를 들어, 코드가 메인 브랜치에 푸시되거나, 풀 리퀘스트가 생성되는 등) 해당 이벤트에 연결된 워크플로우가 자동으로 실행된다.

GitHub Actions 사용 방법

1. 작업 정의하기

GitHub Actions를 사용하려면 먼저 작업을 정의해야 한다. 이를 위해 YAML 파일을 작성한다. YAML 파일에서는 작업 이름, 실행할 스크립트 등을 정의한다.

2. YAML 파일 커밋하기

작업을 정의한 YAML 파일을 GitHub 저장소에 커밋한다. 이를 통해 GitHub Actions가 작업을 읽어들일 수 있다.

3. 작업 실행하기

작업을 실행하려면, GitHub 저장소에서 Actions 탭으로 이동한다. 여기서 작업을 선택하고, 실행할 브랜치를 선택한다. GitHub Actions는 이후 작업을 자동으로 실행한다.

핵심 요소

[Events]
GitHub Actions은 이벤트 기반으로 동작한다. 이벤트는 레포지토리 내에서 발생하는 특정 활동을 나타내며, 예를 들어, 푸시, 풀 리퀘스트 생성, 릴리즈 생성 등이 있다. 이런 이벤트가 발생하면, GitHub은 워크플로우를 실행한다.
[Workflows]
워크플로우는 레포지토리 내에서 GitHub Actions가 어떻게 동작할지를 정의하는 YAML 파일이다. 워크플로우는 어떤 이벤트에 의해 트리거될지, 어떤 작업을 수행할지 등을 정의하며, 이 작업들은 일련의 스텝으로 이루어져 있다.
[Jobs]
워크플로우 내에서 Jobs는 일련의 단계(step)를 그룹화하는 단위이다. Jobs는 병렬로, 순차적으로, 또는 다른 Job의 결과에 따라 실행될 수 있다. 각 Job은 서로 다른 'Runner'에서 동작하며, 그 결과는 독립적으로 보고된다.
[Actions]
Actions은 워크플로우에서 실행되는 개별 작업이다. 이는 스크립트 실행, 빌드 도구 실행, API 호출 등을 포함할 수 있다. Actions은 사용자 정의할 수 있으며, 또는 GitHub Actions Marketplace에서 다른 사용자가 만든 Actions을 사용할 수도 있다.
[Runner]
Runner는 워크플로우의 Jobs를 실행하는 서버 환경이다. Runner는 워크플로우를 실행하고, 완료되면 결과를 GitHub에 보고한다.
Github Action은 event, job, step을 정의하기 위해 YAML 파일을 사용한다. workflow를 구성할 레포지토리의 .github/workflows 디렉토리에서 {name}.yml 형태로 파일을 생성하면 된다.

MLOps(Machine Learning Operations):기계학습 모델의 생애주기를 관리하는 방법론

MLOps는 통합, 자동화, 지속적인 모니터링 및 배포와 같은 DevOps의 핵심 원칙을 기계 학습 환경에 적용한다. 기계 학습 모델의 전체 수명 주기를 관리하고 최적화해주는 기능을 한다.
특장점:
1.MLOps를 사용하면 모델의 개발, 배포, 운영, 유지보수의 전 과정을 자동화할 수 있음
2.모델의 성능을 모니터링하고, 새롭게 유입되는 데이터를 사용하여 모델을 지속적으로 개선할 수 있음
이를 통해 개발자는 생산성을 높이고 시간과 비용을 절감
대표적인 MLOps 라이브러리로 mlflow, Kubeflow, AWS SageMaker 등이 있고 이러한 라이브러리는 MLOps 워크플로우를 간소화하고 자동화하는데 도움이 되는 다양한 기능과 모듈들을 제공한다.