티스토리 뷰
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 실행 흐름
- 코드 Push → 자동으로 빌드 & 테스트 실행
- Docker 이미지 빌드 후 Docker Hub에 업로드
- 서버에서 최신 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 산업의 최신 트렌드와 향후 전망을 분석해봅니다.
'study > ai prompt' 카테고리의 다른 글
Z세대가 가장 선호하는 브랜드 TOP 10 (2025년 최신 트렌드 분석) (0) | 2025.03.29 |
---|---|
생성형 AI로 할 수 있는 일상 업무 자동화 5가지 (ChatGPT 실전 활용법) (1) | 2025.03.28 |
AI 보안 전략 - AI 서비스의 데이터 보호 및 보안 강화 (0) | 2025.03.20 |
AI 서비스 확장 - 대규모 사용자 트래픽을 처리하는 방법 (0) | 2025.03.20 |
AI 비즈니스 모델 - AI 서비스 수익화 전략 (0) | 2025.03.18 |
- Total
- Today
- Yesterday
- nextJS
- REACT
- JAX
- 딥러닝
- AI챗봇
- gatsbyjs
- SEO최적화
- seo 최적화 10개
- Python
- 프론트엔드
- 개발블로그
- PostgreSQL
- 프론트엔드면접
- flax
- CI/CD
- fastapi
- Ktor
- SEO 최적화
- 백엔드개발
- Prisma
- NestJS
- 웹개발
- nodejs
- Next.js
- Docker
- App Router
- llm
- kotlin
- rag
- 파이썬알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |