Llegamos a ustedes gracias a:



Reportajes y análisis

6 consejos para la gestión de costos en la nube

[08/11/2017] El funcionamiento de su negocio en la nube es fundamentalmente diferente al de las instalaciones. Y cuando las operaciones difieren, también lo hacen las estrategias para contener los costos.

En términos financieros, un centro de datos requiere un gran gasto de capital para el edificio, gastos adicionales de capital para los servidores y licencias de software, y gastos de operación menores -pero significantes- para alimentar los servidores y sistemas de enfriamiento, así como para el mantenimiento y la administración.

En la nube, no hay gastos de capital. En su lugar, hay gastos operativos significativos, facturados por las instancias de máquinas virtuales de servidor, almacenamiento, tráfico de red, licencias de software y otros detalles.

Desde una perspectiva de gestión de costos, hay ventajas significativas en desplazar la carga de computación a la nube -pero también hay riesgos significativos.

Cuando alguien quiere un nuevo rack de servidor en su centro de datos, hay órdenes de compra por aprobar y justificaciones para reflexionar, y el proceso es totalmente gestionado. Requiere permiso. También toma seis meses en muchas empresas. Una vez que el rack ha sido instalado, nadie presta atención a lo fuerte que es o si no se utiliza, a menos que su carga sea tan pesada que no funciona bien. Sí, eso es ineficaz en función de los costos, de ahí que se presione para que las máquinas virtuales -VM, por sus siglas en inglés- y los contenedores (como Docker) en su centro de datos aumenten la utilización del servidor.

Si alguien quiere un nuevo grupo de servidores virtuales en la nube, puede tardar unos minutos en hacerlos girar. Si bien es posible que tenga una directiva que requiera la aprobación de la administración para obtener nuevos recursos de la nube, o para aplicar cuotas a los recursos de nube de cada departamento, casi todos los que tienen acceso a sus cuentas de nube pueden crear lo que quieren cuando quieran, y pedir perdón más tarde si los descubren.

Si esta libertad es buena o mala depende de su punto de vista. Desde las perspectivas de agilidad empresarial y devops, es bueno. Desde la perspectiva de la gestión financiera, puede ser bueno si se hace bien, pero de lo contrario es un desastre potencial.

En este artículo, voy a discutir cómo evitar "un shock con la factura de la nube". Voy a empezar con tácticas técnicas individuales para optimizar los gastos de nube, y terminar con el tema de gestión de gastos de la nube.

Utilización de activos

Según Michael Liebow, director global de Accenture Cloud, los servicios en la nube pueden llevar a un "apocalipsis zombi" -no zombis humanos, sino servidores zombis. Éstos servidores tienen poca o ninguna utilización: cuestan dinero, pero no hacen nada.

Liebow y sus colegas también escriben sobre los huérfanos, que son los servicios que quedan después de que los recursos que los utilizan se han suprimido; y los glotones, que son VMs de gran tamaño. Estas tres condiciones patológicas pueden inflar fácilmente su cuenta de la nube en 20% a 40% ciento, si no es manejado correctamente.

Encontrar activos subutilizados en la nube de manera oportuna no es fácil ni automático. Las facturas de los proveedores de nube solo vienen mensualmente y pueden contener más de cien millones de líneas de cargos para una gran empresa con una importante propiedad de nubes. Si espera hasta que reciba la factura para actuar, podría encontrar cargas abruptas para VMs y otros servicios que han estado inactivos durante 30 días y deberían haber sido cerrados o reducidos hace mucho tiempo.

Es aún más difícil cuando tiene que administrar varias nubes con varias cuentas cada una. La buena noticia es que normalmente puede extraer información de facturación de sus proveedores de nube electrónicamente a diario; la mala noticia es que posiblemente necesite licenciar o desarrollar nuevas herramientas para administrar su estado de nube.

Capacidad de pre-compra

Una manera de reducir el gasto en recursos de la nube que espera utilizar durante uno o más años es pre-comprar su capacidad base con un descuento. Cada proveedor de nube hace esto un poco diferente, y cambia sus políticas de facturación periódicamente. Tenga en cuenta: ésta es un área confusa, incluso cuando el proveedor afirma ser transparente acerca de los precios.

Amazon explica su plan de pre-compra como tal: "Las instancias reservadas ofrecen un descuento significativo (hasta un 75%) en comparación con el precio de la instancia bajo demanda. Además, cuando las instancias reservadas se asignan a una zona de disponibilidad específica, proporcionan una reserva de capacidad, lo que le da confianza adicional en su capacidad para iniciar instancias cuando las necesita.

