[AI] 아키텍처 종합 평가 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki

1. AI 모델 서빙 아키텍처의 종합 평가

a. 왜 지금 아키텍처가 타당하고 적절한가?

  • 현재 우리 서비스는 사용자가 업로드한 다수의 이미지를 AI로 분석, 분류, 정리하는 기능이 핵심이며,

    그 과정은 멀티모델(CLIP, arcFace, Stable Diffusion 등)을 기반으로 하면서도 각 연산 단위가 서로 강하게 결합되어 있지 않도록 분리되어야 함

  • 우리는 FastAPI 기반의 서버를 중심으로 내부 모듈들을 기능별로 모듈화하면서도,

    확장 가능한 구조를 고려해 메시지큐, 캐싱, 비동기 처리 등 마이크로서비스 설계의 기초를 마련

  • 특히 초기 사용자가 확보되지 않았을 때는 MVP 서비스 운영에 적합한 효율성 중심의 단일 서비스 기반 구조(v1/v2)이며,

    v3 이후에는 모델 서빙 분리, 리소스 병렬 처리, GPU 서버와의 분산 확장까지 자연스럽게 연계될 수 있게 설계됨

  • 복잡한 도구 추상화, 체인 구조, RAG, MCP 등은 현재 서비스 흐름과 요구사항에 비해 과설계라는 판단 하에 과감히 제외

    이 결정은 단순한 생략이 아닌, “지금은 단순하게, 나중엔 확장 가능하게”를 위한 전략적 판단

b. 현재 아키텍처의 강점

  • 기능별로 분리된 서비스 구조 (embedding, duplicate, category 등)는 각 모듈의 독립성과 테스트 용이성을 확보

  • Redis를 기반으로 캐시 + 메시지큐를 통합 운영하면서도, 다중 인스턴스에서도 일관된 상태 공유가 가능하도록 구성

  • NAT, Load Balancer, VPC 외부 통신 구조까지 실제 운영 환경에서 문제가 생기지 않도록 미리 구조적 병목을 검토하고 대비

  • 모델 서빙 방식은 CLIP, arcFace, Stable Diffusion의 용도와 특성에 따라 분리된 구조로,

    CPU/GPU 리소스 최적화와 모델 별 경량화 전략(스레드 제한, LoRA 등)까지 반영

  • 전체 흐름이 단순하면서도, 확장을 고려한 설계로 구성되어 있어 이후 마이크로서비스로 전환하거나, 에이전트 기반의 LLM 흐름을 붙이기도 용이

c. 보완해야 할 여지

  • 현재는 모든 처리를 FastAPI 중심의 하나의 서버에서 수행 중이며, 모델 서빙, 이미지 처리 로직이 아직 완전히 분리되어 있지 않음

    → 향후에는 이러한 컴포넌트들을 서비스 단위로 독립 배포·스케일링할 수 있는 구조로 전환할 필요가 있음

  • GPU 서버에 대한 부하 제어, 장애 감지, 작업 재시도 등 운영 안정성 측면의 자동화가 부족함

    → 작업 상태 추적, 실패한 작업의 자동 복구 등을 고려한 처리 흐름의 통제 강화가 요구됨

  • 모니터링은 Prometheus/Grafana로 구성되어 있으나, 개별 작업자(워커) 수준의 상태 추적 및 자가 회복 로직 구성은 미비함

    → 작업 단위로 상태를 추적하고, 문제가 생겼을 때 자동 복구되도록 시스템 수준의 자율성을 높이는 방향으로 개선 가능