LLM & Generative AI/RAG in Practice

[LangChain RAG 구축 시리즈 Ep.30] 📦 전체 시스템 구조 정리 및 운영 환경 배포 전략

ygtoken 2025. 4. 5. 22:48
728x90

지금까지 우리는 LangChain 기반 RAG 시스템을 구축하며,
문서 로딩부터 임베딩, 검색, GPT 응답 생성, 대화 메모리, 요약 전략까지 모두 다뤘습니다.

이제는 이 기능들을 하나로 통합하여:

  • 📦 운영 가능한 RAG API 서버 구성
  • 🐳 Docker로 컨테이너화
  • 🧪 개발 → 운영 환경 이관을 위한 설정 전략까지 정리합니다.

실무 배포를 고려한 구조로, 팀에서 공유 가능한 RAG 플랫폼을 구축하는 것이 목표입니다.


🎯 목표

  • RAG 서버 기능 통합 및 구조 정리
  • Dockerfile 작성 및 실행
  • 운영 환경 배포 전략 (예: 포트 구성, API Key 관리, 볼륨 마운트)

🗂️ 전체 프로젝트 구조 (예시)

rag-iceberg/
├── chroma_db/                        # 벡터 DB 저장 디렉토리
├── docs/                             # 원본 문서 (Iceberg 메타데이터 등)
├── src/
│   ├── rag_server.py                 # FastAPI 메인 서버
│   ├── conversational_chain.py       # 대화형 체인 로직
│   ├── table_classifier.py           # GPT 기반 테이블 분류
│   ├── utils.py                      # 유틸 함수
│   └── auth.py                       # API 인증 미들웨어
├── requirements.txt                  # 패키지 의존성
├── Dockerfile                        # Docker 컨테이너 정의
└── README.md

⚙️ Step 1. Dockerfile 작성

# 베이스 이미지: Python + 필요한 빌드 도구 포함
FROM python:3.10-slim

# 작업 디렉토리 설정
WORKDIR /app

# 로컬 파일 복사
COPY . /app

# 필수 패키지 설치
RUN pip install --upgrade pip && \
    pip install -r requirements.txt

# FastAPI 앱 실행
CMD ["uvicorn", "src.rag_server:app", "--host", "0.0.0.0", "--port", "8000"]

⚙️ Step 2. requirements.txt 예시

fastapi
uvicorn
openai
langchain
chromadb
pydantic
tiktoken
python-dotenv
httpx

⚙️ Step 3. .env 설정 예시

OPENAI_API_KEY=sk-xxxxx
VALID_API_KEYS=my-secret-key

※ Python 내에서는 os.getenv()를 사용해 불러옵니다.
※ 민감 정보는 절대 Git에 커밋하지 않습니다!


🚀 Step 4. 로컬 Docker 실행

# 이미지 빌드
docker build -t rag-server .

# 컨테이너 실행
docker run -d -p 8000:8000 -v $(pwd)/chroma_db:/app/chroma_db rag-server

📎 운영 환경 고려사항 정리

항목 운영 전략 설명
API 인증 Authorization 헤더 기반, .env로 키 관리
포트 구성 8000 → 80, 리버스 프록시 구성 (예: Nginx)
TLS Nginx + certbot 또는 API Gateway 사용
문서 스토리지 S3 or NFS로 외부 볼륨 마운트
벡터 DB 위치 EBS or 마운트된 디스크로 데이터 지속성 확보
LLM 키 관리 .env 또는 Vault / Secret Manager 사용 권장
로깅 및 모니터링 FastAPI + Prometheus + Grafana 연동 가능

📎 요약 및 핵심 정리

  • 지금까지 구현한 모든 RAG 기능을 FastAPI 서버로 통합하고
  • Docker 컨테이너로 배포 가능한 형태로 구조화했습니다.
  • 운영 환경에서는 인증, 저장소, LLM 키 관리, TLS, 로그 구성 등 다양한 요소를 고려해야 합니다.
  • 이로써 LangChain 기반 RAG 시스템을 팀 단위로 실서비스에 활용할 수 있는 기반이 마련됩니다.
728x90