"Para aplicaciones que tienen uso estable o predecible, las instancias reservadas pueden proporcionar ahorros significativos en comparación con el uso de instancias bajo demanda", agrega.

Amazon recomienda instancias reservadas para:

  • Aplicaciones con uso en estado estacionario.
  • Aplicaciones que pueden requerir capacidad reservada.
  • Clientes que pueden comprometerse a usar EC2 durante un período de uno o tres años para reducir sus costos totales de computación.

Como ejemplo concreto, considere una instancia de VM c4.8xlarge optimizada por computación en la N. Virginia, que ejecuta Linux, que cuesta 1,591 dólares por hora a petición y ofrece 36 CPU virtuales y 60GB de memoria. Si reserva la instancia por un año y paga completamente por adelantado, su tarifa baja a 0,947 dólares por hora, ahorrando el 40%. Haga lo mismo para un estándar de tres años, y la tasa baja a 0,621 dólares por hora, un 61% de ahorro. Para un término convertible de tres años, que le permite más flexibilidad, la tarifa es 0,739 dólares por hora, un 54% de ahorro. Pague menos por adelantado, y la tasa efectiva sube un poco, pero la diferencia está más o menos en línea con el costo de tiempo del dinero.

AWS c4.8xlarge Linux (36 CPU, 60GB) Costo (US$) Ahorros
Bajo demanda 1,591 / hr ---
Instancia reservada (1 año) 0,947 / hr 40%
Instancia reservada (3 años) 0,621 / hr 61%
Instancia reservada (3 años, convertible) 0,739 / hr 54%

Los clientes tienen la flexibilidad de cambiar la 'Zona de disponibilidad', el tamaño de la instancia y el tipo de red de las 'Instancias reservadas estándar'. Las instancias reservadas de tres años, convertibles, proporcionan flexibilidad adicional, como la capacidad de utilizar diferentes familias de instancias, sistemas operativos o arrendamientos a lo largo de la 'Instancia reservada'.

Azure tiene una VM de tamaño similar (menos CPUs, más RAM) en su instancia de propósito general D32-v3, que ofrece 32CPU virtuales y 128GB de memoria y cuesta 1,60 dólares por hora a petición. Azure no ofrece casos reservados como tales: En su lugar, ofrece un acuerdo Enterprise con un compromiso monetario inicial que reduce el precio, aunque los niveles de descuento no se publican.

Google ofrece una VM n1-estándar-32 con 32CPUs virtuales y 120GB de memoria por 1,52 por hora con un descuento de uso sostenido mensual. No tiene que comprometerse a un uso extendido para obtener un descuento: en su lugar, se aplica automáticamente a los minutos incrementales en los niveles de uso del 25%, 50% y 75%.

Google también ofrece un descuento de uso comprometido para VMs, que puede activar mediante la compra de contratos de compromiso de uno o tres años. Los recursos que se han comprometido con descuentos de uso no califican para descuentos de uso sostenido. Con los descuentos de uso comprometido, los precios de VM pueden ser hasta un 57% menos costosos que los precios de VM normales. Los descuentos se aplican al número agregado de vCPUs o de memoria dentro de una región, para que no se vean afectados por cambios en el tipo de máquina de su instancia. No hay costos iniciales para los descuentos de uso comprometido. Los descuentos de uso comprometido se aplican a su factura cada mes. El gancho es que le facturan por sus compromisos, independientemente de si los usa o no.

Instancias Spot y de baja prioridad

Las instancias Amazon EC2 Spot permiten pujar por la capacidad de almacenamiento de Amazon EC2. Puesto que las instancias Spot suelen estar disponibles con un descuento, en comparación con los precios a la vista, puede reducir significativamente el costo de ejecutar sus aplicaciones, aumentar la capacidad de procesamiento y el rendimiento de su aplicación por el mismo presupuesto, y habilitar nuevos tipos de aplicaciones de computación en la nube.

Las instancias Spot se ejecutan cuando el precio de la oferta supera el precio de Spot, y ofrecen descuentos del 50-90% en comparación con instancias bajo demanda. Con las instancias Spot, nunca se le cobrará más que el precio máximo que especificó. Mientras se ejecuta la instancia, se le cobrará el precio Spot que está vigente durante ese período. Si el precio de Spot excede el precio especificado, su instancia recibirá una notificación de dos minutos antes de que finalice, y no se le cobrará por la hora parcial que ha ejecutado su instancia.

