서비스인프라 확장성과 모니터링설계 - 100-hours-a-week/3-team-ssammu-wiki GitHub Wiki

AI 서비스 인프라 아키텍처 및 모니터링 설계 문서

1. 인프라 개요 및 아키텍처 다이어그램

AI 기반 이력서 분석 및 추천 서비스를 위한 인프라 아키텍처는 다음과 같이 구성됨:

1.1 인프라 구성 개요

  • 클라우드 플랫폼: Google Cloud Platform (GCP)
  • VPC 네트워크: VPC-SSMU-AI (CIDR: 10.0.0.0/16) 내 모든 컴포넌트 구성
  • 이원화 구조: API 서버와 LLM 서버를 분리하여 각 역할 최적화 및 독립적 확장성 확보
  • 컨테이너화: 주요 서비스(FastAPI, ChromaDB)는 Docker 컨테이너로 패키징하여 유연한 배포 및 확장 가능
  • 정기 데이터 업데이트: Cloud Scheduler를 통해 기업 뉴스 및 공시 데이터를 주기적으로 수집 및 업데이트
  • 모니터링 및 로깅 체계 구축: Cloud Logging과 Cloud Monitoring을 통한 실시간 상태 추적 및 경고 설정

1.2 인프라 상세 아키텍처

컴포넌트 설명
VM1 (e2-medium) FastAPI 서버, LangChain 기반 자연어 체인, SentenceTransformer 임베딩 모델, ChromaDB(벡터DB) 구동
VM2 (g2-standard-8) vLLM 기반 Mistral-7B-instruct 모델 서빙 (GPU 인스턴스)
Cloud Scheduler 주기적으로 뉴스/공시 수집 및 요약 파이프라인 트리거
Cloud Storage 수집된 데이터 및 백업 파일 저장소
Cloud Logging & Monitoring API 서버 및 모델 서버 로그 수집 및 주요 성능 지표 대시보드화

1.3 아키텍처 다이어그램

AI인프라_모니터링_설계2 drawio

  • GCP Compute Engine e2-medium (VM1)
    • Docker 컨테이너로 FastAPI, LangChain, ChromaDB 서비스를 각각 실행
    • 사용자의 이력서 분석 요청, 데이터 검색 및 임베딩 처리 담당
  • GCP Compute Engine g2-standard-8 (VM2)
    • vLLM 서버를 통해 Mistral-7B LLM 모델 추론 제공
    • FastAPI 서버에서 전달받은 요청을 빠르게 처리하고 결과 반환
  • Cloud Scheduler
    • 매주 자동으로 뉴스 및 공시 데이터를 수집하여 ChromaDB에 업데이트
    • 파이프라인 스크립트를 주기적으로 실행
  • Cloud Logging / Monitoring
    • 모든 서버의 로그, 오류, 시스템 자원(CPU, RAM, GPU) 상태를 실시간 수집
    • 알림 및 대시보드를 통해 서비스 상태를 지속적으로 모니터링
  • VPC-SSMU-AI (10.0.0.0/16)
    • 모든 VM 및 클라우드 리소스가 내부 VPC 네트워크로 연결되어 높은 보안성과 통신 속도 확보

1.4 주요 특징 정리

  • 확장성: VM1과 VM2를 별도로 관리하여 필요 시 독립적으로 수평 확장 가능
  • 안정성: 장애 발생 시 각 인스턴스 단위로 빠른 복구 가능
  • 효율성: GPU 리소스는 모델 추론에 집중, CPU 인스턴스는 API 처리 및 DB 관리에 최적화
  • 모듈화: 각 컴포넌트가 독립적이면서도 유기적으로 통신하여 유지보수 용이
  • 모니터링: Cloud Monitoring을 통한 실시간 성능 지표 수집 및 자동화된 알림 시스템 구축

2. 주요 인프라 구성 및 기술 스택

AI 기반 이력서 분석 및 추천 서비스를 위해 구성된 인프라의 각 컴포넌트는 다음과 같음.

