Optimización de costes y rendimiento en la nube: Estrategias para una gestión eficiente de los recursos(Spanish Version)
Published: 2023-07-14 05:35:16

Spanish Version of Post https://dev.to/andreszc30/optimizing-cost-and-performance-in-the-cloud-strategies-for-efficient-resource-management-323

En los últimos meses, he estado aprendiendo e interactuando con la herramienta Well Architected en la consola de AWS, esto sumado a la realización de Well Architected Reviews en varios clientes me ha mostrado el impacto real y la importancia de administrar de manera eficiente los recursos en la nube y cómo este es un aspecto crítico para el éxito de las operaciones en la nube. En la actualidad, las organizaciones se esfuerzan por encontrar un equilibrio entre la optimización de los costes y la prestación de servicios de alto rendimiento para satisfacer las demandas de los clientes. En esta entrada del blog, exploraremos las estrategias y las mejores prácticas para optimizar los costes y el rendimiento en la nube. Mediante la aplicación de estas técnicas, puede maximizar la utilización de recursos, reducir gastos innecesarios y garantizar un rendimiento óptimo para sus aplicaciones y cargas de trabajo.

En este artículo esbozaré en primer lugar la importancia de la gestión de recursos en entornos de nube, desde la reducción de costes hasta la garantía de un rendimiento óptimo, y cómo afecta al crecimiento general de la empresa.

A continuación, haremos una breve introducción a las distintas herramientas de gestión de recursos de AWS, como AWS Cost Explorer, AWS Budgets, AWS Trusted Advisor y AWS CloudWatch, que son fundamentales para lograr la optimización de los costes y el rendimiento.

Por último, expondremos algunos casos de uso de estos servicios y cómo pueden ayudarnos a conseguir ahorros sustanciales a la vez que mejoramos el rendimiento de nuestros entornos.

**Comprender la importancia de una gestión eficiente de los recursos**

- Reducción de costes: La gestión eficiente de los recursos en entornos de nube es crucial por varias razones.
- Sin una gestión eficaz de los recursos, las empresas podrían pagar por recursos no utilizados o infrautilizados, lo que generaría costes innecesarios.
- Garantizar un rendimiento óptimo: La gestión de recursos no solo tiene que ver con los costes; también con el rendimiento.
- Agilidad empresarial: Una gestión eficiente de los recursos en la nube permite a las organizaciones ser más ágiles.
- Conocer el coste y la utilización de los recursos ayuda a las empresas a planificar el crecimiento o la contracción futuros.
- Sostenibilidad: Al optimizar el uso de los recursos, las empresas también contribuyen a la sostenibilidad medioambiental.

**Servicios de administración de recursos de AWS**

Explorador de costos de AWS: AWS Cost Explorer es una herramienta que permite a los usuarios ver y analizar sus costes y utilización a lo largo del tiempo. Con el Explorador de costos, puede filtrar gráficos por valores como operación de API, zona de disponibilidad, servicio de AWS, etiqueta de asignación de costos personalizada, etc.

Presupuestos de AWS: Esta herramienta le ofrece la posibilidad de establecer presupuestos personalizados de costes y uso que le avisan cuando sus costes o uso superan (o se prevé que superen) la cantidad presupuestada.

AWS Trusted Advisor: Se trata de un recurso online para ayudarle a reducir costes, aumentar el rendimiento y mejorar la seguridad optimizando su entorno de AWS. Trusted Advisor proporciona orientación en tiempo real para ayudarle a aprovisionar sus recursos siguiendo las mejores prácticas de AWS.

AWS CloudWatch: Amazon CloudWatch es un servicio de monitorización de los recursos de AWS y de las aplicaciones que ejecutas en AWS. Puede utilizar CloudWatch para recopilar y realizar un seguimiento de las métricas, recopilar y monitorizar archivos de registro, establecer alarmas y reaccionar automáticamente a los cambios en sus recursos de AWS.

**Casos prácticos de uso**

**_Dimensionamiento correcto_**
 
Calcular la demanda real de nuestra aplicación puede resultar complicado en ocasiones, ya que el objetivo del dimensionamiento correcto es eliminar los recursos desperdiciados y minimizar los costes sin dejar de cumplir los requisitos de rendimiento de la aplicación. Por ejemplo, puede empezar con una instancia EC2 con una gran potencia de cálculo, pero con el tiempo, con la ayuda de otras herramientas de AWS como CloudWatch, CostExplorer o Compute Optimizer, puede realizar un análisis de sus patrones de uso y descubrir que puede conseguir el mismo rendimiento con un tipo de instancia menos costosa, optimizando así los costes. 

Por ejemplo, tengo una instancia que ha estado funcionando durante algún tiempo, aunque la demanda es consistente CloudWatch revela que el uso medio de la CPU durante los últimos 3 meses no ha superado el 35%. Pero también debemos mirar diferentes métricas como el uso de RAM, el rendimiento del volumen de EBS, el rendimiento de la red para tener una buena comprensión de qué métricas de nuestra instancia son lo suficientemente buenas para nuestra carga de trabajo y cuáles están sobredimensionadas o infradimensionadas.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lnzwzkmg2o0sqsergwrl.png)

Como sabemos el seguimiento del uso de RAM no está disponible en las métricas por defecto proporcionadas por EC2, para conseguirlo tenemos que instalar el agente CloudWatch en esta instancia, cosa que yo hice hace un mes para ver si mi instancia estaba sobredimensionada. Veamos cómo está el uso de memoria.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5tvmo74dl0mw07v5g4p0.png)

El uso de RAM no superó el 30% de uso en el último mes.Utilizando las métricas proporcionadas por CloudWatch podríamos decir que nuestra instancia está sobredimensionada, pero echemos un vistazo a otra herramienta que AWS proporciona para ayudar a dimensionar nuestras instancias.