Si incluye un requisito de duración con su solicitud de instancias Spot, su instancia continuará ejecutándose hasta que elija terminarla, o hasta que finalice la duración especificada; su instancia no se cancelará debido a cambios en el precio de Spot. Hasta el momento que verifiqué, una instancia de Spot para una VM c4.8xlarge con Linux cuesta 0,3591 dólares por hora en la zona de N. Virginia, en comparación con 1,591 dólares por hora a petición.

AWS c4.8xlarge Linux (36 CPU, 60GB) Costo (US$) Ahorros
Bajo demanda 1,591 / hr .....
Instancia puntual 0,3591 / hr 77%

Azure llama instancias "de baja prioridad" a su equivalente de AWS Spot. Cuando me registré, una instancia de baja prioridad D32-v3 en la zona oeste costaba 0,345 dólares por hora, frente a 1,60 dólares por hora a la demanda. Sin embargo, no he podido seleccionar esta opción en mi cuenta.

Ejemplo de Azure D32-v3 Costo (US$) Ahorros
Bajo demanda 1,60/ h ---
Baja prioridad 0,345/ h 78%

El equivalente de Google a las instancias Spot se denomina "instancias preemplazables". Una VM 'preemtible' es una instancia que se puede crear y ejecutar a un precio mucho más bajo que las instancias normales. Sin embargo, Compute Engine podría terminar estas instancias si requiere acceso a esos recursos para otras tareas. Las instancias preemtibles son el exceso de capacidad de Compute Engine, por lo que su disponibilidad varía con el uso. Una instancia preemptible n1-estándar-32 en la zona de Virginia del Norte actualmente cuesta 0,3424 dólares por hora, en comparación con el precio total de 1,712 dólares por hora y el precio de uso sostenido de 1,52 dólares por hora. Según Google, la tasa de amortización normalmente varía en el rango de 5% a 15% por siete días y por proyecto.

Google Cloud n1-estándar-32 Costo (US$) Ahorros
Bajo demanda 1,712 / hr ---
Uso sostenido 1,52 / h 11%
Preemptible 0,3424 / hr 80%

Contenedores

Los servidores subutilizados y el espacio limitado para los nuevos bastidores, llevaron a las empresas a convertir algunos servidores dedicados en sus centros de datos en hosts para máquinas virtuales. Luego, cuando la utilización de la memoria en hosts de las VMs se convirtió en un problema, convirtieron algunas de sus máquinas virtuales en hosts para contenedores.

La diferencia básica entre virtualizar con VMs y virtualizar con contenedores es que, además del software de aplicación, una VM contiene un sistema operativo completo y un conjunto completo de hardware virtualizado, mientras que un contenedor contiene solo partes de un sistema operativo, algunas bibliotecas, y el software de aplicación. Tanto las VMs como los contenedores ofrecen un cierto aislamiento de otras aplicaciones; las máquinas virtuales ofrecen más aislamiento y una mayor seguridad, aunque con un alto costo en el uso de la memoria.

RAM es uno de los recursos más caros para arrendar en la nube, y los contenedores normalmente necesitan solo un tercio de la RAM para ejecutar el mismo software que una VM. Esto hace que ejecutar su estado de nube en contenedores sea una propuesta de costo atractivo, siempre y cuando el aislamiento reducido no sea un problema.

Hasta hace poco, el uso de contenedores se limitaba a los sistemas basados en Linux, y faltaban la orquestación, el soporte de herramientas y la instrumentación para contenedores. Nada de eso ya es un problema, y mudar sus cargas a contenedores en la nube es una buena manera de optimizar sus operaciones y reducir su gasto en nube.

En AWS, no hay ningún cargo adicional por la ejecución de contenedores, solo se paga por las VMs y el almacenamiento subyacente. Azure le permite crear y usar contenedores directamente desde una piscina y cobra 0,0025 dólares por cada instancia creada, más 0,0000125 dólares por GB-segundo y 0,0000125 dólares de núcleo por segundo. Por ejemplo, si ejecuta tres contenedores simultáneamente durante un mes y cada contenedor utiliza 1GB de memoria y dos núcleos, pagará menos de 300 dólares al mes por ellos.

