[AI] 인프라 확장성 및 모니터링 설계 - 100-hours-a-week/21-iceT-wiki GitHub Wiki
아키텍쳐 다이어그램
사용한 인프라 기술 및 서비스
계층 | 서비스/기술 | 용도 및 역할 |
---|---|---|
네트워크 | GCP Network Load Balancer (L4) | TCP 443 요청 분산·헬스체크 |
컴퓨트 | GCE Managed Instance Group (MIG) | NVIDIA L4 GPU 인스턴스 풀로 AI 모델 서빙 |
스토리지 | Cloud Storage | 모델 가중치 및 정적 파일(hosted weights) 보관 |
캐시·세션 | — | (DB 미사용 환경이므로 별도 캐시 없음) |
로깅 | Cloud Logging | VM 애플리케이션·시스템 로그 중앙 수집 |
모니터링 수집 | Node Exporter | 호스트(CPU/Memory/Disk/Network) 메트릭 노출 (포트9100) |
DCGM Exporter | GPU 사용률·메모리·온도 메트릭 노출 (포트9400) | |
App Exporter (Prometheus Client) | FastAPI 응답 시간·요청 카운터·에러 카운터 등 (/metrics:8000) | |
모니터링·저장 | Prometheus | 메트릭 스크랩·시계열 저장·Alert 룰 평가 |
경고·알림 | Alertmanager | 경고 그룹화·억제·라우팅 후 Slack/Email 알림 전송 |
시각화·대시보드 | Grafana | Prometheus 메트릭 & Cloud Logging 로그 대시보드 구성 |
CI/CD | – | 별도 자동화 미구축 |
모니터링 대상 지표 목록 및 수집·시각화 방법
지표 | 설명 | 수집 방법 | 시각화/알림 |
---|---|---|---|
응답 시간 (p50, p95, p99) | API 호출 지연 시간 | App Exporter → Prometheus | Grafana 패널, p99 > 2s 시 경고 설정 |
처리량 (RPS) | 초당 처리 요청 수 | App Exporter → Prometheus | Grafana 타임라인 차트 |
에러율 (4xx/5xx 비율) | 실패 응답(HTTP 4xx/5xx) 비율 | App Exporter → Prometheus | Grafana, 에러율 > 1% 시 알림 |
CPU 사용률 | 호스트 전체 CPU 사용률 | Node Exporter → Prometheus | Grafana, > 80% 시 알림 |
메모리 사용률 | 호스트 메모리 여유량 | Node Exporter → Prometheus | Grafana |
디스크 I/O | 읽기/쓰기 처리량 | Node Exporter → Prometheus | Grafana |
네트워크 대역폭 | 송수신 바이트 | Node Exporter → Prometheus | Grafana |
GPU 사용률 | L4 GPU 코어 점유율 | DCGM Exporter → Prometheus | Grafana, > 70% 시 알림 |
GPU 메모리 사용량 | GPU 메모리 소비량 | DCGM Exporter → Prometheus | Grafana |
로그 에러 패턴 | 애플리케이션 에러 메시지 빈도 | Cloud Logging → Grafana | Grafana 로그 패널, 키워드 기반 알림 |
간이 부하 테스트 결과
테스트 시나리오
- 툴: Locust
- 가정 트래픽: Peak 100 RPS, 평균 50 동시 사용자
- 테스트 엔드포인트:
POST /api/v1/interview/start
(모델 추론 호출) - 기간: 5분(ramp-up 1분, 유지 3분, cool-down 1분)
주요 결과
항목 | 1개 인스턴스 (Scale-out 전) | Auto-scaled (3개 인스턴스) |
---|---|---|
평균 응답 시간 | 1.8 s | 0.9 s |
p95 응답 시간 | 2.6 s | 1.4 s |
처리량 (RPS) | 60 | 95 |
GPU 사용률 | 95 % | 65 % |
CPU 사용률 (호스트) | 40 % | 30 % |
오토스케일링 | 없음 | 1→3 인스턴스 자동 확장 |
- 분석:
- 단일 인스턴스에서는 GPU가 포화되어 응답 지연 급증.
- HPA 정책(GPU > 70%)에 따라 3개로 확장 후, 평균 응답 시간 절반, 처리량 ≈ 95 RPS 달성.
설계의 향후 성장·안정 운영 기여
-
무중단 수평 확장
- Auto-scale: GPU 사용률, 응답 지연(p95) 기반으로 인스턴스 자동 증감 → 트래픽 변화에 실시간 대응
- Zero-downtime: 로드밸런서 헬스체크로 신규 VM 준비 완료 후 트래픽 분산
-
SLA 보장
- 실시간 서비스의 p99 ≤ 2 s 목표를 실제 모니터링(p99, p95) 및 알림으로 관리
- SLT(서비스 수준 목표) 이탈 시 즉시 운영자 노티
-
운영 가시성·문제 대응 속도 개선
- 로그 중앙화(Cloud Logging) + 메트릭 시각화(Grafana)로 장애 원인 신속 파악
- Alertmanager 알림 그룹화/억제로 불필요한 노이즈 제거, 중요한 이벤트에 집중
-
비용 최적화
- GPU VM 풀에 Preemptible VM 또는 스팟 인스턴스 적용 가능
- Auto-scale 감소 시 불필요한 리소스 축소
-
미래 확장성 확보
- 아키텍처 레이어(로드밸런서→MIG) 추가 인스턴스 투입만으로 최대 수 백 RPS, 동시 수천 세션까지 수평 확장 용이
- 필요 시 GKE/Kubernetes로 전환, 멀티 리전 배포도 무리 없이 확장 가능