Ir al contenido
← Volver al overview de Cosmos DB
Azure Cosmos DB
ÚNICO — solo en NoSqlStudio
Ctrl+Alt+Shift+I

WHAT-IF Lab — pruebe cada cambio contra tráfico real

Capture la última hora (o últimas 72h) de tráfico real de producción, clone su dataset Cosmos a una sandbox vía PITR, aplique un cambio hipotético (drop/add index, cambiar partition key, cambiar consistency level, cambiar modo de facturación, cambiar throughput) y vea el impacto en 5 dimensiones — RU, latencia p95, 429s, plan-cache hits, costo mensual — antes de aplicar a prod.

Dónde vive en la app: Tools → Cosmos DB → WHAT-IF Lab

Qué hace

  • Captura tráfico real del app vía Query Cost Inspector (in-app) o Azure Log Analytics (tabla MongoRequests).
  • Provisiona sandbox Cosmos vía PITR (continuous backup 7d/30d) — aislado, sin impacto en prod.
  • Acepta hasta 5 mutaciones simultáneas: add/drop index, cambiar partition key, consistency level, modo de facturación, throughput por collection.
  • Replay del trace capturado contra prod + sandbox en paralelo (rate-controlled).
  • Diff side-by-side en 5 dimensiones: consumo de RU, latencia avg + p95, conteo de throttle 429, tasa de hit del query plan cache, cuenta mensual en dólares.
  • Veredicto automático (approve / warn / reject) con rationale textual + export JSON para audit/compliance.
  • Modo "preview" con sandbox sintético: corre en 30 segundos sin costo Azure (ideal para exploración).
  • Modo "real": sandbox PITR real, para confirmación final antes de prod.

Paso a paso

  1. 1

    Abra el workspace

    Menú Tools → Cosmos DB → WHAT-IF Lab — Test changes against real workload, o atajo Ctrl+Alt+Shift+I. El workspace empieza en Step 1: Capture.

  2. 2

    Capture el tráfico

    Defina la ventana en minutos (60 por defecto — ajuste a 1440 = 24h o 4320 = 72h para capturar ciclos semanales). Haga clic en "Capture now". Lee del ring buffer del Query Cost Inspector (todas las queries que pasaron por el bridge de NoSqlStudio en la ventana). Muestra conteo total de queries, unique shapes, RU total consumido, namespaces tocados.

    window=60 → captura 1h de tráfico
    window=1440 → captura 24h
    window=4320 → captura 72h (ciclo semanal completo)
  3. 3

    Provisione un sandbox

    Step 2 del wizard. Ponga el nombre de la cuenta Cosmos source. Restore point por defecto es "ahora menos 1 hora" — ajuste si quiere testear contra un snapshot más antiguo. Modo "preview" usa sandbox sintético (recomendado para primeras exploraciones) — modo "real" provisiona cuenta Cosmos nueva vía PITR (~30 min de creación, costo Azure normal de provisioning).

    modo preview → sandbox sintético, sin costo Azure, resultado en 30s
    modo real → PITR sandbox real, ~30min, costo Azure normal
  4. 4

    Configure mutaciones WHAT-IF

    Step 3. Editor JSON inline con schema validado. Hasta 5 mutaciones simultáneas. Cada mutación tiene un "kind" y parámetros propios. Vea los ejemplos abajo.

    [
      { "kind": "add-index", "ns": "app.orders", "key": { "tenantId": 1, "createdAt": -1 } },
      { "kind": "drop-index", "ns": "app.orders", "indexName": "text_search_v1" },
      { "kind": "change-partition-key", "ns": "app.events", "newPath": "userId", "strategy": "recreate" },
      { "kind": "consistency", "level": "Session" },
      { "kind": "mode", "mode": "autoscale", "autoscaleMaxRu": 4000 },
      { "kind": "throughput", "ns": "app.orders", "ruPerSec": 2000 }
    ]
  5. 5

    Quick Estimate o Full Replay

    Quick Estimate = respuesta en ~5 segundos basada en heurísticas + valores observados durante el capture. Bueno para iterar rápido mientras ajusta la mutación. Full Replay = corre CADA query del trace contra "before" y "after" en paralelo, mide todo. Tarda proporcionalmente al tamaño del trace; 1000 queries ~30s, 100k queries ~5min.

  6. 6

    Lea el diff de 5 dimensiones

    Step 5. Cards lado-a-lado con antes/después + delta %: RU total consumido, latencia avg/p95 (ms), conteo de throttles 429, tasa de hit del plan-cache, USD mensual proyectado. Cada per-query shape también muestra impacto individual ranqueado por RU. Veredicto arriba: APPROVE / WARN / REJECT con rationale textual.

  7. 7

    Exporte el reporte

    Botón "Export JSON" guarda el reporte completo (planId, mutations, summary, per-query). Use para: • Documentar la decisión en ticket de change management • Compartir con finance si hay ahorro de costo • Audit trail para compliance (SOC 2 / ISO 27001)

  8. 8

    Aplique en prod (después de aprobar)

    NoSqlStudio no aplica automáticamente — usted sale del WHAT-IF Lab, abre el workspace correspondiente (Index Policy Editor, Throughput Optimizer, etc) y aplica manualmente. La separación es intencional: WHAT-IF es decisión; aplicación es acción.