Contenedor Azure Costo de la instancia (US$) Coste de GB-segundo (US$) Costo de núcleo-segundo (US$) Duración Total (US$)
1 GB, 2 núcleos 0,0025 1 x 0,0000125 2 x 0,0000125 30 días 97.20

Google Container Engine ejecuta clústeres de nodos de contenedores bajo Kubernetes, encima de las instancias VM de Compute Engine; es decir que paga por las máquinas virtuales. Hay un pequeño costo por la administración de Kubernetes, 0,15 dólares por hora para grupos de seis o más nodos.

Sin servidor

La computación en la nube sin servidor, o más exactamente las funciones como servicio, tienen el potencial de reducir drásticamente el costo y el esfuerzo que implica poner cargas en la nube. AWS Lambda, Bluemix OpenWhisk, Google Cloud Functions y Azure Functions ofrecen un modelo en el que el desarrollador define una función para ejecutarse bajo demanda, crea disparadores para ésta, y establece una asignación de memoria para la función. La infraestructura de la nube se encarga de asignar un contenedor para la función cada vez que necesita ejecutarse, por lo que el desarrollador no tiene que preocuparse por la capacidad o escalabilidad.

Los costos sin servidor normalmente se basan en el número de disparadores (a menudo una carga insignificante), el tiempo de ejecución y la cantidad de memoria utilizada. El tiempo de ejecución para una invocación de una sola función está limitado a 5 a 10 minutos, dependiendo de la plataforma, pero los tiempos de ejecución de sub-segundos son más comunes. La mayoría de las plataformas también limitan el número de funciones que se pueden ejecutar simultáneamente, y cada mes tienen disponible una capacidad libre acumulada para las funciones.

Como regla general, el uso de funciones sin servidor es más barato que ejecutar una pequeña VM si el tiempo de ejecución de la función agregada es inferior a medio millón de segundos por mes, o aproximadamente el 20% del mes. Los números varían un poco según el proveedor, y si se comparan las funciones con las instancias de VM a precio completo o con descuento.

Cuando realice el análisis de costos, también debe incluir el tiempo de desarrollo y operaciones, que suele ser menor para las funciones sin servidor que para las VM, ya que se ha enviado más información al proveedor de la nube. La factorización en el costo de las operaciones y desarrollo, con el uso de funciones sin servidor, puede ser más barato que ejecutar una pequeña VM, incluso si la utilización de la función de agregación de ejecución es del 75% al mes.

Una desventaja de usar funciones sin servidor es la complejidad de la facturación. Si aloja sus funciones en una máquina virtual, esa VM genera una línea de facturación por mes, no importa cuántas veces se usen las funciones. Si su función sin servidor se usa cuatro millones de veces al mes, habrá cuatro millones de eventos en el registro de facturación.

Gestión del gasto en la nube

Dada la complejidad de la fijación de precios en la nube, y las diferencias con respecto a la gestión de centros de datos, muchas empresas tendrán que adoptar nuevas herramientas para la gestión de gastos de TI en la nube. Una búsqueda en Internet de "gestión del gasto en la nube", "gestión del costo de la nube" o "plataforma de gestión de la nube" presentará al menos media docena de posibilidades viables, junto con muchos resultados irrelevantes. Aunque es posible que pueda administrar el uso de una sola plataforma en la nube con sus instalaciones nativas para el etiquetado de recursos y la generación de informes, es difícil mantenerse al tanto del uso y los costos si utiliza dos o más proveedores en la nube.

No importa qué herramienta utilice, una clave importante para administrar su gasto en la nube es etiquetar sus recursos. Si puede ver un elemento de línea de facturación y ver inmediatamente que es para el desarrollo y la prueba relacionados con el producto Fizzpop, está en una forma mucho mejor que si todo lo que sabe es el número de serie de la máquina virtual. Si ese etiquetado se transmite en las herramientas de gestión y de informes, para que pueda acercarse a un "zombi" en un gráfico y ver su propósito y afiliación de grupo, puede cerrar el bucle y hacer algo sobre el servidor no utilizado de la VM.

La gestión de costos en la nube no es fácil, y en realidad no se puede hacer con los procesos ITIL y las herramientas que la mayoría de las organizaciones de TI tienen para sus centros de datos. Para administrar su nube de bienes con eficacia, es necesario controlar sus costos sobre una base diaria, e intervenir según sea necesario mediante el cierre de los recursos, la reducción de tamaño, o ponerlos en un calendario en lugar de ejecutarlos todo el tiempo.

Crédito foto: Geralt (COO)