Developer Brief
AI 이미지 생성·공유
Next.js와 여러 이미지 모델을 사용한 AI 이미지 생성 웹 애플리케이션입니다. API·로컬 모델로 이미지를 만들고 공유하며, 좋아요·댓글·프로필까지 지원합니다.
클라우드 비용 절감과 고성능 AI 모델 서빙을 위해 Home Lab(온프레미스) 환경을 직접 구축했습니다. RTX 5090 데스크톱을 AI 추론 워크스테이션으로, 미니 PC(WSL2)를 웹 서버로 분리해 운영합니다.

문제
모델마다 응답 형식(URL·base64·inlineData·ComfyUI 폴링)과 지연이 제각각이라 후처리가 복잡
해결
응답을 공통 GenerateImageResponse로 정규화하고 '크레딧 → 파일 저장 → DB' 파이프라인을 공통화, 모델 호출만 모델별로 분기
문제
로컬 GPU 서버(ComfyUI·SDXL)에 동시 요청이 몰리면 VRAM 부족·처리 속도 저하 등 병목 발생
해결
인메모리 작업 큐로 로컬 모델 요청을 순차 처리(기본 동시성 1)하고 대기 순번을 실시간 안내, 대기열이 가득 차면 429로 백프레셔. GPU가 실질 병목이라 수평 확장의 이득이 없다고 판단해 단일 인스턴스를 전제로 의도적으로 단순화했고, 멀티 GPU·다중 인스턴스가 필요해지면 Redis 등 분산 큐로 전환할 수 있는 한계를 명시적으로 인지하고 내린 결정
문제
DALL·E·Imagen·Nano Banana 등 유료 API 모델은 무분별하게 호출되면 그대로 비용으로 이어짐
해결
서버 전역 요청 카운터로 유료 API 모델 호출 횟수를 제한(로컬 모델은 제외). 정식 계정 인증을 붙이기 전, 런칭 초기의 비용 보호용 임시 가드로 도입
문제
프롬프트 번역·카테고리 추천에 쓰는 로컬 LLM(Ollama Gemma 3 4B)은 AI 데스크톱이 켜져 있을 때만 동작하는데, 데스크톱을 24시간 켜두지 않아 꺼진 동안에는 기능이 멈춤
해결
LLM 호출을 provider 계층(llmService)으로 추상화하고, 어드민 페이지에서 Ollama ↔ Gemini 2.5 Flash Lite provider·모델·기능별(번역/분류) on·off를 런타임에 전환하도록 구성. 데스크톱을 끄는 동안에는 코드 수정·재배포 없이 어드민에서 Gemini로 전환해 운영