구성 요소 기술 스택 역할 및 설명
API 서버 FastAPI, LangChain, ChromaDB 사용자 요청을 받아 LLM 서버 호출, Embedding 생성, ChromaDB 조회 등 주요 비즈니스 로직을 처리
LLM 추론 서버 vLLM, Mistral-7B-Instruct-v0.3 대규모 언어 모델을 고속으로 추론하는 전용 서버 (GPU 사용), OpenAI API 호환 인터페이스 제공
벡터 저장소 ChromaDB 의미 기반 검색(semantic search)을 위해 생성된 임베딩 벡터를 저장하고 검색하는 역할
임베딩 생성 모델 SentenceTransformer (snunlp/KR-SBERT-V40K-klueNLI-augSTS) 뉴스 및 공시 데이터, 사용자 입력을 벡터로 변환하여 ChromaDB에 저장
정기 수집 파이프라인 Cloud Scheduler, Cloud Functions (또는 Python 스케줄러) 기업 뉴스/공시 데이터 수집 및 업데이트를 주기적으로 자동 실행
모니터링 및 로깅 Google Cloud Logging, Google Cloud Monitoring (또는 Prometheus+Grafana) 인프라 상태(서버 성능, GPU 사용률, 에러율 등) 및 어플리케이션 로그를 수집하고, 대시보드 및 알림 시스템 구성

각 구성 요소 설명

  1. FastAPI + LangChain + ChromaDB
    • 사용자 요청을 받아 텍스트 분석, 벡터 임베딩 생성, 벡터 검색을 수행
    • LangChain을 활용하여 LLM 호출, 프롬프트 템플릿, 체인 구성 자동화
    • ChromaDB를 이용해 벡터 기반 의미 검색(semantic search) 구현
  2. vLLM 서버 (Mistral-7B-Instruct-v0.3)
    • 대규모 언어 모델을 고속 서빙
    • GPU를 최적 활용 (GPU Memory Utilization: 0.9 설정)
    • FastAPI 서버가 내부적으로 HTTP 요청을 보내 모델 추론 결과를 받아옴
    • 서버당 다수의 동시 요청(concurrent requests) 처리 가능
  3. ChromaDB
    • News / IR 공시 등 다양한 문서의 임베딩을 저장
    • 문맥 기반 질의-응답(semantic retrieval)을 지원
    • 확장 시 클러스터 모드 또는 외부 벡터 DB로 이전 고려 가능 (예: Pinecone, Weaviate)
  4. Embedding Model
    • 문서나 사용자 입력을 768차원 벡터로 변환
    • 한국어 성능에 최적화된 KR-SBERT 모델 사용
    • 향후 상황에 따라 더 고성능 모델로 교체 가능 (예: E5-large, KLUE BERT)
  5. 데이터 수집 자동화
    • Cloud Scheduler를 통해 주기적 트리거 설정
    • Cloud Functions 또는 VM 내 스케줄링 코드로 뉴스/공시 크롤링 및 DB 업데이트 자동화
  6. 로깅 및 모니터링
    • FastAPI, vLLM 서버의 로그를 Cloud Logging에 자동 수집
    • 주요 메트릭(응답속도, 에러율, GPU 사용률)을 Cloud Monitoring 대시보드로 시각화
    • 이상치 발생 시 알림(Notification)을 Slack이나 이메일로 전송

3. 배포 및 확장 전략

AI 기반 이력서 분석 및 추천 서비스를 안정적이고 확장 가능하게 운영하기 위해, 다음과 같은 배포 및 확장 전략을 채택함.

3.1 현재 배포 구조

  • VM1 (API 서버):

    FastAPI + LangChain + ChromaDB 기반으로 사용자 요청을 처리하고, 임베딩 및 검색을 수행함.

    VM1은 CPU 중심의 부하를 받으며, 필요 시 수평 확장 가능하도록 설계함.

  • VM2 (LLM 추론 서버):

    vLLM 기반의 Mistral-7B-Instruct 모델을 GPU 서버에 탑재하여 고속 추론 제공.

    VM2는 GPU 부하를 모니터링하여 추론 서버 수를 조정할 수 있도록 구성 예정.

  • 네트워크 구성:

    모든 VM은 GCP VPC (VPC-SSMU-AI, 10.0.0.0/16) 하위에 위치하여 보안성과 내부 통신 최적화 확보.

