Optimización de costes en Azure

Cuando estamos en el negocio cloud tenemos que estar muy atentos a los costes del servicio, puede que por un pequeño descuido estemos pagando de más por servicios que no necesitamos o que simplemente están sobredimensionados.

Ahora confiamos más en la nube, porque es conveniente, fácil de usar y no todas las empresas tienen los requisitos técnicos o financieros para ejecutar su propio centro de datos. A medida que las empresas continúan creciendo, comienzan a crear más proyectos, implementan más cargas de trabajo, implementan nuevos prototipos y dan acceso a nuevos empleados y colaboradores. Sin una estrategia adecuada de optimización de recursos en mente, el costo eventualmente se disparará.

Por eso vamos a ver en este artículo que es lo que podemos hacer para evitar estas situaciones.

Identificar los recursos no utilizados

El enfoque más obvio para disminuir el consumo de la nube es averiguar qué recursos se crean y no se utilizan. Esto puede suceder cuando pruebas algo y te olvidas de limpiarlo después.

Muchos ingenieros aprovisionan máquinas virtuales de alta computación para realizar algunas funciones o ejecutar un batch y, tan pronto como están satisfechos con el resultado, se olvidan de la máquina virtual. La mayoría de las veces, el proveedor de la nube no le advertirá sobre el uso de máquinas virtuales de cómputo alto, por lo que esto generalmente genera facturas más altas por los recursos que se usaron solo una vez.

Una buena estrategia de optimización de costos buscará repetidamente este tipo de recursos, los detendrá o los eliminará por completo. También se recomienda establecer cuotas o políticas de Azure que impidan que los usuarios compren muchos recursos informáticos a menos que los administradores de la nube los aprueben.

Redimensione adecuadamente sus cargas de trabajo

Cuando llevamos una aplicación a producción por primera vez, queremos que esté disponible, capaz de manejar cargas pesadas y atender todas las conexiones simultáneas de nuestros usuarios y que nunca se bloquee. Esto a menudo puede llevarnos a un sobredimensionamiento de los recursos, especialmente si la aplicación está abierta al público, porque no tenemos una estimación clara sobre el tráfico entrante o la cantidad esperada de usuarios. No queremos tener más recursos de los necesarios porque está incurriendo en un costo adicional.

Una forma de manejar esta situación es mediante el ajuste de auto escalado. El auto escalado nos permite aprovisionar y liberar recursos a demanda, podemos tener una cantidad deseada de instancias (máquinas virtuales, aplicaciones web, nodos de Kubernetes, etc.) con un tamaño mínimo y, a medida que aumenta el tráfico, se activan más instancias. Por otro lado, cuando la carga disminuye, esas instancias se liberan. También podemos configurar un número máximo de instancias para asegurarnos de que nos mantenemos dentro del presupuesto.

Muchos servicios de Azure vienen con capacidades de auto escalado, podemos usar conjuntos de escalado de máquinas virtuales para máquinas virtuales y para los otros recursos (por ejemplo, AKS) podemos habilitar la opción de auto escalado.

Imagen que contiene RectánguloDescripción generada automáticamente

Además del ajuste de auto escalado, debemos comprender las necesidades de nuestra aplicación en términos de recursos, ¿es intensiva en cómputo? ¿Memoria intensiva? Esto nos permitirá elegir el tamaño mínimo correcto (en Azure, esto significa qué familia de VM usar en el caso de las máquinas virtuales). Además, siempre hay espacio para optimizar el código para usar menos recursos.

Usar suscripciones de DEV/Test

Muchos recursos de Azure que usamos no son para producción, no requieren el mismo nivel de disponibilidad y confiabilidad. Para ese propósito, Azure ofrece suscripciones de Desarrollo/Test para aprovisionar esos recursos.

Las suscripciones de desarrollo/test, como su nombre lo indica, están diseñadas para desarrollar y probar aplicaciones, puede usar cualquier recurso de Azure para probar nuevos prototipos o crear entornos de desarrollo, los recursos disponibles pueden ser máquinas virtuales, bases de datos administradas, aplicaciones web, etc.

Las suscripciones de desarrollo/test ahorran hasta un 57 % del costo real de una suscripción normal, que es un gran porcentaje para optimizar el costo de la nube. Por otro lado, no hay garantía ni SLA para el tiempo de actividad, por lo que no puede usarse para cargas de trabajo de producción.

Utilice instancias reservadas

Si su proyecto va a correr en Azure por mucho tiempo probablemente debería considerar invertir en instancias reservadas. Se trata de descuentos mayores basados en el pago por adelantado y el compromiso de tiempo. El ahorro de las instancias reservadas puede alcanzar hasta el 75%, por lo que es una necesidad para la optimización de los costes de la nube.

Imagen que contiene GráficoDescripción generada automáticamente

Las instancias reservadas están disponibles para muchos recursos de Azure, pero tomemos el ejemplo de Azure D3v2 Windows VM, como puede ver, ahorra un 46% si se reserva por un año en comparación con el plan «pay as you go». Y un 64% si se reserva por 3 años.

Antes de optar por las instancias reservadas, asegúrese de que está comprometido a permanecer en Azure, también su arquitectura no va a cambiar, si usted planea moverse pronto de las máquinas virtuales a los contenedores que probablemente no deba utilizar instancias reservadas.

Combinar recursos cuando sea posible

Esto es importante si tienes muchos proyectos en fase de desarrollo. Todos los proveedores de la nube cobran por los recursos infrautilizados, incluso si no los utiliza en absoluto. Puede optimizar los costes identificando y fusionando estos recursos para reducirlos.

Por ejemplo, si tienes 3 aplicaciones en desarrollo, y dedicas un clúster Kubernetes a cada una. Usted puede notar que la utilización de la CPU está por debajo del 10% para cada clúster, pero el proveedor cobrará por el 100%, usted está desperdiciando una cantidad significativa de recursos informáticos y puede ahorrar este dinero mediante el aprovisionamiento de un clúster y el uso de espacios de nombres para separar lógicamente estos proyectos. Otro ejemplo es el App Service, puede utilizar un único plan de App Service para alojar muchas aplicaciones en su entorno de desarrollo y no están bajo cargas pesadas y el mismo enfoque se puede aplicar a las bases de datos gestionadas.

Combinando esta estrategia con las suscripciones Dev/Test definitivamente reducirá su costo y le ahorrará un dineral.

Use Azure Cost Analysis

Antes de que pueda controlar y optimizar sus costes en la nube, es importante entender dónde se originan los costes dentro de su organización en primer lugar. El análisis de costes es una gran herramienta para explorar y analizar los costes de su organización. Puede ver los costes agregados o desglosarlos para entender dónde se producen los costes a lo largo del tiempo e identificar las tendencias de gasto.

Vista inicial de análisis de costos en Azure Portal

Las vistas pueden agruparse por tipos de servicio, suscripciones, grupos de recursos y muchos otros criterios para comprender mejor sus gastos. Una vez que se detectan los servicios costosos, se pueden establecer presupuestos para recibir notificaciones cuando el coste supere umbrales específicos.

En mi experiencia, el Análisis de Costos fue de gran ayuda para entender la costosa factura, causada por algunos servicios de Azure, en particular Application Gateway y Azure Front Door, lo que nos permitió tomar algunas decisiones de diseño.

La optimización de costos de la nube no tiene por qué ser complicada, pero requiere un enfoque disciplinado para establecer buenos hábitos de redimensionamiento, verificar continuamente si hay fugas e impulsar conocimientos y acciones a través de análisis mientras evita el bloqueo del proveedor para reducir su factura de la nube

Share this post: