티스토리 뷰

반응형

AI 서비스 운영 자동화 - CI/CD 파이프라인 구축

AI 서비스가 안정적으로 운영되려면 자동 배포 및 지속적인 업데이트가 필요합니다.
이번 글에서는 FastAPI + CrewAI + Ollama 기반 AI 서비스를 CI/CD 파이프라인을 활용하여
자동화하고, 효율적으로 운영하는 방법
을 소개합니다.


🔹 1. CI/CD 파이프라인이 필요한 이유

📌 CI/CD(Continuous Integration / Continuous Deployment)란?

CI/CD는 코드 변경 사항을 자동으로 빌드, 테스트, 배포하는 프로세스입니다.
이를 활용하면 AI 서비스의 운영 속도를 높이고, 오류 발생을 최소화할 수 있습니다.

CI/CD 도입의 장점

장점 설명

자동화된 배포 AI 서비스 업데이트가 자동으로 배포됨
테스트 자동화 AI 모델 및 API의 동작을 사전에 검증 가능
빠른 롤백 가능 문제가 발생하면 즉시 이전 버전으로 되돌릴 수 있음
개발 생산성 향상 배포 프로세스를 자동화하여 운영 부담 감소

CI/CD 적용 후 AI 서비스 운영 흐름

1️⃣ 개발자가 코드를 GitHub에 Push  
       ⬇  
2️⃣ GitHub Actions가 자동으로 코드 빌드 및 테스트 실행  
       ⬇  
3️⃣ 문제가 없으면 Docker 이미지 생성 후 배포  
       ⬇  
4️⃣ AI API 서버가 자동으로 업데이트  

💡 목표: AI 서비스의 배포 및 운영을 자동화하여 안정성을 높이고, 효율적으로 관리


🔹 2. GitHub Actions을 활용한 CI/CD 구축

반응형

1. GitHub Actions 설정 파일 작성

GitHub Actions는 GitHub에 Push될 때 자동으로 테스트 및 배포를 실행하는 CI/CD 도구입니다.

🔹 GitHub Actions 설정 파일 생성 (.github/workflows/deploy.yml)

name: Deploy AI Service

on:
  push:
    branches:
      - main  # main 브랜치에 Push될 때 실행

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: 코드 체크아웃
        uses: actions/checkout@v3

      - name: Python 환경 설정
        uses: actions/setup-python@v4
        with:
          python-version: "3.12"

      - name: 의존성 설치
        run: pip install -r requirements.txt

      - name: 유닛 테스트 실행
        run: pytest tests/

      - name: Docker 이미지 빌드
        run: docker build -t my-ai-service .

      - name: Docker Hub 로그인
        run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin

      - name: Docker 이미지 푸시
        run: docker tag my-ai-service mydockerhub/my-ai-service:latest && docker push mydockerhub/my-ai-service:latest

      - name: 배포 서버 업데이트 (SSH)
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            docker pull mydockerhub/my-ai-service:latest
            docker stop ai-service || true
            docker rm ai-service || true
            docker run -d --name ai-service -p 8000:8000 mydockerhub/my-ai-service:latest

GitHub Actions CI/CD 실행 흐름

  1. 코드 Push → 자동으로 빌드 & 테스트 실행
  2. Docker 이미지 빌드 후 Docker Hub에 업로드
  3. 서버에서 최신 Docker 이미지 다운로드 및 재배포

CI/CD 설정 후 기대 효과

  • AI 서비스 배포가 자동화되어 운영 부담 감소
  • 버그가 발생하면 즉시 수정 및 재배포 가능

🔹 3. Docker 기반 AI 서비스 자동 배포

1. Docker 컨테이너로 AI 서비스 실행

AI 서비스를 Docker 컨테이너로 배포하면 환경에 관계없이 동일한 실행 환경 유지 가능

🔹 Dockerfile 설정 (Dockerfile)

# Python 3.12 기반 이미지 사용
FROM python:3.12

WORKDIR /app

# 의존성 설치
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 코드 복사
COPY . .

# FastAPI 서버 실행
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Docker 컨테이너 실행 명령어

docker build -t my-ai-service .
docker run -d --name ai-service -p 8000:8000 my-ai-service

Docker Compose를 활용한 다중 컨테이너 관리 (docker-compose.yml)

version: "3.8"

services:
  ai-service:
    image: mydockerhub/my-ai-service:latest
    ports:
      - "8000:8000"
    restart: always

배포 후 실행 테스트

curl http://127.0.0.1:8000/docs

🔹 4. AI 서비스 모니터링 및 장애 대응

1. Prometheus + Grafana를 활용한 AI 서비스 모니터링

AI 서비스의 성능 및 트래픽을 실시간으로 모니터링하기 위해 Prometheus + Grafana를 활용합니다.

🔹 Prometheus 실행 명령어

docker run -d --name prometheus -p 9090:9090 prom/prometheus

🔹 FastAPI에 Prometheus 메트릭 추가

pip install prometheus_client
from fastapi import FastAPI
from prometheus_client import Counter, generate_latest

app = FastAPI()
REQUEST_COUNT = Counter("api_requests", "Number of API requests received")

@app.get("/metrics/")
def get_metrics():
    return generate_latest()

Grafana 대시보드를 활용하여 AI 서비스 모니터링 가능


2. 장애 발생 시 자동 롤백 설정

배포 후 장애가 발생하면 자동으로 이전 버전으로 롤백하는 설정이 필요합니다.

🔹 GitHub Actions에서 롤백 스크립트 추가

- name: 장애 발생 시 롤백
  if: failure()
  run: |
    docker pull mydockerhub/my-ai-service:previous
    docker stop ai-service || true
    docker rm ai-service || true
    docker run -d --name ai-service -p 8000:8000 mydockerhub/my-ai-service:previous

자동 롤백 적용 후 효과

  • 배포 후 오류 발생 시 즉시 복구 가능
  • 서비스 다운타임 최소화

🎯 5. AI 서비스 자동화 및 운영 정리

GitHub Actions을 활용한 CI/CD 구축 → AI 서비스 자동 배포 가능
Docker 컨테이너로 운영하여 실행 환경 통일
Prometheus + Grafana를 활용한 AI 서비스 실시간 모니터링 적용
장애 발생 시 자동 롤백 설정으로 서비스 안정성 향상


🚀 다음 글 미리보기:

👉 "AI 서비스의 미래 - AI 산업 전망 및 새로운 트렌드"
👉 AI 산업의 최신 트렌드와 향후 전망을 분석해봅니다.


 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함
반응형