3.2 수평 확장 설계

  • FastAPI 서버 (VM1):
    • VM1 인스턴스를 컨테이너(Docker) 기반으로 패키징
    • 필요에 따라 동일 컨테이너를 복수 배포하여 API 서버 풀을 구성
    • 내부 또는 외부 로드밸런서(GCP Load Balancer)를 사용해 요청 분산 처리
    • 향후 Kubernetes(GKE) 기반 오토스케일링(HPA) 적용 고려
  • vLLM 서버 (VM2):
    • GPU 사용량 및 응답 지연 시간(p95 latency)을 모니터링하여 GPU 인스턴스 수평 확장 준비
    • 동일한 모델을 서빙하는 여러 vLLM 서버 인스턴스를 생성하고, API Gateway를 통해 요청 분산
    • Auto Scaling 그룹 또는 GKE Node Autoscaler 활용 가능

3.3 배포 자동화 및 운영 편의성

  • CI/CD 적용 가능성:
    • GitHub Actions + GCP Artifact Registry 조합으로 빌드-배포 자동화
    • 새로운 코드 커밋 시 API 서버 자동 배포 가능
  • 배포 버전 관리:
    • FastAPI 서버는 컨테이너 이미지 버전 태깅
    • vLLM 서버도 모델 버전 관리 체계 도입 (모델 교체/업그레이드 대응)
  • 장애 대응 설계:
    • VM/Pod 장애 발생 시 자동 재시작 설정
    • GPU 부하가 급증할 경우 알림 기반 수동 스케일업 가능

4. 모니터링 체계 및 대시보드 구성

주요 모니터링 지표

구분 지표 설명
성능 평균 응답 시간 (p50) / 지연 응답 시간 (p95) 모델 추론 속도 및 지연 추적
성능 TPS (Transactions Per Second) 초당 처리 요청 수
안정성 에러율 (5xx) 추론 실패 비율 (서버 에러 감지)
자원 GPU 사용률 (%) LLM 서버 부하 모니터링
자원 RAM / CPU 사용량 시스템 자원 과부하 감지
운영 컨테이너 상태 (FastAPI, vLLM) 서비스 인스턴스 정상 작동 여부
스토리지 디스크 IO DB 접근 병목 확인 (ChromaDB 읽기/쓰기 속도 등)

시각화 구성 (Cloud Monitoring 기준)

  • 요약 탭 (Dashboard Main View)

    • 평균 응답 시간 (p50) 그래프
    • 지연 응답 (p95) 그래프
    • TPS(초당 요청 수) 그래프
    • 에러율(5xx 비율) 그래프

    ➡️ 서비스 품질 전체 상태를 한눈에 파악할 수 있도록 구성.

  • GPU/서버 상태 모니터링

    • GPU Memory Usage (%)
    • GPU Compute Utilization (%)
    • GPU Temperature (선택)
    • CPU, RAM, Disk IO 그래프

    ➡️ 모델 서버의 부하/과열/리소스 소진을 실시간 감시.

  • 실시간 추론 상태 모니터링

    • 최근 1분/5분 추론 요청 수
    • 평균 요청당 입력 토큰 수
    • 요청당 추론 시간
    • LLM 오류 로그 (예외 케이스 기록)

    ➡️ 특정 요청에서 지연 발생 여부를 신속하게 확인.


5. 로그 수집 및 알림 시스템

로그 수집 방법

1) 서버 로그 수집 (FastAPI + vLLM)

  • FastAPI:
    • logging 라이브러리를 활용하여 요청/응답/오류 로그를 표준 포맷(JSON 등)으로 기록
    • 주요 로그 필드:
      • 요청 시간, 경로, 요청자 IP, 입력 길이, 응답 시간, 응답 상태 코드
  • vLLM (LLM 추론 서버):
    • 추론 요청/응답 로그 + 에러 로그를 별도 파일 또는 표준 출력으로 기록
    • 주요 로그 필드:
      • 모델 호출 입력 길이, 출력 길이, 추론 소요 시간, 실패 여부

