DEV Community

Cover image for AWS Cost Optimization: Por qué las Tags son tu mejor aliado

AWS Cost Optimization: Por qué las Tags son tu mejor aliado

Seguro te ha pasado: llega fin de mes, abres el AWS Billing Dashboard y ves un pico de consumo en EC2 o RDS. Intentas descifrar qué proyecto, entorno (staging/prod) o equipo es el responsable, pero te encuentras con un mar de recursos llamados test-instance, db-final-v2 o, peor aún, sin nombre.

cost

En mi post anterior sobre AWS Lambda Optimizations hablamos de performance. Pero hoy vamos a dar un paso atrás. Si no puedes medir, no puedes optimizar. El primer paso para una estrategia real de FinOps es el etiquetado estratégico.

El problema: La factura "Caja Negra"

Sin etiquetas, AWS te dice cuánto gastas, pero no quién o por qué. Así se ve el flujo de "desperdicio" cuando no hay visibilidad:

tags

La solución: Implementar un Standard de Tagging

No necesitas 50 etiquetas. Empieza con estas 4 que te salvarán la vida:

Project: Para saber a qué producto pertenece.

Environment: (dev, staging, prod). El gasto en prod es inversión; en dev, suele ser optimizable.

Owner: Quién es el responsable técnico.

CostCenter: Para que el equipo de finanzas sea feliz.

with-tags

¿Cómo lo hacemos de forma automática? (The CDK Way)

Nadie quiere poner etiquetas a mano. Si usas AWS CDK, tienes una ventaja competitiva: los Tags.of(). En lugar de ir recurso por recurso, puedes aplicar etiquetas a todo un Scope (como un Stack completo) y CDK se encargará de propagarlas a todos los recursos hijos (instancias, buckets, subnets, etc.).

Aquí tienes cómo hacerlo en TypeScript:

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';

export class MyProjectStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Definimos los recursos normalmente...

    // ¡La magia ocurre aquí! 
    // Aplicamos tags a TODO el Stack y sus hijos
    cdk.Tags.of(this).add('Project', 'SkyNet');
    cdk.Tags.of(this).add('Environment', 'Production');
    cdk.Tags.of(this).add('ManagedBy', 'CDK');
    cdk.Tags.of(this).add('Owner', 'DevOpsTeam');
  }
}
Enter fullscreen mode Exit fullscreen mode

El paso maestro: Activation de Cost Allocation Tags

Este es el error más común: crear las tags no es suficiente. Tienes que decirle a AWS que las use para el billing.

Ve a AWS Billing and Cost Management.

En el menú lateral, busca Cost Allocation Tags.

Selecciona tus tags personalizadas (ej. Project) y dale a Activate.

Nota: Esto no es retroactivo. Empezarás a ver los datos segregados a partir de que las actives.

Usando el Cost Explorer sin morir en el intento

Una vez activadas, el cambio en el AWS Cost Explorer es radical. Pasas de una "bola de nieve" de costos a un gráfico de barras claro y accionable:

pie title Distribución de Costos por Proyecto (Post-Tagging)
"Proyecto Alpha (Prod)" : 45
"Proyecto Beta (Staging)" : 25
"Data Pipeline (Owner: DataTeam)" : 20
"Sin Etiqueta (Shadow IT)" : 10

Ahora, en lugar de ver una barra gigante de "EC2-Instances", verás exactamente dónde está el dinero:

Proyecto Alpha: $120

Proyecto Beta: $45

Recursos sin etiqueta: $300 (¡Aquí es donde tienes que ir a limpiar!)

Conclusión

Optimizar no siempre es cambiar el tipo de instancia o hacer el código más eficiente. A veces, la mayor optimización viene de saber exactamente en qué se está yendo el dinero.

El tagging es aburrido, pero es la base de una infraestructura profesional y escalable. Si no sabes cuánto te cuesta cada feature, no tienes un negocio, tienes una suscripción muy cara a AWS.

¿Ya tienes una estrategia de tagging en tu equipo usando CDK o siguen adivinando los costos? ¡Te leo en los comentarios! 🚀

aws #cdk #typescript #cloud #devops #costoptimization #finops

Top comments (0)