Como menciono en el artículo “Caminando hacia la cultura FinOps”, cada vez más, las empresas se preocupan por la optimización y la eficiencia de los costos en la nube, al igual que por la administración y la reducción de costos buscando generar más valor con un menor precio. Debido a esta problemática los diferentes proveedores amplían constantemente su portafolio con el fin de mitigar y aportar a la solución de dicha problemática. En este artículo listo las principales herramientas de FinOps que nos ofrece AWS y a su vez algunas recomendaciones de uso.
Para empezar, vamos a describir las principales herramientas que ofrece AWS con el módulo de billing de las cuales, más adelante vamos a ver casos reales que permitan la optimización de los costos en nube.
Cost Explorer (CUDOS)
Para empezar, la herramienta más esencial del módulo de billing que tiene AWS es Cost Explorer. Según la definición del proveedor, el “explorador de costos de AWS tiene una interfaz sencilla que permite visualizar, comprender y administrar sus costos y uso de AWS a lo largo del tiempo.” Lo más importante de esto es que se pueden crear informes y gráficas con el histórico de los costos de los recursos que tienen consumo en dicha cuenta. Así mismo se puede mirar y/o filtrar de forma detallada y simple.
En Cost Explorer se puede configurar dashboards donde se puede monitorear diferentes cuentas o grupo de cuentas, hacer filtros o gráficas por recurso, por zona de disponibilidad, por etiqueta entre otras, llamados CLOUD INTELLIGENCE DASHBOARDS (COD)
Trusted Advisor (TAO)
“AWS Trusted Advisor proporciona recomendaciones que lo ayudan a seguir las prácticas recomendadas de AWS.” Trusted Advisor nos hace recomendaciones en cinco aspectos (Optimización de costos, rendimiento, seguridad, tolerancia a errores, cuotas de servicio) donde se evalúa la cuenta. Lo más importante de seguir dichas recomendaciones es que se optimizan los recursos y los servicios.
Para dicha herramienta se puede configurar diferentes dashboard para monitorear cuentas o grupos de cuentas, hacer filtros o gráficas por recurso, por zona de disponibilidad, por etiqueta entre otras, llamados CLOUD INTELLIGENCE DASHBOARDS (TAO)
Compute Optimizer
“AWS Compute Optimizer recomienda los recursos de AWS óptimos para sus cargas de trabajo a fin de reducir costes y mejorar el rendimiento mediante el uso de machine learning para el análisis de métricas de utilización histórica.” Esta herramienta nos comparte recomendaciones en cuatro recursos (Instancias EC2, Instancias RDS, Lambda y Volúmenes EBS)
Anomaly Detection
Es una herramienta que detecta comportamientos anómalos en algún recurso que estemos usando en la cuenta y cuál es su causa raíz, de modo que se puedan tomar acciones inmediatas y así detener dicho costo. Esta herramienta se puede configurar agrupando cuentas por ambientes, por clientes, por zonas entre otras.
Budget
Es una herramienta que permite la configuración de los presupuestos de la empresa, de una cuenta, de algo en específico donde esta nos da la información a su vez de la ejecución presupuestal mes a mes y hace una proyección del costo final de la cuenta mes a mes. Así mismo se puede configurar para que esta, envíe un correo o una notificación cuando el presupuesto tenga un límite o umbral establecido.
Reservas/Saving plans/ Spot
AWS ofrece diferentes formas de ahorrar dinero en el recurso de las instancias, especialmente EC2, pero también se puede usar Elasticache, RDS entre otras. Las instancias reservadas ofrecen un ahorro importante para sus costos de Amazon EC2 en comparación con los precios de las instancias bajo demanda. Estas Instancias bajo demanda deben tener determinados atributos, como el tipo de instancia y la región para poder aprovechar el descuento de facturación. Las instancias de spot son capacidades de cómputo de EC2 de reserva en la nube de AWS que están disponibles con un ahorro de hasta un 90 % de descuento en comparación con los precios bajo demanda. La única diferencia entre instancias bajo demanda e instancias de spot es que Amazon EC2 puede interrumpir las instancias de spot, con dos minutos de notificación, cuando Amazon EC2 necesita de nuevo la capacidad.
Adicional a las formas de contratación de instancias existen otras opciones como los savings plans, dedicated host, dedicated instances, entre otras.
Casos prácticos.
En mi experiencia trabajando con FinOps he encontrado que los recursos que más consumen y que más se pueden optimizar en términos de la eficiencia son las instancias EC2, RDS, CloudWatch, AWS config, Lambdas entre otros. Como lo mencionaba en el artículo relacionado, las malas prácticas de los equipos y/o desarrolladores hacen que los costos se incrementen por lo que a continuación relaciono algunos casos reales de optimización de recursos.
● Con respecto a las instancias EC2 he evidenciado despliegues de familias desactualizadas que puede hacer que se incrementen los costos. Un ejemplo es, si se desplegara una instancia con la familia de M4 a M5, el valor de la hora de una instancia m4.xlarge cuesta US $0,2 y si se migra a m5.xlarge costaría US $0,192 la hora. La recomendación es mantener siempre actualizadas las familias de instancias.
● Configuración del apagado automático en horarios no laborales de las instancias EC2 y/o RDS. Con este cambio se puede lograr optimizar hasta un 60% del valor de dicha instancia.
● Migración de los volúmenes EBS de GP2 a GP3. Este cambio es sencillo y se ahorra el 20% del valor de costo.
● Siempre mantener los volúmenes y las instancias en estado óptimo que como lo mencioné anteriormente se puede lograr de una manera más sencilla con AWS Compute Optimizer.
●Cuando trabajamos con Lambdas se sugiere que la automatización y configuración de estas siempre quede bien y no queden con una tasa alta de errores ya que esto incrementa el costo de dicho recurso.
● En cuanto a monitoreo y logs es importante configurar una política de depuración de los registros de los logs para que vaya eliminando y no gaste por ese almacenamiento. Se sugiere 1 mes o máximo 2 meses de retención.
●Con respecto a los temas de almacenamiento es muy importante revisar el tipo de almacenamiento que tenemos ya que si tenemos un standard es porque dichos archivos los tenemos siempre disponibles, pero podemos configurar de acuerdo al tipo de archivos un Tier-Intelligent o un AWS S3 Glacier para data que no usemos frecuentemente y podemos optimizar mucho este recurso.
● Por último y muy importante monitorear y siempre estar depurando lo que no se use para poder liberar recursos y así evitar el costo innecesario.
La conclusión de este post y lo que me lleva a seguir escribiendo acerca del tema FinOps es que la nube ofrece demasiadas facilidades para mejorar el rendimiento de nuestros proyectos y a su vez vela por el ahorro y alivio financiero de las empresas. Nosotros como dueños de proyecto o desarrolladores, debemos procurar cada día, optimizar y buscar las diferentes estrategias para obtener el mayor provecho a la nube que es hacer más, a menor costo.
En un próximo artículo les explicaré qué herramientas de FinOps ofrecen los diferentes proveedores de nubes (Azure, GCP, IBM Cloud, Alibaba, entre otros) y algunos casos de éxito que he logrado con ellos.
¡Gracias por leer!
Comentarios