2) Cloud Logging 연동

  • FastAPI 서버와 vLLM 추론 서버 인스턴스에 Cloud Logging Agent를 설치하여 표준 로그 파일을 실시간으로 GCP Cloud Logging으로 전송함.
  • 각 서버의 주요 로그(예: /var/log/app.log 또는 커스텀 경로)를 Cloud Logging에 업로드하도록 설정하여, 운영 중 발생하는 요청, 응답, 에러 로그를 체계적으로 수집함.
  • 업로드된 로그는 다음 기준으로 관리함:
    • 요청, 응답, 에러 등을 구분하는 구분 태그(label) 추가
    • 로그 필터링 및 검색 기능을 통해 특정 이벤트(예: 에러 발생, 처리 지연 등) 신속히 파악 가능
  • 이를 기반으로 Log-based Metrics를 생성하여, Cloud Monitoring 대시보드 및 알림 트리거(Alerts) 설정에 활용할 수 있도록 준비함.

알림 설정

  • Cloud Monitoring을 사용해 수집된 Log-based Metrics 및 시스템 리소스 지표를 기반으로 알림(Alert)을 설정함.

    알림 조건 설명 조치
    GPU 사용률 > 85% 5분 이상 지속 LLM 서버(vLLM) 과부하 감지 Slack으로 긴급 알림 전송
    API 서버 응답시간 p95 > 5초 초과 FastAPI 서버 응답 지연 감지 Slack 알림 + 서버 스케일링 검토
    추론 실패율(5xx 에러율) > 3% 초과 vLLM 서버 오류 급증 감지 이메일 알림 + 원인 분석 트리거
    디스크 사용량 > 80% 스토리지 부족 위험 감지 Slack 알림 + 스토리지 증설 검토

6. 향후 확장성 및 운영 안정화 전략

AI 기반 이력서 분석 및 추천 서비스는 초기 소규모 트래픽을 대상으로 하지만, 사용자 수 증가 및 기능 확장에 대비하여 다음과 같은 확장성과 안정성 전략을 마련함.

1) API 서버(FastAPI + LangChain) 확장 전략

항목 설명
배포 구조 FastAPI 서버를 Docker 컨테이너화하여 관리
수평 확장 GCP Instance Group 또는 GKE로 이전 후, Pod/VM 수 자동 조정(HPA)
로드밸런서 HTTP(S) Load Balancer를 구성하여 API 서버 인스턴스 간 트래픽 분산
장애 대응 헬스체크 실패 시 자동 재기동 또는 교체 (Autohealing 설정)

2) LLM 서버(vLLM) 확장 전략

항목 설명
배포 구조 vLLM 서버도 컨테이너화하여 관리
GPU 확장 GCP Compute Engine + GPU Instance Template 구성
수평 확장 GPU 부하(메모리 사용량 등)에 따라 vLLM 서버를 자동 증설/축소
예비 서버 대기 초고속 부팅을 위한 Preemptible GPU 인스턴스 활용 가능성 검토
  • 대규모 추론 요청 대비를 위해 GPU 모니터링 기반 오토스케일링 트리거를 준비
  • LLM 서버는 특히 GPU 메모리 사용률 기준으로 스케일링하는 것이 핵심

3) 정기 데이터 수집 및 파이프라인 안정화

항목 설명
비동기화 유저 트래픽과 데이터 수집 트래픽 완전 분리
장애 복구 수집 실패 시 재시도 로직 및 Alert 설정
관리 자동화 Cloud Scheduler, Pub/Sub, Cloud Functions 조합으로 파이프라인 구성

4) 보안 및 접근 제어

항목 설명
네트워크 보안 모든 인스턴스는 Private Subnet (VPC-SSMU-AI) 내부에서 통신
IAM 역할 관리 서비스별 최소 권한 원칙 적용 (Principle of Least Privilege)
접근 제한 서버 접근은 내부 관리용 IP 또는 VPN을 통해서만 허용