Contoso Airlines tiene ya todas las piezas sueltas: sabe estimar antes de desplegar, sabe qué gastó y de quién es, sabe qué compromisos comprar y sabe dónde está el desperdicio. Lo que no tiene todavía es lo más difícil, que no es técnico: una forma de trabajar en la que el coste se gestione solo, sin depender de que alguien se acuerde. Porque la optimización que se hace una vez se deshace sola en seis meses. Vuelven los discos huérfanos, vuelve el entorno encendido de noche, vuelve la ingesta de registros que nadie consulta, y el trimestre siguiente Nuria vuelve a preguntar lo mismo.
Esta lección cierra el módulo con ese salto: de las herramientas a la cultura FinOps. Verás sus tres fases y los tres papeles que la sostienen —Nuria, Marta y Diego—, el catálogo completo de palancas de optimización que consolida todo lo aprendido en el curso, el compromiso consciente entre coste y fiabilidad, rendimiento y seguridad, con los recortes que Contoso rechaza deliberadamente, el plan priorizado con su tabla de antes y después, el coste unitario como el indicador que de verdad importa, la revisión mensual como proceso de gobierno, el coste dentro del ciclo de vida del desarrollo, y los anti-patrones que arruinan cualquier iniciativa de ahorro.
Recordatorio: todas las cifras en euros son orientativas y ficticias. Los precios reales de Azure cambian con frecuencia y varían por región; consúltalos siempre en la calculadora oficial.
Contenido
- Qué es FinOps y por qué es cultura, no herramienta
- Las tres fases y los tres papeles
- El catálogo completo de palancas de optimización
- El compromiso: coste frente a fiabilidad, rendimiento y seguridad
- Los recortes que Contoso rechaza
- El plan de optimización de Contoso
- Antes y después
- Coste unitario: el indicador que importa
- La revisión mensual de costes
- Políticas que previenen el gasto
- El coste en el ciclo de vida del desarrollo
- Anti-patrones de la optimización
- Errores Comunes y Consejos
- Ejercicios
- Conclusión
- Qué es FinOps y por qué es cultura, no herramienta
FinOps es una disciplina operativa para gestionar el gasto en la nube: un conjunto de prácticas que llevan la responsabilidad económica al equipo que toma las decisiones técnicas, con datos compartidos y en tiempo casi real. No es un producto, no es un panel y no se compra.
La razón por la que hace falta es estructural y ya apareció en 08-01: en la nube, quien gasta el dinero es el ingeniero, no el departamento de compras. Un modelo de control en el que finanzas aprueba y después ingeniería ejecuta no funciona cuando la ejecución tarda tres segundos. Solo quedan dos opciones: bloquear a la gente con procesos de aprobación que destruyen la agilidad que justificaba la nube, o dar a la gente el dato y la responsabilidad. FinOps es la segunda.
Los tres principios que lo resumen:
- Visibilidad: cada equipo ve lo que gasta, con detalle suficiente para actuar y sin pedirlo a nadie.
- Responsabilidad: el equipo que decide es el que responde de su factura, y tiene margen para decidir.
- Optimización continua: no es un proyecto trimestral, es una rutina mensual con dueños y fechas.
Y el motivo por el que se insiste en que es cultura: las tres cosas que más ahorraron a Contoso no fueron técnicas. Fueron un etiquetado que permite saber de quién es cada euro, una revisión mensual de una hora en la que alguien tiene que explicar sus cifras, y la costumbre de adjuntar una estimación a cada propuesta de arquitectura. Las herramientas ejecutan; la cultura es la que hace que alguien las mire.
- Las tres fases y los tres papeles
flowchart LR I["INFORMAR<br/>visibilidad, asignación,<br/>presupuestos, previsión"] --> O["OPTIMIZAR<br/>dimensionar, apagar,<br/>comprometerse, limpiar"] O --> P["OPERAR<br/>gobernanza, políticas,<br/>revisión mensual, cultura"] P --> I I -.->|"08-02"| I O -.->|"08-03 y 08-04"| O P -.->|"esta lección"| P
El ciclo se recorre continuamente y no se puede saltar la primera fase: optimizar sin informar es adivinar. Contoso tardó dos meses en la fase de informar —etiquetado, política hereda-centro-coste, vistas, presupuestos, exportaciones— antes de tocar un solo recurso, y ese fue el motivo de que la fase de optimizar durase tres semanas en lugar de seis meses.
Los tres papeles, con nombre propio:
| Papel | Quién | Aporta | Necesita | Riesgo si falta |
|---|---|---|---|---|
| Finanzas | Nuria Peña | Presupuesto, previsión, contexto económico, relación con el comité | Datos en su idioma, no capturas del portal | El coste se convierte en un tope arbitrario sin criterio técnico |
| Ingeniería | Marta Ríos e infraestructura | Conocimiento de qué se puede tocar y qué no; ejecuta | Ver el coste de lo que construye, y margen para decidir | Se optimiza lo que se entiende, no lo que cuesta |
| Producto / negocio | Diego Salas y los responsables de producto | Prioriza: qué vale la pena y qué no | Coste por funcionalidad y por transacción | Se recorta donde no duele en vez de donde no aporta |
La disfunción clásica es que solo participen dos de los tres. Si faltan finanzas, el equipo optimiza sin saber si importa. Si falta ingeniería, se fijan topes que rompen producción. Y si falta negocio —el caso más frecuente— se recorta lo técnicamente fácil en lugar de lo económicamente irrelevante, que rara vez coinciden.
- El catálogo completo de palancas de optimización
Esta es la tabla que consolida todo el curso. Cada fila es una palanca vista en algún módulo anterior, aquí puesta en su sitio económico.
| Tipo de recurso | Palanca | Cómo se aplica en Contoso | Ahorro típico | Riesgo |
|---|---|---|---|---|
| Todo | Apagar lo que no se usa | Runbook Detener-IniciarEntornosDev sobre horario=laborable (07-04) |
Hasta 75 % del cómputo afectado | Muy bajo |
| Todo | Eliminar huérfanos | Discos, IP, instantáneas, puertas de enlace (08-04) | Variable, siempre positivo | Bajo, con instantánea previa |
| VM / VMSS | Dimensionar correctamente | Percentil 95 de CPU y memoria en log-contoso-pro |
20-50 % del recurso | Medio: exige reinicio |
| VM / VMSS | Escalar automáticamente en vez de sobredimensionar | Autoescalado 2-20 con perfil apertura-temporada-verano (02-02) |
30-60 % frente al pico fijo | Bajo si el umbral está probado |
| VM / VMSS / AKS | Instancias de acceso puntual | Grupo lotes y agentes de compilación (08-03) |
60-90 % | Alto: desalojo con 30 s |
| Cómputo estable | Reservas y planes de ahorro | AKS, App Service, SQL, línea base del VMSS (08-03) | 11-45 % | Medio: compromiso |
| Windows / SQL Server | Azure Hybrid Benefit | db-reservas, validado por licencias (08-03) |
~30 % del vCore | Cumplimiento, no técnico |
| App Service | Consolidar aplicaciones en un plan | Varias apps sobre plan-contoso-reservas-pro (02-03) |
Un plan en lugar de N | Bajo: aíslan mal el ruido |
| Bases de datos | Nivel sin servidor con pausa automática | sql-contoso-reservas-dev (03-02) |
70-90 % en desarrollo | Latencia de reanudación |
| Bases de datos | Detener el servidor flexible | MySQL y PostgreSQL de desarrollo (03-04, 03-05) | Cómputo a cero | Bajo |
| Cosmos DB | Autoescalado y revisión de RU/s | cosmos-contoso-tarifas-pro, 4000 RU/s máximas (03-03) |
20-40 % frente a fijo | Bajo |
| Synapse | Pausar el grupo dedicado; particionar el lago | sqlpool-contoso pausado; Parquet particionado (03-06) |
Muy alto | Bajo |
| Storage | Niveles de acceso y ciclo de vida | sttarjetascontosopro: Cool a 30 días, Cold a 90, Archive a 365 (02-04) |
40-80 % del GB-mes | Coste de recuperación y transacciones |
| Storage | Redundancia adecuada por dato | GZRS en tarjetas, LRS en desarrollo | 50 % entre niveles | Alto: es fiabilidad |
| Log Analytics | Las tres palancas: qué, en qué plan, cuánto tiempo | Recorte de ingesta, ContainerLogV2 a Basic, retención por tabla (07-02) |
30-60 % | Bajo si se conserva lo que se investiga |
| App Insights | Muestreo adaptativo | 25 % con muestreo por tipo en ai-insights-contoso-pro (07-03) |
Proporcional al muestreo | Medio: se pierde detalle |
| Red | Reducir la salida de datos con caché y CDN | Caché de estáticos y tarjetas en fd-contoso-global (02-06) |
30-60 % del egress | Bajo, con invalidación correcta |
| Red | Consolidar firewall, bastión y puertas de enlace | Un único fw-contoso-hub-pro de concentrador |
Elimina duplicados enteros | Medio |
| Functions / Logic Apps | Plan de hospedaje adecuado | Consumo para lo esporádico, Premium solo donde hace falta (06-03) | Muy alto en cargas esporádicas | Arranque en frío |
| Arquitectura | Sin servidor y basada en eventos | evgt-contoso-reservas-pro en lugar de sondeo continuo (06-05) |
Elimina cómputo ocioso | Rediseño |
| IA | Límite de tokens, recorte de contexto y caché | oai-contoso-pro con tope duro (06-06) |
20-50 % | Calidad de respuesta |
| Copias | Retención por criticidad, no uniforme | 30 días en producción, menos en desarrollo (07-05) | Proporcional | Alto: es recuperación |
Dos formas de leer esta tabla. En vertical, es la lista de todo lo que puedes tocar. En horizontal, es un aviso: la columna de riesgo dice que las palancas más rentables no son las más seguras, y que hay tres filas —redundancia, retención de copias y muestreo— donde ahorrar significa aceptar más riesgo, no eliminar desperdicio. Esa distinción es el tema del apartado siguiente.
- El compromiso: coste frente a fiabilidad, rendimiento y seguridad
Hay dos clases de optimización, y confundirlas es el origen de casi todos los desastres:
| Eliminar desperdicio | Aceptar un compromiso | |
|---|---|---|
| Qué es | Dejar de pagar algo que no aporta nada | Pagar menos a cambio de menos |
| Ejemplo | Un disco huérfano, un entorno encendido de noche | Bajar de GZRS a LRS, quitar el WAF |
| Quién decide | Ingeniería, sola | Negocio, informado por ingeniería |
| Reversibilidad | Total | A veces ninguna, y se descubre el día malo |
| Cuándo se hace | Siempre y de inmediato | Solo con decisión explícita y documentada |
La primera columna se ejecuta sin pedir permiso: nadie tiene que aprobar que se borre una IP pública que no está asociada a nada. La segunda nunca la decide ingeniería en solitario, porque no es una decisión técnica: es un intercambio de dinero por riesgo, y el riesgo lo asume el negocio.
La forma de plantear correctamente un compromiso ante quien debe decidirlo tiene tres partes: cuánto se ahorra, qué se pierde exactamente y qué pasa el día que eso importe. Formulado así, la mayoría de recortes discutibles se caen solos. Formulado como «podemos ahorrar 190 € al mes en almacenamiento», casi todos se aprueban, y nadie recuerda por qué el día del incidente.
- Los recortes que Contoso rechaza
Estas propuestas aparecieron en la revisión y se rechazaron por escrito, que es tan importante como lo que sí se hizo:
| Propuesta | Ahorro | Qué se perdería | Decisión y motivo |
|---|---|---|---|
Eliminar la redundancia de zona de db-reservas |
370 € | Tolerancia a la caída de una zona de West Europe | Rechazado: sin ella no se vende un billete durante horas |
Eliminar la réplica fg-contoso-reservas |
1.180 € | El RTO de 1 hora del módulo 7 | Rechazado: es un compromiso firmado con el negocio |
Desactivar el WAF wafcontosoglobal |
140 € | Protección frente a inyección y bots en el frontal público | Rechazado: una brecha de datos personales cuesta órdenes de magnitud más |
| Desactivar Defender for Cloud en SQL y Key Vault | 310 € | Detección de exfiltración y de acceso anómalo a secretos | Rechazado: son los dos recursos con datos sensibles |
Bajar sttarjetascontosopro de GZRS a LRS |
190 € | Recuperación ante un desastre regional | Rechazado para tarjetas; aceptado para sttarjetascontosodev |
| Reducir la retención de copias de 30 a 7 días | 160 € | El punto limpio anterior a un ransomware detectado tarde | Rechazado: 07-05 lo explica con detalle |
Eliminar bastion-contoso-pro y abrir acceso directo |
205 € | Acceso administrativo sin exponer puertos | Rechazado: reabrir RDP/SSH a internet es indefendible |
| 2.555 € | Dejados sobre la mesa deliberadamente |
Contoso podría haber bajado su factura otros 2.555 € al mes aplicando esta lista. Decidió no hacerlo, y lo escribió. Ese documento tiene más valor del que parece: cuando dentro de un año alguien pregunte por qué se paga GZRS, la respuesta estará escrita con su fecha y su firma, y nadie tendrá que reconstruir el razonamiento desde cero. Un equipo maduro no es el que más recorta: es el que sabe qué no recorta y por qué.
- El plan de optimización de Contoso
Partiendo de la factura analizada de julio —17.800 €—, el equipo priorizó las acciones por ahorro, riesgo y esfuerzo. Cifras orientativas y ficticias:
| # | Acción | Ahorro/mes | Riesgo | Esfuerzo | Origen |
|---|---|---|---|---|---|
| 1 | Reservas, plan de ahorro y Hybrid Benefit | 2.900 € | Medio (compromiso) | Bajo | 08-03 |
| 2 | Recorte de ingesta y planes de tabla en log-contoso-pro (42 → 24 GB/día) |
690 € | Bajo | Medio | 07-02 |
| 3 | Desperdicio de Advisor y Resource Graph | 457 € | Bajo | Bajo | 08-04 |
| 4 | Caché de estáticos y tarjetas en fd-contoso-global |
340 € | Bajo | Medio | 02-06 |
| 5 | Ciclo de vida más agresivo en sttarjetascontosopro y limpieza de stlagocontosopro |
215 € | Bajo | Bajo | 02-04 |
| 6 | Ampliar Detener-IniciarEntornosDev a todo rg-contoso-reservas-dev |
210 € | Bajo | Bajo | 07-04 |
| 7 | Muestreo adaptativo al 25 % en ai-insights-contoso-pro |
180 € | Medio | Bajo | 07-03 |
| 8 | Particionar el lago en Parquet para reducir TB leídos en Synapse | 130 € | Bajo | Medio | 03-06 |
| 9 | Bases de datos de desarrollo a sin servidor o detenidas | 120 € | Bajo | Bajo | 03-04, 03-05 |
| Total | ≈ 5.250 €/mes |
El criterio de ordenación no fue el ahorro absoluto, sino la relación ahorro ÷ (riesgo × esfuerzo), y por eso la acción 3 —457 € de limpieza sin riesgo ni esfuerzo— se ejecutó antes que la 1, pese a ahorrar seis veces menos. Hay además una dependencia dura entre ambas: la regla 3 de 08-03 exige optimizar antes de comprometerse, así que la limpieza y el redimensionamiento tenían que ir primero para que la reserva se comprara sobre la plataforma ya adelgazada.
Y una advertencia sobre la aritmética que conviene hacer siempre: estos ahorros no son perfectamente aditivos. La acción 2 reduce la ingesta y con ella la base sobre la que se calcularía un futuro compromiso de capacidad; la acción 4 reduce el egress pero también las transacciones de Storage, solapándose ligeramente con la 5. La estimación honesta que Contoso llevó al comité no fue una cifra sino un intervalo: entre 12.400 € y 13.000 € al mes, y el nuevo presupuesto se fijó en 13.000 € para no prometer el mejor caso.
- Antes y después
| Partida | Julio (antes) | Octubre (después) | Variación | Qué la produjo |
|---|---|---|---|---|
sql-contoso-reservas-pro + réplica |
2.660 € | 1.535 € | −42 % | Capacidad reservada + Hybrid Benefit |
aks-contoso-operaciones |
1.980 € | 1.150 € | −42 % | Reserva de 3 años + redimensionamiento del grupo aplicaciones |
log-contoso-pro + App Insights |
1.640 € | 770 € | −53 % | Recorte de ingesta, planes de tabla, retención y muestreo |
vmss-api-disponibilidad-pro |
1.320 € | 1.188 € | −10 % | Reserva de la línea base de 2 instancias |
fw-contoso-hub-pro |
1.010 € | 1.010 € | 0 % | Sin cambios: es control de salida obligatorio |
| Salida de datos | 780 € | 440 € | −44 % | Caché en fd-contoso-global |
| Resto de la plataforma | 8.410 € | 6.457 € | −23 % | Limpieza, ciclo de vida, apagados, Synapse, planes |
| Total | 17.800 € | 12.550 € | −29 % |
Tres lecturas. Ningún servicio se degradó: los tiempos de respuesta, la disponibilidad y el RPO/RTO son idénticos antes y después, y así se verificó con los paneles del módulo 7 durante las cuatro semanas siguientes. Más de la mitad del ahorro vino de dos sitios —compromisos y observabilidad—, coherente con la regla de optimizar de arriba abajo. Y fw-contoso-hub-pro sigue costando lo mismo, porque no todo lo caro es optimizable, y reconocerlo es parte del trabajo.
- Coste unitario: el indicador que importa
Un total absoluto es un mal indicador, porque no distingue entre gastar más por crecer y gastar más por desperdiciar. El indicador que sí distingue es el coste unitario: coste dividido por unidad de valor de negocio. En una aerolínea, coste por reserva vendida.
| Mes | Factura | Reservas vendidas | Coste por reserva | Lectura |
|---|---|---|---|---|
| Julio (antes) | 17.800 € | 92.000 | 0,193 € | Línea base |
| Octubre (después) | 12.550 € | 92.500 | 0,136 € | −30 % con el mismo volumen |
| Agosto siguiente (temporada) | 19.600 € | 148.000 | 0,132 € | Factura +10 %, coste unitario −3 % |
La tercera fila es la que cambia la conversación en el comité. La factura de agosto sube un 10 % respecto a julio y, mirada en absoluto, parece un fracaso. Mirada en coste unitario, es la mejor noticia del año: la plataforma absorbió un 60 % más de reservas con un 10 % más de gasto, es decir, escala con eficiencia creciente. Una factura que sube puede ser una excelente noticia, y sin coste unitario no hay forma de demostrarlo.
El indicador se calcula uniendo la exportación diaria de coste de stlagocontosopro (08-02) con la tabla de reservas, en syn-contoso-analitica-pro:
// Coste por reserva vendida, por dia, sobre el area de trabajo con ambos datos
let coste =
CosteDiario_CL
| where TimeGenerated > ago(90d)
| summarize eur = sum(CostInBillingCurrency_d) by dia = bin(TimeGenerated, 1d);
let ventas =
AppEvents
| where Name == "ReservaConfirmada"
| summarize reservas = count() by dia = bin(TimeGenerated, 1d);
coste
| join kind=inner ventas on dia
| extend costeUnitario = round(eur / todouble(reservas), 4)
| project dia, eur, reservas, costeUnitario
| order by dia asc
| render timechartContoso publica tres indicadores unitarios: coste por reserva vendida, coste por tarjeta de embarque emitida y coste por millón de peticiones a la API de disponibilidad. Cada uno tiene dueño, y los tres se revisan mensualmente. La regla que los gobierna: el objetivo no es que la factura baje; es que el coste unitario baje. Si el negocio crece un 40 % y la factura crece un 15 %, el equipo ha hecho un trabajo excelente aunque Nuria pague más que el mes pasado —y lo sabe, porque el indicador se lo enseña—.
- La revisión mensual de costes
El proceso que sostiene todo lo demás cabe en una hora al mes:
| Elemento | Definición en Contoso |
|---|---|
| Cuándo | Primer martes de mes, 60 minutos, en el calendario de forma permanente |
| Quién | Nuria (finanzas), Marta (infraestructura), Diego (backend), responsable de producto, responsable de datos |
| Entrada | El informe de una página de 08-04, enviado 48 horas antes |
| Qué se mira | Factura y variación; coste unitario; desviación frente al presupuesto; top 10 de partidas; anomalías del mes; desperdicio detectado; ahorro realizado frente al prometido; cobertura y utilización de compromisos; recursos sin etiquetar |
| Qué se decide | Qué se aplica este mes y quién lo hace; qué compromisos se compran; qué recortes se rechazan y por qué; qué presupuestos se ajustan |
| Salida | Lista de acciones con responsable y fecha, y las decisiones escritas |
Cuatro reglas aprendidas por las malas y que marcan la diferencia entre una reunión útil y una ceremonia:
- Se envía el informe antes. Una reunión que empieza leyendo datos no toma decisiones.
- Toda acción tiene nombre y fecha. «Habría que mirar el tema de los registros» no es una acción.
- Se compara el ahorro prometido con el realizado. Es el punto que da credibilidad, y también el que destapa las estimaciones optimistas.
- Se celebra el coste unitario, no la factura. Si se premia bajar la factura, alguien acabará frenando el crecimiento del negocio para conseguirlo.
- Políticas que previenen el gasto
La optimización más barata es la que evita el gasto antes de que exista, y para eso están las directivas del módulo 4, aplicadas desde la iniciativa «Base de gobernanza de Contoso»:
| Directiva | Efecto | Qué previene |
|---|---|---|
Regiones permitidas (westeurope, northeurope) |
Deny |
La VM en otro continente que nadie monitoriza, y la salida entre regiones |
| Tamaños de VM permitidos | Deny |
La Standard_E64s_v5 creada «para una prueba» |
| SKU permitidas en servicios de datos | Deny |
Un grupo dedicado de Synapse creado a mano |
Etiquetas obligatorias (entorno, proyecto, centro-coste, propietario) |
Deny |
El gasto que no se puede imputar a nadie |
hereda-centro-coste |
Modify |
Que el recurso hijo pierda la imputación del grupo |
| Prohibir IP pública en subredes de aplicación | Deny |
Coste y superficie de exposición a la vez |
| Auditar recursos sin configuración de diagnóstico | AuditIfNotExists |
Ceguera operativa; con el matiz de que desplegarla genera ingesta |
Ese último matiz merece atención porque es el bucle completo del módulo: una directiva pensada para mejorar la observabilidad crea gasto en log-contoso-pro. No es un argumento para no tenerla; es un argumento para desplegarla con las categorías de registro elegidas conscientemente, en lugar de activarlas todas.
Y una advertencia sobre el equilibrio: una directiva Deny demasiado estricta se convierte en una cola de excepciones que alguien tiene que aprobar, y eso reintroduce exactamente la fricción que la nube venía a eliminar. Contoso mantiene una lista corta de Deny —regiones, tamaños desproporcionados, etiquetas— y usa Audit para todo lo demás, revisando el resultado en la reunión mensual.
- El coste en el ciclo de vida del desarrollo
Que el coste sea un criterio de diseño y no una auditoría posterior exige integrarlo en cuatro puntos del proceso, todos ya vistos:
flowchart LR D["Diseño<br/>estimación con supuestos<br/>y alternativas comparadas"] --> R["Revisión de arquitectura<br/>el coste es un criterio<br/>junto a fiabilidad y seguridad"] R --> PR["Solicitud de cambios en Bicep<br/>comentario automático con<br/>el impacto de las SKU"] PR --> DE["Despliegue<br/>etiquetas obligatorias<br/>y presupuesto del entorno"] DE --> M["Operación<br/>Cost Management, Advisor,<br/>revisión mensual"] M --> D
La pieza con más efecto cultural es la tercera. Cuando la solicitud de incorporación de cambios muestra automáticamente que subir la SKU de una base de datos son 380 € al mes (08-01), la conversación sobre coste ocurre entre dos ingenieros, en el momento en que cambiarlo cuesta editar una línea, y sin que nadie tenga que hacer de policía. El coste deja de ser una auditoría y se convierte en información de diseño, que es todo el objetivo de FinOps.
- Anti-patrones de la optimización
| Anti-patrón | Por qué falla | Qué hacer |
|---|---|---|
| Optimizar sin medir | Se optimiza lo que se entiende, no lo que cuesta | Informar antes que optimizar: fase 1 completa |
| Recortar donde no está el dinero | El 80 % del gasto está en el 20 % de los recursos | Ordenar por coste y empezar por arriba |
| Ahorrar 50 € con 20 horas de ingeniería | El tiempo de ingeniería cuesta mucho más que lo ahorrado | Calcular siempre el coste de la acción, no solo el ahorro |
| Romper producción por un cambio de tamaño en viernes | Un incidente cuesta más que un año de ese ahorro | Ventanas, entorno previo y nunca antes de un fin de semana |
| Recortar la observabilidad hasta quedarse ciego | Sin datos no se puede optimizar ni operar | Recortar lo que no se consulta, conservar lo que se investiga |
| Reservar antes de estabilizar | Se paga tres años el tamaño equivocado | Optimizar primero, comprometerse después |
| Optimizar una vez | El desperdicio se regenera solo | Rutina mensual con dueños |
| Convertir el coste en un arma | Culpar a un equipo por su factura destruye la colaboración | Showback antes que chargeback; datos, no reproches |
| Perseguir el 100 % de puntuación | Lleva a aplicar recomendaciones improcedentes | Euros y riesgo como métricas, no la puntuación |
El tercero merece un comentario aparte porque es el más frecuente entre equipos técnicos motivados. Una jornada de ingeniería tiene un coste que suele estar en el orden de varios cientos de euros; dedicar veinte horas a un ahorro de 50 € al mes tarda casi un año en amortizarse, tiempo durante el cual esas veinte horas podrían haber estado en otra cosa. Antes de optimizar algo, estima cuánto cuesta optimizarlo. Es la misma disciplina de 08-01 aplicada al propio trabajo.
Errores Comunes y Consejos
- Creer que FinOps es una herramienta. Se compra un panel y no cambia nada; lo que cambia las cosas es la revisión mensual con dueños.
- Confundir eliminar desperdicio con aceptar un compromiso. Lo primero se ejecuta; lo segundo se decide con el negocio y se escribe.
- Optimizar sin verificar después. Se aplica el cambio y nadie comprueba si el ahorro apareció en la factura.
- Medir solo la factura total. Sin coste unitario no se distingue crecer de desperdiciar.
- Recortar observabilidad a ciegas. Es la partida más fácil de tocar y la que te deja sin instrumentos.
- No escribir lo que se rechaza. Dentro de un año nadie recordará por qué se paga GZRS.
- Automatizar apagados sin salvaguardas por etiqueta. Un runbook mal filtrado apaga producción un martes.
- Consejo: fija hoy la revisión mensual en el calendario, aunque el primer informe sea malo. La rutina crea el dato, no al revés.
- Consejo: publica el coste unitario en el mismo panel donde el equipo mira la latencia. Lo que se ve, se gestiona.
- Consejo: guarda un registro de decisiones de coste —aplicadas y rechazadas— junto a las plantillas de
contoso-infra.
Ejercicios
Ejercicio 1. La factura de Contoso Millas (centro-coste=CC-2077) es de 1.240 €/mes: App Service Premium v3 (420 €), PostgreSQL flexible con alta disponibilidad (390 €), Log Analytics (180 €), blobs de justificantes en GZRS (140 €) y Functions en consumo (110 €). El proyecto tiene 6.000 canjes al mes y un presupuesto de 900 €. Propón un plan priorizado con ahorro, riesgo y esfuerzo, indica qué no recortarías y calcula el coste unitario antes y después.
Ejercicio 2. Un ingeniero propone reducir la retención de log-contoso-pro de 90 a 7 días, ahorrando 480 €/mes. Analiza la propuesta: qué se pierde, qué alternativas hay con el mismo ahorro y menor impacto, y cómo la plantearías al comité si aun así hubiera que hacerla.
Ejercicio 3. Diseña la reunión mensual de costes de una empresa de 40 personas con una sola suscripción y 4.000 €/mes de factura. Define asistentes, duración, orden del día, indicadores y qué automatizarías para que el informe se prepare solo.
Soluciones
Solución 1: coste unitario de partida: 1.240 € ÷ 6.000 canjes = 0,207 €/canje. Plan priorizado. (1) Log Analytics (180 €): aplicar las tres palancas de 07-02 —revisar con Usage qué tablas se ingieren, pasar los registros de contenedor o de aplicación no investigados a plan Basic y ajustar la retención por tabla—; ahorro estimado 90 €, riesgo bajo, esfuerzo medio; es la partida con mejor relación ahorro/riesgo. (2) PostgreSQL (390 €): la alta disponibilidad con redundancia de zona duplica el cómputo; esto es un compromiso, no desperdicio, así que lo decide negocio —si un programa de fidelización tolera unas horas de indisponibilidad, desactivarla ahorra unos 180 €; si no, se mantiene y se busca en otro sitio—. En paralelo, sí es desperdicio puro comprobar el dimensionamiento y reservar a 1 año si el uso lleva tres meses estable (unos 60 € más). (3) App Service (420 €): comprobar si Premium v3 es necesario por redundancia de zona y ranuras o si se eligió por inercia; si el proyecto tolera un nivel inferior, el ahorro es grande, pero se pierden ranuras y escalado —de nuevo, compromiso—. (4) Blobs GZRS (140 €): pasar a ZRS ahorra parte, pero los justificantes de canje pueden tener valor probatorio; no se recorta sin consultar a legal. (5) Functions en consumo (110 €): ya está en el modelo más eficiente; no se toca. Lo que no se recorta en ningún caso: la retención mínima legal de los justificantes, y las copias de la base de datos. Resultado plausible: ~330 € de ahorro sin compromisos (Log Analytics, reserva y limpieza) → 910 €/mes, coste unitario 0,152 €/canje, un 27 % menos, prácticamente dentro del presupuesto sin degradar nada. Si el negocio acepta además renunciar a la alta disponibilidad, se baja de 900 € con holgura, pero esa decisión no la firma ingeniería.
Solución 2: qué se pierde con 7 días de retención: la capacidad de investigar cualquier incidente de más de una semana, la comparación con la línea base del mes anterior, el análisis de tendencias que sustenta el propio ejercicio de optimización, y —crítico— el cumplimiento, porque AzureActivity y los registros de acceso suelen tener requisitos de conservación de meses o años; recortar a 7 días de forma indiscriminada puede ser directamente un incumplimiento. Además, los incidentes de seguridad y el ransomware se detectan tarde (07-05): sin registros no hay forma de reconstruir qué pasó. Alternativas con ahorro comparable y mucho menor impacto, en orden: (1) reducir la ingesta de lo que nadie consulta —la palanca de mayor impacto—, identificando con la tabla Usage las tablas que representan el grueso del volumen y desactivando categorías de diagnóstico no usadas o filtrándolas con transformaciones en la regla de recopilación; (2) plan Basic para tablas de alto volumen y baja consulta como los registros de contenedor; (3) retención diferenciada por tabla, que es lo que resuelve el conflicto: AzureActivity a 365 días por cumplimiento, AppTraces a 30, registros de depuración a 8; (4) archivo a largo plazo, mucho más barato, con trabajos de búsqueda cuando haga falta; y (5) exportación a stlagocontosopro para lo que solo se necesita de forma esporádica. Con la combinación de las cinco se alcanza un ahorro similar conservando lo investigable. Si aun así hubiera que hacer el recorte, se plantea al comité como compromiso explícito: «ahorramos 480 €/mes y aceptamos que cualquier incidente de más de una semana será no investigable y que los registros de auditoría dejarán de cumplir el requisito X», con la firma de quien asume ese riesgo y una fecha de revisión.
Solución 3: asistentes cuatro personas: quien lleva finanzas, quien lleva infraestructura, un representante de producto y el responsable técnico del producto principal; más de cinco personas para 4.000 € es desproporcionado. Duración 30 minutos mensuales. Orden del día: (1) factura del mes, variación y desviación frente al presupuesto, 5 min; (2) coste unitario del indicador de negocio elegido, 5 min; (3) top 5 de partidas y anomalías detectadas, 5 min; (4) desperdicio de Advisor y Resource Graph con decisión aplicar/posponer/descartar, 10 min; (5) acciones con responsable y fecha, 5 min. Indicadores: total, variación mensual, coste unitario, porcentaje de recursos sin etiquetar, ahorro realizado frente al prometido, y cobertura de compromisos si los hay. Automatización: un runbook mensual en Azure Automation que ejecute az advisor recommendation list --category Cost y las consultas de Resource Graph de huérfanos y de recursos sin etiquetar, vuelque el resultado en una cuenta de almacenamiento y publique el resumen en Teams 48 horas antes de la reunión; una exportación diaria de coste; presupuesto con alertas al 80 % real y 100 % previsto hacia el grupo de acciones existente; y detección de anomalías activada. A este tamaño no procede el chargeback —con una sola suscripción y cuatro personas, el showback y una conversación bastan— ni comprar reservas antes de tener tres meses de uso estable.
Conclusión
Ya sabes qué es FinOps y por qué es cultura y no herramienta: en la nube quien gasta el dinero es quien escribe la plantilla, y la única alternativa a bloquear a la gente con aprobaciones es darle el dato y la responsabilidad. Conoces sus tres fases —informar, optimizar, operar—, la regla de que no se puede saltar la primera, y los tres papeles con sus nombres: Nuria aportando presupuesto y contexto económico, Marta aportando el conocimiento de qué se puede tocar, y Diego y producto decidiendo qué merece la pena; con la disfunción típica de que falte negocio y se acabe recortando lo técnicamente fácil en vez de lo económicamente irrelevante.
Tienes el catálogo completo de palancas que consolida el curso entero —apagar, limpiar huérfanos, dimensionar, escalar automáticamente, instancias de acceso puntual, reservas y planes de ahorro, Hybrid Benefit, consolidar planes, niveles sin servidor con pausa, autoescalado de RU/s, pausar Synapse, niveles y ciclo de vida de almacenamiento, las tres palancas de Log Analytics, muestreo en Application Insights, caché y CDN contra el egress, planes de hospedaje adecuados, arquitecturas sin servidor y basadas en eventos, y límites de tokens— con su ahorro típico y, sobre todo, con su riesgo. Y con él, la distinción que evita los desastres: eliminar desperdicio se ejecuta sin pedir permiso, aceptar un compromiso lo decide el negocio informado, con las tres preguntas —cuánto se ahorra, qué se pierde exactamente y qué pasa el día que eso importe—. Por eso Contoso dejó 2.555 € al mes sobre la mesa rechazando por escrito quitar la redundancia de zona de db-reservas, la réplica fg-contoso-reservas, el WAF, Defender for Cloud, el GZRS de las tarjetas, la retención de copias y el bastión.
Llevas el plan priorizado completo, ordenado por ahorro dividido entre riesgo y esfuerzo, con la limpieza ejecutada antes que los compromisos; el resultado medido —de 17.800 € a 12.550 € al mes, un 29 % menos, sin degradar un solo servicio— y la honestidad de presentarlo como intervalo y presupuestar el peor caso. Sabes que el indicador que de verdad importa es el coste unitario, que bajó de 0,193 € a 0,136 € por reserva vendida y siguió bajando en la temporada alta pese a que la factura subía, porque una factura que sube puede ser una excelente noticia y sin ese indicador no hay forma de demostrarlo. Y tienes el proceso que lo sostiene: la revisión mensual de una hora con sus asistentes, su informe enviado con 48 horas, sus acciones con nombre y fecha y su comparación entre ahorro prometido y realizado; las políticas que previenen el gasto desde la gobernanza del módulo 4; la integración del coste en el ciclo de vida del desarrollo, con la estimación en la revisión de arquitectura y el comentario automático en la solicitud de cambios de Bicep; y los anti-patrones que arruinan cualquier iniciativa, con el más caro de todos bien identificado: ahorrar cincuenta euros a costa de veinte horas de ingeniería.
Con esto se cierra el módulo 8 y, con él, la construcción de la plataforma. Merece la pena mirar el conjunto: Contoso Airlines empezó este curso con una idea vaga de lo que era la nube y termina con una plataforma desplegada sobre cómputo, almacenamiento y redes bien elegidos; con sus datos en los servicios adecuados y sus niveles de servicio justificados; asegurada con identidad, RBAC, secretos, WAF, Defender for Cloud y directivas que impiden crear lo que no debe existir; entregada por pipelines e infraestructura como código en lugar de por clics; ampliada con contenedores, funciones, mensajería e IA; observada de extremo a extremo, investigable con KQL, automatizada y recuperable con un plan probado; y ahora estimada, medida, presupuestada, repartida, optimizada y gobernada, con cada euro imputado a un centro de coste y cada decisión de recorte —incluidas las que se rechazaron— escrita con su motivo. La pregunta de Nuria Peña, la que abrió este módulo, tiene por fin respuesta: se sabe cuánto cuesta cada pieza, qué parte de esa factura es valor y qué parte era desperdicio, y quién decide sobre cada una.
Queda una última cosa, y es mirar todo esto de una vez. A lo largo de ocho módulos has visto la plataforma por partes, cada una en su lección, y esa es la forma de aprenderla; pero no es la forma en que existe. El módulo 9 cierra el curso con la vista de conjunto: la arquitectura completa de Contoso Airlines dibujada entera, con todos sus componentes y todas sus conexiones, para que puedas leerla como se lee un plano; el Azure Well-Architected Framework, que es el marco que justifica —o desmonta— cada una de las decisiones que has ido tomando, con sus cinco pilares y sus compromisos entre ellos; los errores comunes que se repiten en todas las organizaciones y cómo evitarlos antes de cometerlos; cómo se migra una organización entera con el Cloud Adoption Framework, porque Contoso todavía tiene sistemas en Barcelona; y hacia dónde va Azure, con las certificaciones que acreditan lo que ya sabes hacer. Ya tienes todas las piezas: el módulo 9 es donde aprendes a leer el conjunto con criterio.
Curso de Azure
Módulo 1: Introducción a Azure
- ¿Qué es Azure?
- Modelos de servicio, regiones y zonas de disponibilidad
- Crear y configurar tu cuenta de Azure
- Recorrido por el portal de Azure
- Azure Resource Manager: suscripciones, grupos de recursos y etiquetas
- Azure CLI, PowerShell y Cloud Shell
Módulo 2: Servicios principales de Azure
- Máquinas virtuales de Azure
- Escalado y alta disponibilidad del cómputo
- Azure App Service
- Azure Storage: blobs, archivos, colas y tablas
- Redes en Azure: redes virtuales, subredes y NSG
- Conectividad híbrida y entrega global
Módulo 3: Bases de datos de Azure
- Elegir el servicio de datos adecuado
- Azure SQL Database
- Azure Cosmos DB
- Azure Database for MySQL
- Azure Database for PostgreSQL
- Analítica de datos: Data Lake, Data Factory y Synapse
Módulo 4: Seguridad en Azure
- Microsoft Entra ID y gestión de identidades
- RBAC e identidades administradas
- Azure Key Vault
- Protección DDoS y firewall de aplicaciones web
- Microsoft Defender for Cloud
- Gobernanza y cumplimiento con Azure Policy
Módulo 5: Azure DevOps
- Introducción a Azure DevOps
- Azure Repos
- Azure Pipelines: integración continua
- Despliegue continuo con entornos y aprobaciones
- Azure Artifacts
- Infraestructura como código con Bicep
Módulo 6: Servicios avanzados de Azure
- Contenedores en Azure: Container Registry y Container Apps
- Azure Kubernetes Service (AKS)
- Azure Functions
- Azure Logic Apps
- Mensajería y eventos: Service Bus, Event Grid y Event Hubs
- Servicios de IA de Azure
Módulo 7: Monitoreo y gestión
- Azure Monitor: métricas, alertas y paneles
- Log Analytics y consultas KQL
- Application Insights
- Azure Automation y runbooks
- Copias de seguridad y recuperación ante desastres
Módulo 8: Gestión y optimización de costos
- Calculadora de precios y estimación de costes
- Azure Cost Management: análisis, presupuestos y alertas
- Reservas, planes de ahorro y Azure Hybrid Benefit
- Azure Advisor
- Estrategias de optimización y cultura FinOps
