이 마지막 lesson 모양
여기서 quest를 하나로 묶어서 진짜 물건을 하나 띄워. 작은 backend service인데, cloud provider를 골라서 user prompt에 답하고, cloud에 못 닿을 땐 조용히 Ollama로 넘어가. 앞의 모든 track에서 배운 패턴이 production 모양으로 돌아간다는 걸 보이는, 가장 작은 증거야.
Production check-list
- Adapter 패턴. Cloud랑 Ollama 둘 다
stream()구현. - Health check. 둘 다 빠른 timeout 가진
health_check(). - Orchestrator. Cloud를 먼저 부르고, 실패하거나 health가 나쁘면 Ollama로 넘어가.
- Streaming. 어느 vessel이 답하든 frontend는 끊김 없는 SSE stream 하나만 봐.
- Pin한 모델 tag. Ollama 쪽도 cloud 쪽도 버전을 못 박아둬.
- Observability. 매 request마다 어느 vessel이 답했는지 남겨. 나중에 어떤 답이 유독 다르게 느껴질 때 이 로그가 없으면 아무것도 못 해.
- Mini mode. Local 모델이 작으면 system prompt를 확 덜어내.
- Warm-up. Startup task에서
keep_alive: -1로 local 모델을 미리 올려둬. 그래야 첫 fallback이 견딜 만한 속도로 나와.
이게 동작할 때 만든 거
privacy도, 비용도, 장애도 아는 서비스야. Cloud가 죽어도 user는 답을 계속 받아. Cloud가 rate-limit을 걸어도 계속 받고. Cloud가 비싸지면 bulk batch job이 local로 흘러가. Orchestrator는 단순하고 adapter는 좁아. 그래서 잘 안 부러져.