Casos de uso reales

Caso A — ahorro de R$ 4.8k/mes confirmado

DBA sospecha que agregar composite index `{tenantId, createdAt}` en `app.orders` ahorraría RU. Corre WHAT-IF con `add-index`. Resultado: RU -47% (-200k RU/mo), latencia -12ms p99, cuenta USD -R$ 4.847/mo. APPROVE con confianza del 96%. Audit JSON exportado. Aplicado en prod al día siguiente.

Caso B — cambio rechazado antes de causar incidente

Equipo de plataforma propone cambiar partition key de `userId` a `region` en `app.events` (parecía más "uniforme"). WHAT-IF: RU +112%, 0 → 843 throttles en la ventana, latencia p99 +180ms. REJECT. Ingeniero ahorra un midnight call para recovery.

Caso C — decisión autoscale vs manual

CFO pregunta si la app puede migrar a autoscale. DBA corre WHAT-IF con `mode: autoscale, autoscaleMaxRu: 8000` contra los últimos 30 días. Resultado: -R$ 1.2k/mes en la cuenta con latencia/throttle idénticos. APPROVE.

Caso D — relajación de consistency simulada

Engineering quiere bajar de Strong a Session consistency para mejorar latencia. DBA corre WHAT-IF + presenta a compliance: RU -22%, p99 -41ms, docs de semantics adjuntados. Compliance firma off basándose en el reporte.

FAQ

¿Cuánto cuesta correr una sesión de WHAT-IF?

Modo preview = $0 (sandbox sintético con heurísticas). Modo real = costo de provisionar una cuenta Cosmos temporal vía PITR — típicamente $5–$20/hora dependiendo del tier del source. NoSqlStudio destruye el sandbox automáticamente al cerrar el workspace.

¿La precisión del modo preview es confiable?

El modo preview entrega 70-90% de precisión en cambios "atómicos" (drop un índice, add un índice simple, cambiar consistency). Para cambios combinados (partition key + throughput + index) recomendamos validar con modo real antes de aplicar en prod.

¿Puedo capturar más de 72h de tráfico?

Sí — en vez del ring buffer in-app (límite ~500 queries), apunte a Azure Log Analytics: la tabla `MongoRequests` acumula 30+ días. Configure el workspace URL en Cosmos Optimizer → Diagnostic Logs (KQL templates).

¿Microsoft tiene algo equivalente?

No. Azure Cosmos DB Insights muestra métricas retrospectivas pero no simula cambios. Atlas Performance Advisor sugiere índices pero no corre WHAT-IF contra workload real. Herramientas third-party (Studio 3T, DataGrip, etc) no cubren nada de esto.

¿WHAT-IF respeta mi nivel de isolation?

Sí. El replay engine es stateless y nunca toca prod — solo lee datos vía log in-app o Log Analytics. El sandbox está totalmente aislado vía cuenta PITR. Ninguna query del replay afecta su cuenta de producción.

¿Cómo integro con compliance / SOC 2?

Cada ejecución genera un JSON inmutable con timestamp, planId, mutations applied, summary, per-query results. Guarde en audit log + firme con Ed25519 (use el workspace Compliance Reports).

¿Listo para verlo en su cuenta Cosmos?Descargar NoSqlStudioSiguiente → RU Budget Dashboard