La lliçó anterior va deixar la factura de MercadoFresco en 1.749,60 USD al mes, un 22 % per sota del punt de partida, i amb una anàlisi capaç d'explicar cada línia. Però tot això és mirar cap enrere. Si demà algú aixeca un clúster de proves al compte de desenvolupament i se n'oblida, o si una consulta nova es dispara un divendres a la nit, la factura creixerà sense que res s'hi interposi pel camí. Encara ningú no hi ha posat cap límit.
Aquesta lliçó passa d'analitzar a controlar. Veuràs la diferència entre el Cost Explorer i Budgets i per què l'alarma de facturació de 01-02 es queda curta, els quatre tipus de pressupost i les seves periodicitats —inclosos els planificats per a la campanya de Nadal—, la distinció entre llindars sobre cost real i previst, els pressupostos concrets que crea MercadoFresco per compte, servei, etiqueta i categoria de cost, la seva creació per consola, CLI i CDK, les notificacions, i la part amb dents: les accions de pressupost capaces de congelar el compte de desenvolupament quan arriba al seu límit. Al final, la rutina FinOps que sosté tot el cicle.
Avís de cost. Els dos primers pressupostos són gratuïts; a partir d'aquí costen 0,02 USD per pressupost i dia, és a dir, uns 0,60 USD al mes cadascun. Els deu pressupostos de MercadoFresco costen al voltant de 4,80 USD mensuals, un 0,27 % de la factura, que és probablement la millor assegurança del catàleg. Les accions de pressupost costen a part, uns 0,10 USD per acció i dia. Dades, comptes i identificadors ficticis.
Contingut
- Analitzar enfront de controlar
- Per què l'alarma de facturació de 01-02 es queda curta
- Els quatre tipus de pressupost
- Periodicitat: fixos, recurrents i planificats
- Cost real enfront de cost previst
- Llindars escalonats i a qui avisa cadascun
- Els pressupostos de MercadoFresco
- Crear un pressupost per consola, CLI i CDK
- El JSON complet, comentat
- Notificacions: correu, SNS i Slack
- Accions de pressupost
- El compte de desenvolupament que es congela sol
- L'advertiment sobre producció
- Informes de pressupostos i revisió mensual
- Bones pràctiques
- Quan un pressupost se supera per una raó legítima
- FinOps: informar, optimitzar i operar
- La reunió mensual de cost
- Errors habituals i consells
- Exercicis
- Conclusió
Analitzar enfront de controlar
Les dues eines s'assemblen a la pantalla i són radicalment diferents en el seu propòsit:
| Cost Explorer (11-03) | AWS Budgets | |
|---|---|---|
| Pregunta que respon | En què hem gastat? | Ens passarem? |
| Direcció temporal | Cap enrere | Cap endavant |
| Ús | Investigació puntual i revisió mensual | Vigilància contínua i desatesa |
| Sortida | Gràfics i taules per a una persona | Notificacions i accions |
| Freqüència de mirada | Quan algú hi entra | Mai: ja t'avisa ell |
| Pot impedir despesa | No | Sí, amb accions de pressupost |
La diferència pràctica és senzilla: el Cost Explorer requereix que algú se'n recordi, de mirar; Budgets no requereix que ningú faci res. I en una empresa de tres persones, tot allò que requereix que algú se'n recordi acaba fallant algun mes.
Convé també situar-lo enfront de la detecció d'anomalies d'11-03, amb la qual es confon:
- Detecció d'anomalies: «aquesta despesa no s'assembla al teu patró habitual». És estadística, no té opinió sobre si te la pots permetre.
- Budgets: «has superat el límit que tu mateix has posat». És una decisió de negoci expressada en un número.
Totes dues són necessàries i responen a casos diferents. Una pujada gradual del 3 % mensual durant sis mesos no dispara cap anomalia —és perfectament normal mes a mes— i sí que acaba rebentant el pressupost. Un pic d'un dia dispara l'anomalia i probablement no mogui el pressupost mensual.
Per què l'alarma de facturació de 01-02 es queda curta
A la lliçó 01-02, amb el compte acabat de crear, es va configurar una alarma de facturació de CloudWatch sobre la mètrica EstimatedCharges amb un llindar de 10 USD, i també el pressupost presupuesto-mensual-mercadofresco amb el mateix import. Allò va ser el correcte aleshores i avui és inútil, per cinc raons:
- L'import està obsolet. Fa vint-i-tants mesos que salta el dia 2 de cada mes. Una alarma que sempre està en vermell no és una alarma: és soroll, i ja ningú no en llegeix els correus.
- És global. Un sol número per a tota l'organització no diu on és el problema.
- Només mira cost real. S'assabenta quan ja s'ha gastat, no quan es gastarà.
- La mètrica
EstimatedChargesnomés existeix aus-east-1i és del compte de gestió: no permet vigilar un compte membre per separat. - No pot fer res. Notifica i prou.
La primera acció d'aquesta lliçó és, per tant, jubilar aquell pressupost: pujar-ne l'import al valor real i convertir-lo en el pressupost global de l'organització. No s'esborra —conserva l'històric— però deixa de ser un vestigi.
Els quatre tipus de pressupost
| Tipus | Què mesura | Exemple a MercadoFresco |
|---|---|---|
Cost (COST) |
Diners gastats en un període | «Desenvolupament no ha de passar de 170 USD al mes» |
Ús (USAGE) |
Quantitat d'un tipus d'ús concret | «No més de 900 GB processats pels NAT al mes» |
Savings Plans (SAVINGS_PLANS_UTILIZATION / _COVERAGE) |
Quin percentatge del compromís s'aprofita i quin percentatge de l'ús està cobert | «Avisa si la utilització baixa del 95 %» |
Reserves (RI_UTILIZATION / RI_COVERAGE) |
El mateix per a instàncies reservades | «Avisa si la cobertura d'ElastiCache baixa del 80 %» |
Els dos primers són els que es fan servir cada dia. Els dos últims existeixen perquè un compromís mal aprofitat són diners perduts de manera silenciosa, i esdevenen imprescindibles a partir d'11-05.
El pressupost d'ús és el menys conegut i resol un problema que el de cost no veu: si el preu d'un servei baixa, un pressupost de cost deixa d'avisar encara que el consum s'hagi disparat. MercadoFresco el fa servir per als NAT Gateway, on el volum de dades processades és un indicador de salut de l'arquitectura a més d'un cost.
Periodicitat: fixos, recurrents i planificats
| Periodicitat | Comportament | Quan fer-la servir |
|---|---|---|
| Mensual recurrent | El mateix import tots els mesos, comptador a zero el dia 1 | El cas normal; 8 dels 10 de MercadoFresco |
| Trimestral / anual | Acumula durant tot el període | Pressupostos de projecte o d'exercici comptable |
Fix (FIXED) |
Un import total per a un interval amb data de fi | Una migració, una prova de concepte, un contracte |
Planificat (PLANNED) |
Imports diferents per mes, definits per endavant | Estacionalitat coneguda |
El pressupost planificat és el que resol el problema real de MercadoFresco: al desembre, la campanya de Nadal multiplica les comandes i amb elles la despesa. Amb un pressupost mensual recurrent de 2.000 USD, el desembre dispara tots els llindars i l'equip aprèn a ignorar-los justament el mes en què més atenció cal.
El pressupost planificat de MercadoFresco:
| Mes | Import | Motiu |
|---|---|---|
| De gener a octubre | 2.000 USD | Operació normal |
| Novembre | 2.300 USD | Preparació de campanya, proves de càrrega |
| Desembre | 2.600 USD | Campanya: ×1,6 comandes les tres primeres setmanes |
| Gener següent | 2.100 USD | Cua de la campanya i devolucions |
I amb això es guanya una cosa més valuosa que un avís ben calibrat: la conversa de novembre. Posar-li un número al desembre obliga a estimar-lo, i estimar-lo obliga a parlar amb negoci sobre quantes comandes s'esperen. Un pressupost és, abans que un control, un exercici de previsió.
Cost real enfront de cost previst
Cada llindar d'un pressupost es pot avaluar contra dues coses diferents, i cal configurar-les totes dues:
| Tipus de llindar | Quan dispara | Què permet |
|---|---|---|
Cost real (ACTUAL) |
Quan el que s'ha gastat arriba al llindar | Certesa: ja ha passat |
Cost previst (FORECASTED) |
Quan la projecció de final de mes arriba al llindar | Anticipació: encara es pot evitar |
L'exemple que ho aclareix. Un pressupost de desenvolupament de 170 USD mensuals:
- El dia 9, s'han gastat 51 USD. El llindar real del 80 % (136 USD) no dispara: falta molt.
- Aquest mateix dia, la previsió de final de mes és de 170 USD, perquè el ritme diari ha pujat des del dia 6. El llindar previst del 100 % sí que dispara.
- Queden 21 dies per corregir. Aquesta és tota la diferència entre assabentar-se'n a temps i assabentar-se'n tard.
Dos advertiments sobre el previst, que no és màgia:
- Necessita historial. Un pressupost acabat de crear, o un compte nou, no genera previsions fiables durant les primeres setmanes. AWS necessita de l'ordre de cinc setmanes de dades.
- Extrapola. Si el dia 3 es va fer una migració puntual que va consumir molt, la previsió es creurà que allò es repeteix tot el mes i dispararà una falsa alarma. S'aprèn a reconèixer-les.
La configuració estàndard de MercadoFresco combina totes dues: previst al 80 % i al 100 % per anticipar, real al 100 % per constatar, i en el cas de desenvolupament, real al 100 % amb acció automàtica.
Llindars escalonats i a qui avisa cadascun
Un pressupost amb un sol llindar al 100 % avisa quan ja no es pot fer res. Un amb cinc llindars genera tant soroll que s'ignoren tots. Tres és el número que funciona:
| Llindar | Tipus | Significat | Qui el rep | Què s'espera |
|---|---|---|---|---|
| 50 % | Real | Anem per la meitat a mitjan mes: normal | Ningú per correu; només el tauler | Res |
| 80 % | Previst | Fregarem el límit | La Marta, per SNS a alertas-mercadofresco |
Mirar el desglossament aquesta setmana |
| 100 % | Previst | El superarem | La Marta + el propietari del compte | Decidir: corregir o pujar el pressupost |
| 100 % | Real | Ja l'hem superat | La Marta + el gerent | Explicació escrita a la revisió mensual |
| 120 % | Real | Se n'ha anat de les mans | Tothom, i acció a desenvolupament | Intervenció immediata |
La lògica de l'escalat té un principi al darrere: cada llindar ha de tenir un destinatari diferent i una acció esperada diferent. Si el 50 % i el 80 % avisen les mateixes persones perquè facin el mateix, un dels dos sobra. I el 50 % de MercadoFresco no envia correu a ningú expressament: arribar a la meitat del pressupost a mitjan mes és exactament el que ha de passar.
Els pressupostos de MercadoFresco
Deu pressupostos, tots coherents amb la factura de 1.749,60 USD posterior a les optimitzacions d'11-03:
| Pressupost | Àmbit | Despesa actual | Import | Llindars | Acció |
|---|---|---|---|---|---|
presupuesto-mensual-mercadofresco |
Tota l'organització | 1.749,60 USD | 2.000 USD | 80 % i 100 % previst, 100 % real | No |
pres-mf-produccion |
Compte 111122223333 |
1.266,10 USD | 1.400 USD | 80 % i 100 % previst, 100 % real | No, mai |
pres-mf-preproduccion |
Compte 222233334444 |
245,00 USD | 290 USD | 80 % i 100 % previst | No |
pres-mf-desarrollo |
Compte 333344445555 |
143,30 USD | 170 USD | 80 % previst, 100 % real | Sí: congelar |
pres-mf-herramientas |
Compte 555566667777 |
51,40 USD | 70 USD | 100 % previst | No |
pres-mf-gobierno |
Comptes 4444… i 9999… |
43,80 USD | 55 USD | 100 % previst | No |
pres-mf-analitica |
Etiqueta Componente=analitica |
187,50 USD | 220 USD | 80 % i 100 % previst | No |
pres-mf-cloudwatch |
Servei CloudWatch, tots els comptes | 140,90 USD | 170 USD | 100 % previst | No |
pres-mf-nat-uso |
Ús: GB processats pels NAT | 712 GB | 900 GB | 90 % real | No |
pres-mf-navidad |
Organització, planificat | — | 2.000-2.600 USD | 100 % previst | No |
Quatre decisions de disseny d'aquesta taula mereixen explicació:
El marge sobre la despesa actual és d'entre el 10 i el 20 %. Ni enganxat —dispararia cada mes per variacions normals— ni folgat —no avisaria mai—. La regla de MercadoFresco: el pressupost es fixa un 15 % per damunt de la despesa real dels tres últims mesos, i es revisa cada trimestre.
La suma dels pressupostos per compte (1.985 USD) és menor que el global (2.000 USD). És intencionat: si tots els entorns s'acosten al seu límit alhora, el global també avisa. Al revés —pressupostos per equip que sumen més que el global— és l'error clàssic que fa que ningú no se'n doni mai per al·ludit.
Desenvolupament és el més estricte i l'únic amb acció. El seu marge és del 18 % però el seu llindar d'acció és el cost real al 100 %, no el previst, per no congelar el compte per una previsió equivocada. És l'entorn on un error costa poc de corregir i on més experiments es fan.
Hi ha pressupostos que se solapen expressament. El d'analitica creua comptes i el de CloudWatch creua serveis: tots dos capturen despesa que ja està comptada als pressupostos per compte. No passa res per comptar dues vegades quan la finalitat és vigilar dues dimensions diferents. El que no s'ha de fer és sumar-los.
Crear un pressupost per consola, CLI i CDK
Per consola, a Billing → Budgets → Create budget, el flux és: plantilla o personalitzat → tipus → periodicitat i import → filtres (compte, servei, etiqueta, categoria) → llindars i destinataris → accions. És còmode per al primer i desaconsellable per als deu: un pressupost creat a mà no és a Git, no es revisa per pull request i desapareix si algú l'esborra.
Per CLI, amb dos fitxers JSON:
aws budgets create-budget \
--account-id 999988887777 \
--budget file://pres-mf-desarrollo.json \
--notifications-with-subscribers file://pres-mf-desarrollo-avisos.jsonPer CDK, que és com MercadoFresco els manté de debò, al repositori mercadofresco-infra:
from aws_cdk import Stack, aws_budgets as budgets
from constructs import Construct
class PilaPressupostos(Stack):
def __init__(self, ambit: Construct, identificador: str, **kwargs):
super().__init__(ambit, identificador, **kwargs)
TEMA_ALERTES = "arn:aws:sns:eu-west-1:111122223333:alertas-mercadofresco"
def pressupost(nom, quantitat, compte=None, etiqueta=None,
servei=None, amb_accio=False):
filtres = {}
if compte:
filtres["LinkedAccount"] = [compte]
if etiqueta:
filtres["TagKeyValue"] = [f"user:Componente${etiqueta}"]
if servei:
filtres["Service"] = [servei]
avisos = [
# 80 % previst: avis primerenc
budgets.CfnBudget.NotificationWithSubscribersProperty(
notification=budgets.CfnBudget.NotificationProperty(
comparison_operator="GREATER_THAN",
notification_type="FORECASTED",
threshold=80, threshold_type="PERCENTAGE"),
subscribers=[budgets.CfnBudget.SubscriberProperty(
address=TEMA_ALERTES, subscription_type="SNS")]),
# 100 % real: constatacio
budgets.CfnBudget.NotificationWithSubscribersProperty(
notification=budgets.CfnBudget.NotificationProperty(
comparison_operator="GREATER_THAN",
notification_type="ACTUAL",
threshold=100, threshold_type="PERCENTAGE"),
subscribers=[budgets.CfnBudget.SubscriberProperty(
address=TEMA_ALERTES, subscription_type="SNS")]),
]
return budgets.CfnBudget(
self, nom,
budget=budgets.CfnBudget.BudgetDataProperty(
budget_name=nom,
budget_type="COST",
time_unit="MONTHLY",
budget_limit=budgets.CfnBudget.SpendProperty(
amount=quantitat, unit="USD"),
cost_filters=filtres or None,
cost_types=budgets.CfnBudget.CostTypesProperty(
include_tax=False, # els impostos no s'optimitzen
include_credit=False, # els credits emmascaren la despesa
include_refund=False,
use_amortized=True, # coherent amb 11-03
),
),
notifications_with_subscribers=avisos,
)
pressupost("presupuesto-mensual-mercadofresco", 2000)
pressupost("pres-mf-produccion", 1400, compte="111122223333")
pressupost("pres-mf-preproduccion", 290, compte="222233334444")
pressupost("pres-mf-desarrollo", 170, compte="333344445555",
amb_accio=True)
pressupost("pres-mf-herramientas", 70, compte="555566667777")
pressupost("pres-mf-analitica", 220, etiqueta="analitica")
pressupost("pres-mf-cloudwatch", 170, servei="AmazonCloudWatch")Tres detalls del codi que eviten errors freqüents:
TagKeyValueamb el formatuser:Clau$Valor. Aquest$com a separador i el prefixuser:són obligatoris i no apareixen al lloc més obvi de la documentació. Amb la sintaxi mal escrita, el pressupost es crea sense error i filtra a zero, de manera que no avisa mai.include_tax=Falseiinclude_credit=False. Coherent amb la decisió d'11-03: el número de treball és el cost de serveis. Amb els impostos inclosos, un pressupost de 2.000 USD saltaria amb 1.653 USD de despesa real i ningú no sabria per què.use_amortized=True. Avui no canvia res perquè no hi ha compromisos, però a partir d'11-05 sí: sense amortitzar, el mes en què es pagui un Savings Plan per avançat dispararia tots els llindars de cop.
El JSON complet, comentat
L'equivalent per CLI del pressupost de desenvolupament, que és el més complet perquè inclou acció:
{
"BudgetName": "pres-mf-desarrollo",
"BudgetType": "COST",
"TimeUnit": "MONTHLY",
"BudgetLimit": { "Amount": "170", "Unit": "USD" },
"CostFilters": {
"LinkedAccount": ["333344445555"]
},
"CostTypes": {
"IncludeTax": false,
"IncludeSubscription": true,
"IncludeRefund": false,
"IncludeCredit": false,
"IncludeUpfront": true,
"IncludeRecurring": true,
"IncludeOtherSubscription": true,
"IncludeSupport": true,
"IncludeDiscount": true,
"UseAmortized": true,
"UseBlended": false
}
}I el fitxer d'avisos, que és un fitxer a part i no una propietat de l'anterior:
[
{
"Notification": {
"NotificationType": "FORECASTED",
"ComparisonOperator": "GREATER_THAN",
"Threshold": 80,
"ThresholdType": "PERCENTAGE",
"NotificationState": "ALARM"
},
"Subscribers": [
{ "SubscriptionType": "SNS",
"Address": "arn:aws:sns:eu-west-1:111122223333:alertas-mercadofresco" },
{ "SubscriptionType": "EMAIL", "Address": "[email protected]" }
]
},
{
"Notification": {
"NotificationType": "ACTUAL",
"ComparisonOperator": "GREATER_THAN",
"Threshold": 100,
"ThresholdType": "PERCENTAGE"
},
"Subscribers": [
{ "SubscriptionType": "SNS",
"Address": "arn:aws:sns:eu-west-1:111122223333:alertas-mercadofresco" },
{ "SubscriptionType": "EMAIL", "Address": "[email protected]" }
]
}
]Els camps que importen:
ThresholdTypeadmetPERCENTAGEoABSOLUTE_VALUE. El percentatge sobreviu als canvis d'import del pressupost; l'absolut s'ha d'actualitzar a mà i s'oblida.ComparisonOperatoradmetGREATER_THAN,LESS_THANiEQUAL_TO. ElLESS_THANté un ús legítim poc conegut: avisar que la utilització d'un Savings Plan ha baixat d'un mínim, que és justament el que caldrà a 11-05.IncludeSupport: trueiIncludeSubscription: truees deixen actius: la quota de suport i les subscripcions són despesa real que cal controlar, a diferència dels impostos.- Es poden barrejar destinataris SNS i correu en el mateix llindar. Deu subscriptors com a màxim per notificació.
Notificacions: correu, SNS i Slack
Tres canals, amb papers diferents:
| Canal | Avantatge | Inconvenient | Ús a MercadoFresco |
|---|---|---|---|
| Correu | No requereix configuració | Es perd entre la resta; ningú no el llegeix un divendres | Llindars del 100 % real, com a registre |
| SNS | S'integra amb tot: Lambda, cues, Chatbot | Requereix política de tema | El canal principal |
| Chatbot → Slack/Teams | Arriba on l'equip ja està mirant | Un canal més que es pot silenciar | Llindars del 80 % i 100 % previst |
Perquè Budgets pugui publicar al tema alertas-mercadofresco cal autoritzar-ho explícitament a la política del tema, i és el pas que més vegades s'oblida:
{
"Sid": "PermitirPublicarABudgets",
"Effect": "Allow",
"Principal": { "Service": "budgets.amazonaws.com" },
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:eu-west-1:111122223333:alertas-mercadofresco",
"Condition": {
"StringEquals": { "aws:SourceAccount": "999988887777" },
"ArnLike": { "aws:SourceArn": "arn:aws:budgets::999988887777:budget/*" }
}
}Les condicions aws:SourceAccount i aws:SourceArn no són cap adorn: sense elles, qualsevol pressupost de qualsevol compte d'AWS podria publicar en aquest tema. És el patró de protecció contra el «suplent confós» que ja es va veure a 04-01.
El resultat a Slack, a través del canal #mercadofresco-alertas que l'equip ja fa servir des del mòdul 5, té un avantatge afegit sobre el correu: és públic dins de l'equip. Un avís que veu tothom s'atén; un que arriba a una bústia compartida, no.
Accions de pressupost
Aquí Budgets deixa de ser un sistema d'avisos i passa a ser un control. Una acció de pressupost (Budget Action) s'executa quan s'arriba a un llindar i pot fer tres coses:
| Acció | Què fa | Reversible |
|---|---|---|
| Aplicar una política IAM | Adjunta una política —normalment restrictiva— a usuaris, grups o rols | Sí, traient-la |
| Aplicar una política de control de serveis (SCP) | Adjunta una SCP a una OU o compte | Sí |
| Aturar instàncies | Atura instàncies EC2 o clústers RDS concrets | Sí, arrencant-les |
I en dos modes:
- Automàtic (
AUTOMATIC): s'executa sola en arribar al llindar. - Manual (
MANUAL): notifica i espera que una persona autoritzada l'aprovi des de la consola.
La regla que governa l'elecció és senzilla i no admet excepcions còmodes: automàtic només on el pitjor cas sigui una molèstia; manual on el pitjor cas sigui un incident.
El compte de desenvolupament que es congela sol
El cas concret de MercadoFresco: el compte 333344445555 té un pressupost de 170 USD i, en arribar al 100 % de cost real, se li adjunta automàticament una SCP que impedeix crear recursos nous.
La política que s'aplica:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CongelarCreacionDeRecursosCaros",
"Effect": "Deny",
"Action": [
"ec2:RunInstances",
"ec2:CreateVolume",
"rds:CreateDBInstance",
"rds:CreateDBCluster",
"eks:CreateCluster",
"elasticache:CreateReplicationGroup",
"redshift-serverless:CreateWorkgroup",
"ecs:CreateService",
"elasticloadbalancing:CreateLoadBalancer",
"sagemaker:CreateNotebookInstance"
],
"Resource": "*"
}
]
}I la seva configuració com a acció:
aws budgets create-budget-action \
--account-id 999988887777 \
--budget-name pres-mf-desarrollo \
--notification-type ACTUAL \
--action-type SCP \
--action-threshold '{"ActionThresholdValue": 100, "ActionThresholdType": "PERCENTAGE"}' \
--approval-model AUTOMATIC \
--execution-role-arn arn:aws:iam::999988887777:role/rol-mercadofresco-acciones-presupuesto \
--definition '{
"ScpActionDefinition": {
"PolicyId": "p-mfcongelar01",
"TargetIds": ["333344445555"]
}
}' \
--subscribers '[
{"SubscriptionType": "SNS",
"Address": "arn:aws:sns:eu-west-1:111122223333:alertas-mercadofresco"}
]'Les decisions que fan que això sigui segur i no una bomba:
- Només es denega la creació de recursos cars. El que ja funciona continua funcionant: ningú no perd la feina en curs. Es pot continuar desplegant codi, llegint registres i consultant bases de dades. L'única cosa que no es pot fer és encendre alguna cosa nova i cara.
- Es dispara amb cost real, no previst. Congelar un compte per una previsió equivocada seria inacceptable fins i tot a desenvolupament.
- La SCP s'aplica només al compte
333344445555, no a l'OU sencera. Un error alTargetIdsque apuntés a l'OUCargascongelaria també producció, i aquest és exactament el tipus d'accident que cal dissenyar perquè no pugui passar. - El rol d'execució té permisos mínims: només
organizations:AttachPolicysobre aquesta política i aquest compte. - Hi ha un procediment de desbloqueig escrit a
mercadofresco-infra/docs/runbooks/, amb qui el pot executar (la Marta) i què es documenta després. Una acció automàtica sense procediment de reversió documentat és un parany per a l'equip.
L'efecte real observat el primer mes: el dia 24 de setembre, el compte va arribar a 170 USD perquè el Luis havia aixecat un clúster d'EKS per a l'exercici de 10-03 i el va deixar encès un cap de setmana. La SCP es va aplicar, el Luis va veure l'avís a Slack, va esborrar el clúster i la Marta va treure la SCP en deu minuts. Cost de l'incident: uns 40 USD. Sense el pressupost, el clúster hauria continuat encès fins a la revisió mensual: uns 220 USD.
L'advertiment sobre producció
Convé dir-ho amb tota claredat perquè és l'error més greu que es pot cometre amb aquesta eina:
No apliquis mai una acció automàtica restrictiva al compte de producció sense entendre exactament què es trenca.
L'escenari que ho explica: un divendres de campanya, les comandes es disparen, la despesa puja i el pressupost de producció arriba al 100 %. L'acció automàtica denega ecs:CreateService i elasticloadbalancing:CreateLoadBalancer. Fins aquí, potser inofensiu. Però si la política inclogués ec2:RunInstances o qualsevol acció que faci servir l'autoescalat, el sistema no podria escalar precisament en el moment en què més falta fa, i una decisió d'estalvi de 300 USD provocaria una caiguda que costa molt més que això.
Per això el pressupost pres-mf-produccion de MercadoFresco:
- No té cap acció automàtica. Cap.
- Té una acció manual de només notificació reforçada al 120 %, que exigeix aprovació explícita i que a la pràctica és un recordatori que cal mirar.
- El seu marge és més gran que el de la resta, perquè un mes bo de vendes ha de cabre-hi sense generar alarma.
I el principi general que se'n deriva: el control de costos no ha de poder degradar mai el servei als clients. Un pressupost superat es corregeix amb una decisió, no amb un tall automàtic.
Informes de pressupostos i revisió mensual
L'AWS Budgets Reports permet programar un informe periòdic —diari, setmanal o mensual— amb l'estat de fins a 50 pressupostos, enviat per correu a un màxim de 50 destinataris. Costa 0,01 USD per informe enviat.
MercadoFresco en té un:
| Paràmetre | Valor |
|---|---|
| Nom | informe-mensual-presupuestos-mf |
| Freqüència | Mensual, dia 3 |
| Pressupostos inclosos | Els deu |
| Destinataris | La Marta, el Luis, la Sara i el gerent |
| Cost | 0,01 USD al mes |
La seva funció no és informar —l'equip ja rep avisos a Slack— sinó obrir la reunió mensual amb un document comú. Que les quatre persones hagin vist el mateix PDF abans de seure estalvia els primers quinze minuts de qualsevol reunió de costos.
Bones pràctiques
Les set regles que MercadoFresco escriu al seu document de gestió de costos:
- Un pressupost per unitat amb propietari, no només un de global. Un pressupost global avisa que hi ha un problema; un per compte o per component avisa on és. El global sense els específics és gairebé inútil.
- Marges del 10 al 20 % sobre la despesa real dels últims tres mesos. Enganxat genera falses alarmes; folgat no avisa mai.
- Revisió trimestral de tots els imports, coincidint amb la revisió d'un pilar de Well-Architected. Un pressupost que fa un any que no es toca està malament, tant si sobra com si falta.
- Llindars previstos per actuar, reals per constatar. Sempre tots dos.
- Tot en codi. Els deu pressupostos viuen a
mercadofresco-infrai es despleguen amb el pipeline. Un de creat a mà a la consola desapareix sense deixar rastre quan algú l'esborra. - Accions automàtiques només on el pitjor cas sigui una molèstia. Desenvolupament sí, preproducció potser, producció mai.
- Un pressupost superat sempre genera una línia escrita, encara que la conclusió sigui «és normal, pugem l'import». Sense aquest registre, d'aquí a sis mesos ningú no recordarà per què el pressupost val el que val.
Quan un pressupost se supera per una raó legítima
És el cas més comú i el pitjor gestionat. El negoci creix, les comandes pugen un 35 %, la factura puja un 20 % i el pressupost salta. No hi ha cap error, cap recurs oblidat ni cap ineficiència: simplement el número era d'abans.
El procediment de MercadoFresco, en quatre passos:
- Comprovar el cost unitari abans que el total. Si el cost per comanda ha baixat o s'ha mantingut, el creixement és sa i la conversa és una altra. Si ha pujat, hi ha alguna cosa més que creixement.
- Identificar la causa concreta. «Han pujat les comandes» no n'hi ha prou; cal veure quines línies de la factura han crescut i comprovar que creixen les que han de créixer —Fargate, Aurora, cues— i no les que no haurien de fer-ho —registres, transferència, orfes—.
- Decidir explícitament: pujar el pressupost, optimitzar, o totes dues coses. La decisió la pren qui és propietari del pressupost, no qui el vigila.
- Documentar el canvi d'import amb la seva data i el seu motiu al mateix repositori on viu el pressupost. El commit és el registre.
El que no s'ha de fer, i es fa constantment: pujar l'import a la consola sense dir-ho a ningú. Al cap d'un any, ningú no sap per què el pressupost de producció és de 3.400 USD ni qui ho va decidir, i el número ha deixat de significar res.
FinOps: informar, optimitzar i operar
Tot el que hem vist a les tres últimes lliçons té un nom a la indústria: FinOps, la disciplina de gestionar la despesa al núvol com una responsabilitat compartida entre tecnologia, finances i negoci. El seu model té tres fases que es repeteixen en cicle:
graph LR I["INFORMAR<br/>Visibilitat i assignacio<br/>11-02 i 11-03"] --> O["OPTIMITZAR<br/>Reduir i comprometre<br/>11-03 i 11-05"] O --> P["OPERAR<br/>Governar i automatitzar<br/>11-04"] P --> I
| Fase | Què es fa | On s'ha vist | Estat a MercadoFresco |
|---|---|---|---|
| Informar | Etiquetatge, assignació, cost unitari, taulers | 11-02, 11-03 | Fet |
| Optimitzar | Apagar el que sobra, dimensionar, comprometre | 11-03, i 11-05 | Primera passada feta |
| Operar | Pressupostos, polítiques, accions, rutina | 11-04 | En marxa |
Els tres principis que sostenen el model i que convé no perdre de vista:
- Els equips són propietaris de la seva despesa. No hi ha una persona que controla els diners de tothom: hi ha informació repartida i responsabilitat local. Per això el repartiment per
Propietariod'11-02 importa. - Les decisions es prenen sobre valor de negoci, no sobre cost absolut. Gastar més pot ser la decisió correcta. La pregunta mai no és «com gastem menys?» sinó «obtenim valor pel que gastem?».
- Un equip central habilita, no controla. A MercadoFresco aquest equip és la Marta amb dues hores al mes. En una empresa gran seria un equip, però el seu paper és el mateix: donar eines i context, no aprovar despeses.
Qui hi participa, en una empresa de tres persones:
| Persona | Paper FinOps | Responsabilitat concreta |
|---|---|---|
| Marta | Practicant FinOps i responsable tècnica | Manté pressupostos i etiquetes; convoca la reunió; decideix les optimitzacions tècniques |
| Luis | Enginyer, propietari de la seva despesa | Respon pel cost de la botiga i dels comptes no productius |
| Sara | Negoci i dades | Aporta el volum de comandes per al cost unitari; respon per analitica |
| Gerent | Pressupost i prioritat | Aprova imports, compromisos i el nivell de risc acceptable |
La reunió mensual de cost
La Marta instaura una reunió de 30 minuts, el dia 5 de cada mes, amb un guió fix:
| Minuts | Contingut | Qui |
|---|---|---|
| 0-3 | Cost per comanda del mes i la seva variació | Marta |
| 3-8 | Total i repartiment per entorn enfront del pressupost | Marta |
| 8-15 | Les tres línies que més han pujat i per què | Luis i Sara |
| 15-20 | Anomalies i pressupostos superats des de l'última reunió | Marta |
| 20-25 | Una acció per al mes, amb propietari i data | Tothom |
| 25-30 | Previsió del mes en curs i avisos per al següent | Marta |
Les tres regles que fan que la reunió sobrevisqui més de tres mesos:
- Comença pel cost unitari, no pel total. Canvia el to de la conversa de «gastem molt» a «gastem bé o malament».
- Una sola acció al mes. Dotze accions executades a l'any valen més que quaranta d'abandonades.
- Ningú no s'emporta una sorpresa en públic. Si la despesa d'algú s'ha disparat, se'n parla abans. Una reunió de costos que es converteix en un tribunal deixa de celebrar-se.
Errors Habituals i Consells
Error: un únic pressupost global. Avisa que hi ha un problema i no diu on. Consell: un per compte com a mínim, i un per component crític. El global és el sostre, no l'instrument.
Error: pressupostos per equip que sumen més que el global. Cadascú es pensa que va bé i el total es dispara sense que ningú se'n doni per al·ludit. Consell: la suma dels específics ha de quedar per sota del global, deixant marge.
Error: fer servir només llindars sobre cost real. T'assabentes quan ja no es pot fer res. Consell: previst al 80 % i al 100 % per anticipar, real al 100 % per constatar.
Error: deixar el pressupost de 10 USD de la primera lliçó. Salta cada dia 2, s'ignora, i amb ell s'ignoren tots els altres avisos del mateix canal. Consell: un pressupost que sempre està en vermell fa mal actiu. Actualitza'l o treu-lo.
Error: incloure impostos i crèdits a l'import. El pressupost salta amb una despesa real molt inferior i ningú no entén per què. Consell: IncludeTax=false i IncludeCredit=false, coherent amb l'anàlisi d'11-03.
Error: escriure malament el filtre per etiqueta. El format és user:Clau$Valor; amb una altra sintaxi el pressupost es crea sense error i filtra a zero, de manera que no avisa mai. Consell: després de crear-lo, comprova a la consola que mostra una despesa actual diferent de zero.
Error: acció automàtica a producció. Un divendres de campanya, la política denega l'escalat justament quan cal. Consell: producció mai; i si algun dia es fa, que la política no toqui res que faci servir l'autoescalat.
Error: oblidar la política del tema SNS. El pressupost es crea, s'arriba als llindars i no arriba res. Consell: afegeix el permís a budgets.amazonaws.com amb aws:SourceAccount, i prova l'avís creant temporalment un pressupost de 0,01 USD.
Error: pujar l'import a la consola quan salta. Al cap de sis mesos ningú no sap per què el pressupost val el que val. Consell: l'import viu al CDK; canviar-lo és un commit amb el seu motiu.
Consell: crea el pressupost abans de crear els recursos. Un pressupost és un límit acordat, no un resum a posteriori. Quan s'obri un entorn nou, el primer que es desplega és el seu pressupost.
Consell: fes servir un pressupost d'ús per al que no vols que creixi, encara que avui sigui barat: GB pel NAT, GB ingerits a CloudWatch, peticions a l'API del Cost Explorer. El cost pot baixar de preu; el consum desbocat continua sent un símptoma.
Exercicis
Exercici 1: dissenyar el conjunt de pressupostos
Una empresa fictícia, RopaCircular, ven roba de segona mà. Té tres comptes —producció (2.800 USD/mes), preproducció (600 USD/mes) i dades (900 USD/mes)— i un equip de vuit persones. Al novembre, el Black Friday multiplica per tres les seves vendes. El gerent ha demanat «que no se'ns en vagi de les mans» i ha donat un sostre anual.
- Proposa el conjunt de pressupostos amb els seus imports, tipus i periodicitats.
- Indica quins llindars posaries a cadascun i a qui avisarien.
- En quin compte posaries una acció automàtica i amb quina política exacta?
- Com tractaries el novembre?
Exercici 2: interpretar un avís
El dia 11 d'octubre arriba aquest avís a alertas-mercadofresco:
AWS Budgets: pres-mf-produccion Llindar: 100 % (FORECASTED) Pressupost: 1.400,00 USD Despesa actual: 612,40 USD Previsió: 1.482,00 USD
- És motiu d'alarma? Raona-ho amb les dades disponibles.
- Enumera tres comprovacions que faries, en ordre.
- Si resulta que les comandes d'octubre van un 22 % per damunt de setembre, quina decisió prendries i què documentaries?
Exercici 3: dissenyar una acció de pressupost segura
Et demanen aplicar una acció automàtica al compte de preproducció 222233334444, amb pressupost de 290 USD, per evitar que es dispari com va passar una vegada a desenvolupament.
- Escriu la política que aplicaries, justificant què hi inclous i què en deixes fora.
- Tria entre llindar real o previst i entre mode automàtic o manual, justificant-ho.
- Enumera tres coses que podrien sortir malament i com les mitigaries.
Solucions
Solució a l'exercici 1
(1) Conjunt de pressupostos proposat:
| Pressupost | Àmbit | Tipus | Periodicitat | Import |
|---|---|---|---|---|
rc-global |
Organització | Cost | Planificat | 4.800 USD (nov: 8.500) |
rc-produccion |
Compte producció | Cost | Planificat | 3.200 USD (nov: 6.500) |
rc-preproduccion |
Compte preproducció | Cost | Mensual | 700 USD |
rc-datos |
Compte dades | Cost | Mensual | 1.050 USD |
rc-anual |
Organització | Cost | Anual | El sostre del gerent |
Cinc pressupostos amb marges d'entre el 14 % i el 17 %. La suma dels tres per compte (4.950 USD) queda lleugerament per damunt del global de 4.800, cosa que en aquest cas és acceptable perquè el global és planificat i actua com a sostre mensual; si es vol el patró estricte, es puja el global a 5.200.
El rc-anual mereix un comentari a part: és el que tradueix literalment el que ha demanat el gerent. Un pressupost anual acumula tot l'exercici i avisa quan la suma dels mesos transcorreguts apunta a superar el sostre. És l'únic que respon a la pregunta «complirem l'any?», que cap pressupost mensual no pot respondre.
(2) Llindars i destinataris:
| Pressupost | Llindars | Destinataris |
|---|---|---|
rc-global |
80 % previst, 100 % previst, 100 % real | Responsable tècnic; el gerent només al 100 % real |
rc-produccion |
80 % i 100 % previst | Responsable tècnic + propietari del producte |
rc-preproduccion |
80 % previst, 100 % real | Responsable tècnic |
rc-datos |
80 % i 100 % previst | Responsable tècnic + equip de dades |
rc-anual |
50 %, 75 % i 90 % real | Gerent i responsable tècnic |
Fixa't que l'anual fa servir llindars reals i més baixos: amb un horitzó de dotze mesos, arribar al 75 % al setembre ja és un senyal accionable.
(3) Acció automàtica: només a preproducció, i amb aquesta política:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Action": ["ec2:RunInstances", "rds:CreateDBInstance", "rds:CreateDBCluster",
"eks:CreateCluster", "elasticache:CreateReplicationGroup",
"sagemaker:CreateNotebookInstance"],
"Resource": "*"
}]
}Es denega crear recursos cars i no es toca res del que ja existeix. A producció no s'hi posa cap acció, per la raó de sempre: el pitjor cas és una caiguda durant el Black Friday, que costa moltíssim més que el sobrecost que s'evitaria. A dades tampoc: un procés de càrrega interromput a mitges pot deixar el magatzem inconsistent, que és un incident i no una molèstia.
(4) El novembre. Amb un pressupost planificat que assigni al novembre un import d'acord amb el triple de vendes —uns 8.500 USD globals— i amb dues mesures d'acompanyament: pujar els llindars d'anomalia durant la campanya, perquè el patró canvia i el detector generarà falsos positius; i desactivar temporalment l'acció automàtica de preproducció durant la setmana del Black Friday, ja que és quan més proves es fan i una congelació en aquell moment bloquejaria l'equip justament quan no s'ho pot permetre. Totes dues mesures es documenten amb data de reversió, perquè ningú no oblidi tornar-les a activar al desembre.
Solució a l'exercici 2
(1) És motiu d'alarma? D'alarma no, d'atenció sí. Les dades diuen això: el dia 11 s'ha consumit el 43,7 % del pressupost, quan el proporcional seria un 35,5 %. La previsió de 1.482 USD supera el pressupost en un 5,9 %, que és un marge petit i està dins del que una previsió es pot equivocar. A més, l'avís és del tipus previst, no real: queden 20 dies per actuar. Ignorar-lo seria un error, i alarmar-se també.
(2) Tres comprovacions, en ordre:
- El cost per comanda. Si l'octubre porta més comandes que el setembre i el cost unitari es manté o baixa, el creixement és sa i la conversa passa a ser sobre l'import del pressupost, no sobre un problema tècnic. És la primera comprovació sempre.
- Vista diària del mes al Cost Explorer, filtrada al compte de producció. Es busca un esglaó: si la despesa diària va pujar de cop un dia concret i s'hi manté, hi ha un recurs nou o un canvi de configuració; si la pujada és gradual, és volum de negoci.
- Desglossament per servei comparant amb el mes anterior, mirant el valor absolut de la variació. Si pugen Fargate, Aurora i les cues, és activitat real. Si puja CloudWatch, la transferència de dades o apareix un servei que abans no hi era, és una altra cosa.
(3) Decisió i documentació. Amb les comandes un 22 % per damunt i el pressupost projectat un 5,9 % per damunt, el cost per comanda està baixant de manera notable: el sistema absorbeix un 22 % més de negoci amb un 6 % més de despesa. És la millor notícia possible.
La decisió correcta és pujar el pressupost de producció de 1.400 a 1.600 USD, i no fer cap optimització d'urgència. El que es documenta, al commit que canvia l'import al CDK:
Pujar pres-mf-produccion de 1.400 a 1.600 USD Motiu: creixement sostingut del negoci. Les comandes d'octubre van un 22 % per damunt de setembre i el cost per comanda baixa de 0,00972 a 0,00891 USD. El pressupost anterior es va fixar a l'agost sobre un volum de 180.000 comandes mensuals; el volum actual es d'uns 220.000. Revisio de l'import: gener, despres de la campanya de Nadal. Aprovat per: gerencia, 2026-10-12.
Amb dos apunts que eviten problemes futurs: cal revisar també el pressupost global de 2.000 USD, perquè si producció puja a 1.600 la suma dels específics s'acosta massa al sostre; i convé anotar la revisió de gener, perquè l'import d'octubre incorpora un creixement que pot no ser permanent.
Solució a l'exercici 3
(1) La política. Preproducció té una particularitat que la distingeix de desenvolupament: s'ha d'assemblar a producció, i el pipeline hi desplega automàticament. Això condiciona què es pot denegar:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "CongelarSoloLoCaroYNoAutomatizado",
"Effect": "Deny",
"Action": [
"ec2:RunInstances",
"rds:CreateDBInstance",
"rds:CreateDBCluster",
"eks:CreateCluster",
"elasticache:CreateReplicationGroup",
"redshift-serverless:CreateWorkgroup",
"sagemaker:CreateNotebookInstance"
],
"Resource": "*"
}]
}S'inclou la creació de bases de dades, clústers, memòries cau i instàncies, que a preproducció es creen a mà per a proves puntuals i són el que dispara la factura. Es deixa fora deliberadament ecs:CreateService, ecs:RunTask, elasticloadbalancing:*, lambda:* i cloudformation:*, perquè tot això ho fa servir el pipeline a cada desplegament: denegar-ho trencaria la integració contínua, i un equip que no pot desplegar a preproducció acaba desplegant a producció sense provar, que és infinitament pitjor que gastar 50 USD de més.
(2) Llindar i mode: ACTUAL al 100 % i mode MANUAL.
- Real i no previst, per la mateixa raó que a desenvolupament: una previsió equivocada no ha de bloquejar un entorn del qual depèn el pipeline.
- Manual i no automàtic, i aquesta és la diferència clau amb desenvolupament. A desenvolupament el pitjor cas és que el Luis no pugui aixecar una màquina de proves durant unes hores: una molèstia. A preproducció el pitjor cas és que es bloquegi la validació d'un desplegament urgent —per exemple, un pedaç de seguretat—: això ja és un incident. El mode manual notifica, mostra l'acció proposada i espera que la Marta l'aprovi amb un clic, cosa que preserva el control sense automatitzar el risc.
(3) Tres coses que podrien sortir malament i la seva mitigació:
| Risc | Mitigació |
|---|---|
| L'acció bloqueja el pipeline perquè la política inclou una acció que el desplegament necessita | Provar la política primer a desenvolupament durant un cicle complet de desplegament; revisar els esdeveniments de CloudTrail d'un desplegament real per saber quines accions s'invoquen de debò |
TargetIds mal posat i la SCP s'aplica a l'OU sencera, arribant a producció |
Apuntar sempre al compte concret, mai a l'OU; desplegar l'acció per CDK i revisar el diff al pull request; provar amb una política que només denegui una acció inofensiva |
| Ningú no sap com treure-la un diumenge a la nit | Runbook escrit a mercadofresco-infra/docs/runbooks/, amb l'ordre exacta d'organizations:DetachPolicy, qui hi té permís i què es documenta després. I assajar-ho un cop |
Un quart risc que convé anticipar: l'avís de l'acció manual pot quedar-se sense aprovar si arriba un divendres a la tarda. La mitigació no és tècnica sinó organitzativa: acordar que les accions manuals pendents formen part de la revisió diària de la guàrdia, que és una de les troballes d'excel·lència operativa que 11-01 va deixar obertes.
Conclusió
MercadoFresco ha passat de saber el que gasta a no poder passar-se sense assabentar-se'n.
Saps distingir analitzar de controlar: el Cost Explorer mira cap enrere i requereix que algú se'n recordi; Budgets mira cap endavant i no requereix que ningú faci res. I saps situar-los enfront de la detecció d'anomalies, que respon a una altra pregunta —«això no s'assembla al teu patró»— i que no detecta una pujada gradual del 3 % mensual capaç de rebentar un pressupost en sis mesos. Amb les cinc raons per les quals l'alarma de 10 USD de 01-02 havia quedat inservible, la primera de les quals és la més greu: un avís que sempre està en vermell fa mal actiu, perquè ensenya l'equip a ignorar el canal sencer.
Tens els quatre tipus de pressupost —cost, ús, Savings Plans i reserves—, amb el d'ús com el menys conegut i el que detecta el que el de cost no veu quan baixen els preus. I les periodicitats, amb el pressupost planificat resolent el problema real de la campanya de Nadal: imports diferents per mes, de 2.000 en operació normal a 2.600 al desembre, perquè el mes que més atenció necessita no sigui justament el mes en què tots els avisos s'ignoren. Amb l'efecte col·lateral més valuós: posar-li un número al desembre obliga a estimar-lo, i estimar-lo obliga a parlar amb negoci.
Tens la distinció entre llindars sobre cost real i previst, i la raó de configurar tots dos: el dia 9 amb 51 USD gastats, el llindar real no dispara i el previst sí, deixant 21 dies per corregir. Amb els dos advertiments del previst —necessita unes cinc setmanes d'historial i extrapola qualsevol despesa puntual— i l'escalat de tres llindars amb la regla que l'ordena: cada llindar ha de tenir un destinatari i una acció esperada diferents, fins al punt que el 50 % de MercadoFresco no avisa ningú expressament.
Tens els deu pressupostos concrets sobre la factura de 1.749,60 USD: global de 2.000, producció 1.400, preproducció 290, desenvolupament 170, eines 70, govern 55, més els transversals per etiqueta analitica (220), per servei CloudWatch (170), d'ús de NAT (900 GB) i el planificat de Nadal. Amb les quatre decisions de disseny: marges del 10 al 20 %, la suma dels específics per sota del global perquè el sostre també avisi, desenvolupament com l'únic amb acció, i pressupostos que se solapen expressament perquè vigilen dimensions diferents —i que per això no se sumen—.
Tens la creació per consola, CLI i CDK, que és com es mantenen de debò, amb els tres detalls que fallen: el format user:Clau$Valor del filtre per etiqueta, que mal escrit crea un pressupost que filtra a zero i no avisa mai; IncludeTax i IncludeCredit a false per treballar sobre el cost de serveis; i UseAmortized activat des d'ara, perquè el mes en què es pagui un compromís no dispari tots els llindars. Més les notificacions pels tres canals i la política del tema SNS amb aws:SourceAccount i aws:SourceArn, que és el pas que més vegades s'oblida.
I tens la part amb dents: les accions de pressupost, amb els seus tres tipus —política IAM, SCP i aturar instàncies— i els seus dos modes, governats per una regla sense excepcions còmodes: automàtic només on el pitjor cas sigui una molèstia; manual on el pitjor cas sigui un incident. Amb el cas complet del compte de desenvolupament 333344445555, que es congela sol al 100 % de cost real mitjançant una SCP que només denega crear recursos cars i no toca res del que ja funciona, apuntada al compte i mai a l'OU, amb rol de permisos mínims i runbook de desbloqueig. I l'incident real que ho va justificar tot: un clúster d'EKS oblidat un cap de setmana, 40 USD en lloc de 220. Amb l'advertiment que cal gravar a foc: cap acció automàtica restrictiva a producció, perquè una política que impedeixi escalar un divendres de campanya converteix un estalvi de 300 USD en una caiguda que costa molt més.
I tens la rutina que ho sosté tot: els informes de pressupostos que obren la reunió amb un document comú, les set bones pràctiques, el procediment de quatre passos per quan un pressupost se supera per una raó legítima —començant sempre pel cost unitari, i acabant sempre amb un commit que expliqui el nou import—, i el marc FinOps amb el seu cicle d'informar, optimitzar i operar, els seus tres principis —els equips són propietaris de la seva despesa, les decisions es prenen sobre valor i no sobre cost, i l'equip central habilita en lloc de controlar— i la reunió mensual de 30 minuts que comença pel cost per comanda, produeix una sola acció i en la qual ningú no s'emporta una sorpresa en públic.
Queda una palanca sense fer servir, i és l'única que redueix la factura sense canviar absolutament res de l'arquitectura. Tot el que MercadoFresco té funcionant —les tasques de Fargate que estan enceses 24 hores al dia, les funcions Lambda que s'invoquen cada minut, els nodes d'ElastiCache que fa mesos que no s'apaguen— s'està pagant a preu sota demanda, és a dir, al preu de qui podria marxar demà. Hi ha una part d'aquest consum que és completament previsible i que continuarà sent-hi d'aquí a un any. I AWS paga per saber-ho per endavant.
A 11-05, «AWS Savings Plans», es tanca el cicle d'optimització comprometent capacitat: els quatre models de compra amb el seu descompte i el seu risc, com funciona el compromís per dòlar-hora amb un exemple numèric pas a pas, què cobreix cada tipus i què no —important en una arquitectura com aquesta, majoritàriament serverless—, com s'identifica la base estable enfront de la part elàstica, i el pla de compra concret de MercadoFresco amb el seu estalvi mensual i anual. Amb l'ordre que 11-03 ja va avançar i que aquí es justifica del tot: primer apagar el que sobra, després comprometre.
Curs d'AWS
Mòdul 1: Introducció a AWS
- Què és AWS?
- Configuració del teu compte d'AWS
- Infraestructura global d'AWS
- Consola d'administració d'AWS
- AWS CLI i SDK
Mòdul 2: Serveis principals d'AWS
Mòdul 3: Xarxes i lliurament de contingut
- Amazon VPC
- Grups de seguretat i llistes de control d'accés
- Elastic Load Balancing
- Amazon CloudFront
- Route 53
Mòdul 4: Seguretat i identitat
- AWS Identity and Access Management (IAM)
- AWS Key Management Service (KMS)
- Secrets Manager i Parameter Store
- AWS Shield
- AWS WAF
Mòdul 5: Monitoratge i gestió
- Amazon CloudWatch
- AWS X-Ray i traçabilitat distribuïda
- AWS CloudTrail
- AWS Config
- AWS Trusted Advisor
Mòdul 6: Bases de dades
- Com triar la base de dades adequada
- Amazon DynamoDB
- Amazon Aurora
- Amazon Redshift
- Amazon ElastiCache
Mòdul 7: Integració d'aplicacions
- Amazon SQS
- Amazon SNS
- Amazon EventBridge
- AWS Step Functions
- Patrons d'integració: idempotència, reintents i cues de missatges fallits
