Módulo 7: Performance vs Cost Trade-offs
Managed vs Self-hosted
Descripción
"¿Pinecone managed o ChromaDB self-hosted? ¿OpenAI o Llama propio? ¿Cloud Run o Kubernetes propio?" Estas son las decisiones que más impactan tu TCO (total cost of ownership) y tu velocidad de iteración como startup.
Hay un sesgo en la industria: "managed siempre es mejor porque no querés operar infraestructura". Es falso. Managed tiene trade-offs reales: vendor lock-in, costo que escala feo con volumen, menos control sobre performance, dependencia de su SLA. Para algunos casos, self-hosted gana — no por dogma, por matemáticas.
Esta cápsula te da el framework component-by-component.
Al terminar vas a poder:
- Calcular TCO real (no solo precio de lista) para managed vs self-hosted
- Evaluar el costo operacional humano (la métrica más subestimada)
- Decidir componente por componente: LLM, vector DB, hosting, monitoring
- Reconocer patrones híbridos comunes (mix de managed + self-hosted)
El framework: 5 dimensiones
| Dimensión | Managed gana cuando | Self-hosted gana cuando |
|---|---|---|
| Costo absoluto | Volumen bajo-medio | Volumen alto y sostenido |
| Costo humano | Equipo chico, sin DevOps | Equipo con skills DevOps |
| Control | No te importan tunings finos | Necesitás optimización específica |
| Vendor lock-in | No te preocupa | Estratégico: independencia |
| Tiempo a producción | Importa, MVP/early stage | Tenés tiempo de desarrollar bien |
Regla simple para startups: empezás managed (everything), migrás a self-hosted lo que justifiques con números.
Component-by-component
LLM provider
Managed (OpenAI, Anthropic, OpenRouter):
- Costo: $0.15-$15 por 1M tokens según modelo
- Setup: 5 minutos
- Scaling: automático
- Vendor lock-in: medio (puedes migrar pero requiere testing)
Self-hosted (Llama, Mistral en tu GPU):
- Costo: ~$1.5K-$5K/mes en GPU (A10G a H100)
- Setup: 1-2 días para deployment funcional
- Scaling: tu problema
- Vendor lock-in: cero
Cross-over typical: managed gana hasta ~10M tokens/día. Pasado eso, self-hosted compite.
Ejemplo con números:
- 100M tokens/mes con gpt-4o-mini ($0.15 + $0.60 / 1M tokens, blended ~$0.35) = $35/mes
- Self-hosted Llama 8B en A10G ($720/mes) — no compensa al volumen bajo
- 1B tokens/mes managed = $350/mes
- Self-hosted aún $720/mes pero la inversión empieza a tener sentido si vas a crecer
Vector database
Managed (Pinecone, Weaviate Cloud, Qdrant Cloud):
- Pinecone: $0.096/1M vectors/hour para starter
- Para 1M vectors: ~$70/mes
- Para 10M vectors: ~$700/mes
- Setup: 30 min
- Operations: zero
Self-hosted (ChromaDB, pgvector, Weaviate self-hosted):
- Servidor con suficiente RAM (vectores son hambrientos de memoria)
- 10M vectors × 1536 dim × 4 bytes = ~60GB RAM
- Servidor 64GB RAM en AWS: r5.2xlarge ~$280/mes
- Operations: 4-8 horas/mes del equipo (backup, scaling, debugging)
Cross-over: managed gana hasta ~1-2M vectors. Pasado eso, self-hosted con costos de infra empieza a ganar si tu equipo tiene skills.
Hosting (API)
Managed serverless (Cloud Run, Lambda, Modal):
- Pay per request + execution time
- Zero infrastructure overhead
- Auto-scaling automático
- Cold starts (excepto con min-instances)
Self-hosted containers (ECS, GKE, AKS, plain VMs):
- Pay per instance (always running)
- DevOps overhead real
- Más control
- Sin cold starts
Para AI services con LLM: serverless funciona bien si tus workers son stateless. Pero LLM workers a menudo tienen GPU + model loaded → containers es más común.
Embeddings model
Managed (OpenAI embeddings, Cohere):
- $0.02/1M tokens (OpenAI ada-002)
- Auto-scaling, simple
Self-hosted (bge-large, all-MiniLM):
- Modelo Open-source en tu infra
- Latencia más baja (sin network)
- Sin costo per-request
Cross-over: managed gana casi siempre para embeddings. Self-hosted solo si: privacidad estricta, volumen muy alto (>1B tokens/mes), o latencia <50ms es crítica.
TCO completo: no solo el precio de lista
La trampa más común es comparar solo precios de lista de la plataforma. TCO real incluye:
TCO de Pinecone managed
Pinecone bill ............... $700/mes
Engineering time ............ $80/hr × 1hr/mes = $80/mes
(setup ya hecho, mantenimiento ocasional)
Total TCO .................... $780/mes
TCO de ChromaDB self-hosted
EC2 r5.2xlarge .............. $280/mes
Backup storage (S3) ......... $20/mes
Monitoring (Datadog) ........ $50/mes
Engineering time ............ $80/hr × 6hr/mes = $480/mes
(scaling, patches, debugging, on-call)
Total TCO .................... $830/mes
Conclusión: para 10M vectors, Pinecone gana a estos números. Crossover sería si Pinecone llegara a >$1500/mes o tu equipo tuviera engineering capacity sobrante.
El factor multiplicador: human time
El costo humano es el más subestimado. Equipos jóvenes piensan "1 hora/mes de mantenimiento es nada". Pero:
- Esa hora se acumula
- Es opportunity cost: el engineer no está construyendo features
- Cuando hay un incidente, son 8 horas, no 1
- Onboarding de nuevos members requiere documentación
Regla: estimá human time generosamente. 1hr/mes de "trabajo regular" + 4hr/mes de "incidentes ocasionales" + 8hr/incidente cuando hay outage.
Patrones híbridos: lo común en producción
Pocos sistemas son 100% managed o 100% self-hosted. Lo típico:
Pattern 1: managed para todo, self-hosted lo crítico
- Managed: LLM (OpenAI), email (SendGrid), monitoring (Datadog), CI/CD (GitHub Actions)
- Self-hosted: tu API service, tu workers, tu vector DB (control de datos)
Pattern 2: dual provider para evitar lock-in
- Managed primary: Pinecone
- Self-hosted secondary: ChromaDB con replicación periódica
- Si Pinecone falla, fallback a ChromaDB (degradation)
Pattern 3: managed para experimentar, self-hosted al escalar
- Mes 1-3: todo managed para validar producto
- Mes 4+: migrás componentes específicos que justifican (ROI, vendor lock-in, compliance)
Cuándo es claramente managed
- Equipo chico (<5 engineers), ninguno DevOps fuerte
- Tiempo a producción crítico (validar producto antes que optimizar)
- Volumen bajo-medio (cross-over no llega)
- Compliance no estricto (no necesitás on-prem)
Cuándo es claramente self-hosted
- Volumen muy alto y constante (>2-3× el costo managed)
- Compliance estricto (HIPAA on-prem, GDPR con data residency específica)
- Equipo con DevOps skills disponibles
- Necesitás features que el managed no ofrece (custom indexes, fine-tuning, etc.)
- Vendor lock-in es estratégicamente caro (e.g., competís con el vendor)
Trampas comunes
Trampa 1 — Solo comparar precio de lista. Pinecone $200/mes vs ChromaDB EC2 $150/mes parece ganar self-hosted. No es así si incluís ops, monitoring, backups, on-call. Calculá TCO completo.
Trampa 2 — Subestimar engineering time. "Mi engineer puede mantenerlo en 2 horas/mes". Real: 8-15 hours/mes incluyendo incidentes. Estimá 5× lo que pensás inicialmente.
Trampa 3 — Self-hosting sin SRE skills. Tu equipo no sabe operar Postgres a escala. Migrate a managed RDS. Self-hosted requiere skills, no solo voluntad.
Trampa 4 — Migrar de managed a self-hosted antes de tener datos. "Pinecone va a ser caro cuando escalemos." → migrate ahora. Pero no estás en escala todavía. Decisión prematura. Esperá a tener números reales.
Trampa 5 — Lock-in invisible. Pinecone tiene queries específicas (sparse-dense hybrid, etc.) que ChromaDB no tiene. Si las usás, migración requiere refactoring de tu app. Diseñá con abstracciones desde el principio.
Trampa 6 — All-or-nothing mindset. "Todo managed" o "todo self-hosted" rara vez es óptimo. Component-by-component decisions.
Ejercicio
Tu startup tiene 6 meses, equipo de 4 engineers (uno con DevOps), $50K budget operacional/mes.
Stack actual (todo managed):
- OpenAI gpt-4o-mini: $5K/mes
- Pinecone: $400/mes
- Cloud Run: $300/mes
- Datadog: $200/mes
- Total managed: $5,900/mes
Pregunta: ¿deberías migrar algo a self-hosted? Si sí, ¿qué? ¿En qué orden?
Ver solución
Análisis:
-
OpenAI ($5K/mes): candidato más obvio para optimización. ¿Self-hosted?
- Self-hosted Llama 8B en A100: ~$2K/mes infra
-
- Engineering time setup (~80hrs) y maintenance (~10hrs/mes × $100 = $1000/mes)
- Total: ~$3K/mes vs $5K/mes managed
- Ahorro: ~$2K/mes
- Pero: calidad cambia, tu producto puede degradar
- Recomendación: PROBÁ primero con caching agresivo (M7-03) y model routing (M7-06). Si después de optimizaciones aún gastás $4K+/mes, considerás self-hosted con buen plan de migración
-
Pinecone ($400/mes): bajo volumen, managed gana. NO migrate.
-
Cloud Run + Datadog: cost bajo, managed gana. NO migrate.
Orden de optimización (cost-impact):
- Primero: caching agresivo en OpenAI (esperá 30-40% reducción)
- Segundo: model routing (queries simples a Mistral OR, complejas a GPT-4o-mini) — esperá 30-50% reducción más
- Tercero: si después de eso aún gastás >$3K/mes en LLM, THEN considerás self-hosted
Conclusión: NO migrate todavía. Primero optimizá managed antes de pagar el costo de migración.
Resumen
Aprendiste:
- ✅ Framework de 5 dimensiones para managed vs self-hosted
- ✅ Cálculo de TCO completo (incluyendo engineering time)
- ✅ Cross-over points por componente: LLM, vector DB, hosting, embeddings
- ✅ Patterns híbridos (lo común en producción)
- ✅ Cuándo claramente managed, cuándo claramente self-hosted
- ✅ Trampas: solo precio de lista, subestimar human time, all-or-nothing
Checkpoint: si para un componente dado podés calcular TCO completo y comparar con managed, estás listo.
Siguiente cápsula
05 — Serverless vs Containers. Otro trade-off clave: ¿Lambda/Cloud Run para tus workers o ECS con containers always-running? Para LLM con GPU, los matices son específicos.
Recursos
- Pinecone pricing — para tus cálculos.
- AWS EC2 pricing — para self-hosted comparisons.
- Total Cost of Ownership frameworks.
- Build vs Buy guide — perspective de VCs.
- Cost of Code (Engineering as a Cost Center) — sobre human time.