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ónManaged gana cuandoSelf-hosted gana cuando
Costo absolutoVolumen bajo-medioVolumen alto y sostenido
Costo humanoEquipo chico, sin DevOpsEquipo con skills DevOps
ControlNo te importan tunings finosNecesitás optimización específica
Vendor lock-inNo te preocupaEstratégico: independencia
Tiempo a producciónImporta, MVP/early stageTené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):

  1. Primero: caching agresivo en OpenAI (esperá 30-40% reducción)
  2. Segundo: model routing (queries simples a Mistral OR, complejas a GPT-4o-mini) — esperá 30-50% reducción más
  3. 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

  1. Pinecone pricing — para tus cálculos.
  2. AWS EC2 pricing — para self-hosted comparisons.
  3. Total Cost of Ownership frameworks.
  4. Build vs Buy guide — perspective de VCs.
  5. Cost of Code (Engineering as a Cost Center) — sobre human time.