왜 proxy 하는가
Production 앱이 Gemini proxy 앞단에 두고 싶어하는 이유 두 가지:
- API key 숨기기. Browser 가 credential 절대 못 봄. 손상된 browser 의 blast radius 가 "key 로 Gemini 직접 호출" 에서 "너 proxy 호출" 로 변함.
- 비즈니스 로직 추가. Auth, rate-limiting, request validation, response logging, model selection — server-side 한 곳에 모음.
패턴
FastAPI 의 StreamingResponse + httpx.AsyncClient.stream(). Gemini 에 stream 열고 client 에 chunk 포워딩, 끝나면 닫기. 총: 동작하는 proxy 약 30 줄.
SSE vs raw passthrough
설계 두 가지:
- Raw passthrough: Gemini 의 byte 직접 포워딩. 가장 싸지만 client 가 Gemini 의 정확한 포맷 알아야.
- 너 자신의 SSE 포맷으로 re-emit: 각 chunk parse,
text추출, 너 자신의data: {"text": "..."}event emit. 더 일이지만 client 를 Gemini 의 진화하는 schema 와 decouple.