Compute Optimizer recopila todas estas métricas junto con el precio de nuestra instancia y, analizando las tendencias de uso, genera recomendaciones que determinan si nuestra instancia está sobreaprovisionada o infraaprovisionada.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4v7br1ejo81d0n3oi3nl.png)

En este caso, ha determinado que mis instancias están sobreaprovisionadas. Otra característica importante de Compute Optimizer son las métricas de infraestructura mejoradas. Esta característica es de pago, y almacenará hasta 3 meses de historial de métricas de Cloud Watch y hará las recomendaciones basadas en ese periodo frente a la versión base que sólo almacena hasta 14 días de métricas. El coste por instancia es de 0,25 USD al mes.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/30w4rds9f3w3nm6nkh70.png)

Compute Optimizer nos proporciona recomendaciones mostrándonos el precio que pagamos actualmente, en mi caso tengo un m5.xlarge pero con la utilización que tiene actualmente mi instancia podría cambiar a un t3.xlarge y ahorrar hasta un 36.2% pero hay que tener en cuenta que puede haber un riesgo medio de rendimiento en esa opción comparado con las opciones c6i.xlarge y c5.xlarge que el riesgo es muy bajo. Como siempre debemos considerar que tan predecible o impredecible es nuestra instancia y podemos comparar las opciones con las métricas como se muestra en la siguiente imagen para tomar la mejor decisión.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5bgn6va4r94parb52vq6.png)

Aquí se podría pensar que sólo hay una línea, pero en realidad son tanto la actual como la opción 1, por lo que tendrán la misma utilización de CPU frente a la misma carga.La opción 2 tendría una utilización de CPU ligeramente superior como se muestra en la siguiente imagen.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hljo5nc7zzqhn33vdh2d.png)

Así que realmente se trata de reunir todas las métricas y datos necesarios para tomar la mejor decisión y poder optimizar los costes manteniendo el mismo rendimiento.

**_Etiquetado de asignación de costes_**

El etiquetado, por otro lado, le permite categorizar y realizar un seguimiento de sus costes de AWS. Cuando aplicas etiquetas a tus recursos de AWS (como instancias EC2 o buckets S3), AWS genera un informe de asignación de costes con tus costes de uso desglosados por etiquetas. Esta granularidad le permite ver exactamente a dónde va su dinero y facilita la optimización en el futuro. Por ejemplo, puede utilizar etiquetas para etiquetar los recursos por departamento o proyecto, lo que le permitirá realizar un seguimiento preciso y asignar los costes en consecuencia.

Esta estrategia también puede aplicarse a nivel organizativo utilizando SCP para aplicar determinadas etiquetas al crear recursos y denegar la creación de recursos que no cumplan los requisitos específicos de las etiquetas. 

Esto asociado a una política de etiquetado a nivel organizativo puede proporcionar una sólida cultura de etiquetado que le permitirá realizar un seguimiento granular de los costes y también tener responsables de cada recurso que se cree en su organización.

Recuerda siempre probar rigurosamente las SCP y las políticas de etiquetado antes de liberarlos en entornos productivos, ya que pueden interrumpir la creación de recursos.

AWS proporciona un pequeño ejemplo para ver cómo puede ser una buena asignación de etiquetas para realizar un seguimiento de sus costos.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rbdsaaidp8xmwobudzfv.png)

Para proporcionarle un ejemplo sencillo vamos a definir una taxonomía para una organización falsa, digamos que vamos a requerir a partir de ahora nuestras instancias EC2, volúmenes EBS, CloudFormations Stacks, Bases de datos RDS y Cluster ECS para ser etiquetados con 3 etiquetas: ENVIRONMENT , PROJECT y OWNER . Recuerde, las etiquetas distinguen entre mayúsculas y minúsculas y, aunque puede imponer etiquetas en mayúsculas, es mejor tener una cultura de etiquetado en su organización para evitar etiquetas desordenadas.

Así que primero tenemos que definir una Política de Etiquetado como la de esta imagen:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mad1f686ekubhwadt3ad.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bl8ivga1hnwqclm3ous0.png)

Como se puede ver, se aplica para los recursos que hemos mencionado anteriormente, y también podemos definir algunos valores que la etiqueta aceptará como en el entorno sólo valores como: DEV, QA y PROD.

Y ahora para hacer cumplir esta política a través de nuestra organización podemos utilizar una SCP para evitar que los recursos se pongan en marcha sin tener estas etiquetas. La SCP se verá así:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6u0g87vqjqjq2346nhrv.png)

Y cuando intentamos crear por ejemplo un volumen EBS y no se introduce ninguna etiqueta nos encontramos con el siguiente error: 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/scho7og5jh448wt3403g.png)

Como he mencionado antes, podemos imponer mayúsculas en los valores de las etiquetas y ciertos valores, por ejemplo DEV en minúsculas no se acepta y no se acepta otro valor en ENVIRONMENT.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0hji8htlyfq4xtz2imyy.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iuvgi34nfs669k0kdg0j.png)

Sólo cuando introducimos los valores aceptados para ENVIRONMENT se crea el recurso.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sz1mefps53fwhmpygbwq.png)

En conclusión, lo que hemos visto hoy son dos estrategias que pueden ayudarnos a conseguir la optimización de costes manteniendo el rendimiento y disponiendo de recursos rastreables que los hagan más manejables.
Estas estrategias utilizadas conjuntamente pueden lograr un gran efecto en su organización y llevar su carga de trabajo al siguiente nivel.

La próxima vez seguiremos profundizando en más estrategias como el poder de los planes de ahorro o instancias reservadas y la automatización y programación de tareas para la optimización

¡Nos vemos en el próximo post!