[AI]7단계_서비스_인프라_확장성과_모니터링_설계 - 100-hours-a-week/12-marong-Wiki GitHub Wiki
확장성을 고려한 배포 아키텍처 다이어그램
1️⃣ Docker로 모델 서버 컨테이너화
⬇️
2️⃣ 동일 컨테이너 여러 개 실행 (수평 확장)
⬇️
3️⃣ 로드밸런서(API Gateway 등)로 요청 분산
⬇️
4️⃣ 실시간 모니터링 & 알림 체계 구축
├─ 응답 속도 (평균, 99퍼센타일)
├─ 에러율
├─ 처리량 (Throughput)
└─ CPU / GPU 자원 사용률
- 컨테이너화: 모델 서버를 Docker로 패키징해 어디서든 동일하게 실행되게 합니다.
- 수평 확장: 같은 모델 서버를 여러 개 띄워 부하를 나눕니다 (예: Kubernetes나 GCP 오토스케일러 사용).
- 부하 분산: 로드밸런서(API Gateway 등)를 통해 요청을 고르게 분산시킵니다.
- 모니터링 & 로깅:
- 응답 시간
- CPU/GPU 사용률
- 에러율
- Throughput(처리량)
- 99퍼센타일 응답 시간
- 실시간 알림 및 대시보드(Grafana/Prometheus 등 사용)
인프라 구성 요소 및 기술 명세
구성 요소 |
사용 기술/서비스 예시 |
컨테이너화 |
Docker |
클러스터 오케스트레이션 |
Kubernetes (GKE, EKS 등) |
클라우드 자원 |
GCP Compute Engine / AWS EC2 |
로드밸런싱 |
Google Cloud Load Balancer / ALB |
자동 확장 |
GCP Instance Group / Kubernetes HPA |
모니터링 |
Prometheus, Grafana, Loki, AlertManager 등 |
로깅 |
stdout 기반 수집 + Loki or Stackdriver Logging |
모니터링 대상 지표 및 수집 방식
지표 항목 |
수집 방식 |
시각화 방법 |
응답 시간 |
API Gateway 또는 APM 추적 |
Grafana |
에러율 |
로그 수집 (Loki, Cloud Logging) |
Grafana Alert / Discord |
CPU/GPU 사용률 |
Node Exporter / GPU Exporter |
Grafana |
처리량(Throughput) |
Prometheus Query (rate 기준) |
Grafana |
서버 수 및 사용률 |
Kubernetes Metrics API |
HPA 연동 |
부하 테스트 예시
# 예시: Apache Bench (ab)
ab -n 1000 -c 100 http://your-api.com/api/test
- 테스트 후 평균 응답 시간 및 최대 응답 시간 분석
- 자원 사용률을 기반으로 오토스케일링 트리거 조건 검증
확장성과 안정성에 대한 기여 설명
- 서비스 이용자 증가에도 대응: 수평 확장 구조와 오토스케일링으로, 자동으로 인스턴스를 늘려 대응 가능
- 장애 발생 시 자동 복구: Healthcheck 실패 시 롤백 스크립트 실행
- 실시간 상태 확인: Grafana 대시보드로 팀 전체가 현재 상태를 가시적으로 공유
- 모듈화된 배포 구조: 프론트/백엔드/AI 서버 각각 독립적으로 배포 가능
참고 사항
- 트래픽이 적은 초기에는 단일 인스턴스로 운영 가능
- 사용자 수 및 요청량 증가에 따라 점진적 도입
- CI/CD 파이프라인과 연동하여 자동화 수준 향상