Llegamos a ustedes gracias a:



Reportajes y análisis

Amazon vs. Google vs. Windows Azure

Lo último en pruebas de velocidad de nube

[04/04/2014] Si los caricaturistas tienen razón, el paraíso se encuentra en una nube, donde todo el mundo lleva túnicas blancas, cada máquina es rápida como un rayo, todo lo que hace funciona perfectamente, y cada acción está acompañada de ángeles tocando arpas. El argumento de venta actual de la nube de la empresa no es muy diferente, con excepción de los trajes y la música. Los proveedores de nube tienen un número infinito de máquinas, y solo están esperando ejecutar perfectamente el código para usted.
El argumento de venta es seductor porque la nube ofrece muchas ventajas. No hay facturas que pagar, no hay personal en la sala de servidores que quiera la noche libre, y no hay problemas de impuestos locos para amortizar el costo de las máquinas durante N años. Les da su tarjeta de crédito y se obtiene un enlace a una máquina, a menudo en cuestión de minutos.
Para probar las opciones disponibles para aquellos que buscan un servidor, alquilamos algunas máquinas en Amazon EC2, Google Compute Engine, y Microsoft Windows Azure, y se las llevó a dar una vuelta. La buena noticia es que muchas de las promesas se han cumplido. Si hace clic en los botones de la derecha y llena los formularios web de la derecha, puede ser administrador de una máquina en pocos minutos, a veces incluso más rápido. Todos ellos hacen que sea extremadamente sencillo obtener los bienes básicos: una distro Linux corriendo lo que necesita.
A primera vista, las opciones parecen casi idénticas. Puede elegir entre muchas de las mismas distribuciones, y de entre una amplia gama de opciones de configuración de máquina. Pero si comienza a hurgar, encontrará diferencias -incluyendo distinciones en el rendimiento y en el costo. Las máquinas pueden parecer básicas, pero no lo son. Esto se hizo más y más evidente una vez que las máquinas comenzaron a moverse a través de los benchmarks.
Nube rápida, nube lenta
Probamos instancias de máquinas pequeñas, medianas y grandes de Amazon EC2, Google Compute Engine, y Microsoft Windows Azure utilizando el benchmark de código abierto DaCapo, una colección de 14 programas Java agrupados en un JAR -fácil de arrancar. Se trata de un conjunto diverso de aplicaciones del mundo real que ejercitarán una máquina en una variedad de maneras diferentes. Algunas de las pruebas esforzarán la CPU, otros harán hincapié en la memoria RAM, y otras esforzarán ambas. Algunas de las pruebas aprovecharán de varios subprocesos. Ninguna configuración de máquina será ideal para todos ellas.
Algunos de los benchmarks de la colección serán muy familiares para los usuarios de servidores. La prueba de Tomcat, por ejemplo, pone en marcha el conocido servidor web y le pide que monte algunas páginas web. Las pruebas Luindex y Lusearch utilizarán Lucene, la herramienta de indexación y búsqueda común, a medida que avanzan. Otra prueba, Avrora, simulará algunos microcontroladores. Aunque esta tarea puede ser útil solo para los diseñadores de chips, todavía a prueba la capacidad de la CPU en bruto de la máquina.
Corrimos las 14 pruebas DaCapo en tres configuraciones diferentes de máquinas Linux en cada nube, utilizando la JVM por defecto. Las instancias no son equiparables a la perfección, pero son más o menos comparables en términos de tamaño y precio. Las configuraciones y costo por hora se desglosan en la tabla de abajo.
Recogimos dos conjuntos de números para cada máquina. El primer grupo muestra la cantidad de tiempo que le tomó a la instancia realizar la prueba desde un punto muerto. Se puso en marcha la JVM, se cargó el código, y comenzó a trabajar. Esta no es una mala simulación porque muchos servidores arrancan código Java desde líneas de comandos en scripts.
Para agregar otra dimensión, la segunda serie presenta los tiempos usando la opción "converger". Esto ejecuta el benchmark en varias ocasiones hasta que aparecen resultados consistentes. Esto ocurre a veces después de unas pocas corridas, pero en unos pocos casos, los resultados no lograron converger después de 20 iteraciones. Esta opción a menudo terminaba en tiempos drásticamente más rápidos, pero algunas veces solo produjo tiempos marginales más rápidos.
Los resultados (ver gráficos y tablas abajo) se verán como un mar de números que marea a cualquier, pero algunos patrones se destacaron:
* Google fue el más rápido en general. Las tres instancias de Google completaron los benchmarks en un total de 575 segundos, en comparación con 719 segundos para Amazon y 834 segundos para Windows Azure. Una máquina de Google tuvo el mejor tiempo en 13 de las 14 pruebas. Una máquina de Windows Azure tuvo el tiempo más rápido en solo uno de los benchmarks. Amazon nunca fue el más rápido.
* Google también fue el más barato en general, aunque Windows Azure le siguió de cerca. La ejecución de la suite DaCapo en el trío de máquinas cuesta 3,78 centavos en Google, 3,8 centavos en Windows Azure, y cinco centavos en Amazon. Una máquina de Google fue la opción más barata en ocho de las 14 pruebas. Una instancia de Windows Azure fue la más barato en cinco pruebas. Una máquina de Amazon fue la más baratoa en una sola de las pruebas.
* La mejor opción para los que buscan el precio más bajo fue Windows Azure Small VM (una CPU, seis centavos por hora), que completó los benchmarks a un costo de 0,67 centavos de dólar. Sin embargo, ésta fue también una de las opciones más lentas, empleando 404 segundos para completar la suite. La siguiente opción más barata, la instancia n1-highcpu-2 de Google (dos CPU, 13,1 centavos de dólar por hora), completó los benchmarks en la mitad del tiempo (193 segundos) a un costo de 0,70 centavos de dólar.
* Si le preocupa más la velocidad que el dinero, la máquina n1-standard-8 de Google (ocho CPU, 82,9 centavos de dólar por hora) fue la mejor opción. Obtuvo el tiempo más rápido en 11 de los 14 benchmarks, completando toda la suite DaCapo en 101 segundos a un costo de 2,32 centavos de dólar. El rival más cercano, el m3.2xlarge de Amazon (ocho CPU, 0,90 centavos de dólar por hora), completó la suite en 118 segundos a un costo de 2,96 centavos de dólar.
* Amazon fue raramente una ganga. El M1.medium de Amazon (una CPU, 10,4 centavos por hora) fue a la vez el más lento y el más caro de los casos de una de las instancias de CPU. El M3.2xlarge de Amazon (ocho CPU, 90 centavos de dólar por hora) fue la segunda instancia más rápida en general, pero también la más cara. Sin embargo, el c3.large de Amazon (dos CPU, 15 centavos de dólar por hora) fue realmente competitiva -casi tan rápida como la instancia de dos CPU de Google, y más rápida y más barata que dos máquinas CPU de Windows Azure.
Estas observaciones generales, que se sacaron de las pruebas de "arranque", también están confirmadas por los resultados de las carreras "convergentes". Pero una mirada más de cercana a los números individuales lo dejará pensando acerca de la consistencia.
Algo de esto puede ser debido a la aleatoriedad oculta en la nube. Mientras que las empresas hacen que parezca que usted está alquilando una máquina real que se encuentra en una caja en algún bunker secreto no revelado, la realidad es que probablemente se le está asignado una rebanada delgada de una caja. Comparte la máquina, y eso significa que el resto de usuarios pueden o no afectarlo. O tal vez sea el hipervisor que se comporta de manera diferente. Es difícil de saber. Su velocidad puede cambiar de un minuto a otro y de máquina a máquina, algo que no suele suceder con las cajas de servidores que salen de la línea de ensamblaje.
Así, aunque parece que hay diferencias de rendimiento claras entre las máquinas en la nube, los resultados podrían variar. Estos patrones también surgieron:
* Las máquinas más grandes y más caras pueden ser más lentas. Puede pagar más y empeorar el rendimiento. Las tres máquinas de Windows Azure comenzaban con una, dos y ocho CPU, y cuestan seis, 12 y 48 centavos de dólar por hora, pero cuanto más caras eran, más lentas corrieron la prueba Avrora. El mismo patrón se presentó con máquinas de una CPU y de dos CPU de Google.
* A veces, lo más grande paga menos. Las mismas máquinas de Windows Azure que corrieron los trabajos de Avrora más lentamente se aceleraron durante el benchmark de Eclipse. En las primeras corridas, la máquina de ocho CPU fue más del doble de rápida que la máquina de una sola CPU.
* Las comparaciones pueden ser problemáticas. La tabla de resultados tiene algunos agujeros producidos cuando una determinada prueba falló, ciertas fallas son fáciles de explicar. Las máquinas de Windows Azure no tenían el codec adecuado para las pruebas de Batik. No vino instalado con la versión por defecto de Java. Probablemente se podría haber arreglado con un poco de trabajo, pero las máquinas de Amazon y Google no lo necesitaron. (Nota: Debido a que Azure se resistió a la prueba del batik, los tiempos y los costos comparativos citados omiten los resultados del batik para Amazon y Google).
* Otras fallas parecían extrañas. La rutina Tradesoap generó una excepción de vez en cuando. Esto probablemente fue causado por alguna falla en la red en la capa profunda del sistema operativo. O tal vez fue algo más. La misma prueba corrió con éxito en distintas circunstancias.
* Añadir más procesadores a menudo no vale la pena el costo. Mientras que la máquina de ocho CPU de Windows Azure fue a menudo mucho más rápida que su máquina de una sola CPU, rara vez fue ocho veces más rápida. Esto fue cierto incluso en las pruebas que son capaces de reconocer las múltiples CPU y configurar varios subprocesos. En la mayoría de las pruebas de máquina de ocho CPU fue solo de dos a cuatro veces más rápida. La única prueba en la que se destacó fue la de trazado de rayos Sunflow, que fue capaz de utilizar toda la potencia de cálculo que se le da.
* Los números de la CPU no siempre cuentan la historia. Aunque las empresas suelen duplicar el precio cuando obtiene una máquina con dos CPU y se multiplican por ocho cuando consigue ocho CPU, a menudo se puede ahorrar dinero si no se aumenta la memoria RAM también. Pero si lo hace, no espere un rendimiento del doble. La máquina de dos CPU de Google en estas pruebas fue una llamada máquina "highcpu" con menos RAM que la máquina estándar. A menudo fue más lenta que la máquina de una sola CPU. Cuando fue más rápida, a menudo solo lo fue en un 30% adicional.
* La cuenta de hilos (thread) también puede ser engañosa. Mientras que el rendimiento de las máquinas de Windows Azure en el benchmark Sunflow hace seguimiento del número de hilos, lo mismo no puede decirse de las máquinas de Amazon y Google. La instancia de dos CPU de Amazon iba a menudo más del doble de rápida que de la máquina de una sola CPU. En una prueba, fue casi tres veces más rápida. La máquina de dos CPU de Google, por otro lado, fue solo de 20 a 25 por ciento más rápidas en Sunflow.
* La tabla de precios puede ser un buen indicador del desempeño. La máquina n1-highcpu-2 de Google es un 30% más cara que la máquina n1-standard-1 a pesar de que ofrece el doble teórico de potencia de CPU. Google probablemente utiliza benchmarks de rendimiento para establecer los precios.
* Los efectos de explosión pueden distorsionar el comportamiento. Algunas de las máquinas en la nube se acelerarán en cortas "ráfagas". Esta es una especie de regalo de los ciclos extra por ahí. Si los proveedores de nube pueden ofrecer un incremento de velocidad temporal, a menudo lo hacen. Pero tenga en cuenta que el regalo aparecerá y desaparecerá de manera irregular. Así, algunos de estos resultados pueden ser más rápidos porque la máquina estaba impulsada.
* El comportamiento de explosión varía. En las máquinas de Amazon y Google, el benchmark Eclipse se aceleraría en un factor de más de tres cuando se utiliza la opción "converger" del benchmark. La máquina de ocho CPU de Windows Azure, por otra parte, ni siquiera duplica la velocidad.
Si todos estos factores lo lleven a confundirse, usted no está solo. Solo probamos una pequeña fracción de las configuraciones disponibles de cada nube y encontramos que el rendimiento estuvo solo parcialmente relacionado con la cantidad de potencia de cómputo que había alquilado. Las grandes diferencias en el rendimiento en los diferentes benchmarks significan que las diferentes plataformas podrían ejecutar su código en radicalmente diferentes velocidades. En el pasado, las pruebas han demostrado que el rendimiento de la nube puede variar en diferentes momentos o días de la semana.
Esta matriz de prueba puede ser grande, pero ni siquiera se acerca a la exploración de las diferentes variaciones que las diversas plataformas pueden ofrecer. Todas las empresas están ofreciendo múltiples combinaciones de CPU, memoria RAM y almacenamiento. Estas pueden tener efectos sutiles y no tan sutiles en el rendimiento. A lo sumo, estas pruebas solo pueden exponer algunas de las formas en que los resultados varían.
Esto significa que si está interesado en obtener el mejor rendimiento por el precio más bajo, su única solución es crear sus propios benchmarks y probar las plataformas. Tendrá que decidir qué opciones están entregando el cómputo que necesita al mejor precio.
Cálculo de costos de nube
Trabajar con matriz de precios de las máquinas en la nube es sorprendentemente complejo, dado que uno de los puntos de venta de las nubes es la facilidad de compra. No está comprando máquinas, bienes raíces, acondicionadores de aire, y otras cosas. Solo está rentando una máquina por hora. Pero incluso si nos fijamos en las listas de precios, no se puede simplemente elegir la máquina más barata y sentirse seguro en su decisión.
El tema complicado para los regateadores es que el rendimiento observado en los benchmarks raramente aumenta con el precio. Si está decidido a conseguir el mayor número de ciclos de computación por sus dólares, tendrá que hacer sus propios cálculos.
La opción más sencilla es Windows Azure, que vende máquinas en tamaños que van desde extra pequeño a extra grande. La cantidad de energía de la CPU y la memoria RAM por lo general aumentan al mismo ritmo, duplicándose prácticamente en cada escalón de la tabla.
Microsoft también ofrece unas cuantas máquinas cargadas con una gran cantidad extra de RAM incluida. Las máquinas más pequeñas con 768MB de RAM comienzan en dos centavos de dólar por hora, y las más grandes máquinas con 56GB de RAM pueden llegar a 1,60 dólares por hora. La calculadora de precios de Windows Azure hace que sea sencillo.
Uno de los detalles interesantes es que Microsoft cobra más por un equipo que ejecuta el sistema operativo de Microsoft. Mientras que Windows Azure vendió a veces instancias de Linux por el mismo precio, en este momento, está cargando exactamente el 50% más si la máquina funciona con Windows.
Google también siguió el mismo mecanismo básico de duplicar el tamaño de la máquina y luego doblar el precio. Las máquinas estándar comienzan a partir de 10,4 centavos de dólar por hora por una CPU y 3,75GB de RAM, y luego duplican su capacidad y precio hasta alcanzar los 1,66 dólares por hora por 16 CPU y 60GB de RAM. Google también ofrece opciones con cantidades más altas y más bajas de RAM por CPU, y los precios se mueven a lo largo de una escala diferente.
Las opciones más interesantes provienen de Amazon, que cuenta con un número aún mayor de máquinas y un conjunto complejo más amplio de opciones de precios. Amazon cobra aproximadamente el doble por el doble de la cantidad de RAM y de capacidad de CPU, pero también varía el precio basándose en la cantidad de almacenamiento en disco. Las máquinas más nuevas incluyen opciones de SSD; pero las instancias más antiguas, sin almacenamiento flash están todavía disponibles.
Amazon también ofrece la oportunidad de crear "instancias reservadas" por pre-compra de una parte de la capacidad de CPU por uno o tres años. Si hace esto, las máquinas brindan precios más bajos por hora. Se está enganchando con algo de capacidad pero manteniendo la libertad de encender las máquinas conforme las necesite. Todo esto significa que puede preguntarse cuánto va a utilizar la nube de Amazon en los próximos años, ya que entonces le ayudará a ahorrar más dinero.
En un esfuerzo por simplificar las cosas, Google creó el GCEU (Unidad de motor de cálculo Google o Google Compute Engine Unit) para medir la potencia de la CPU y "escogió 2,75 GCEU para representar la potencia mínima de un núcleo lógico (un hyper-thread de hardware) en nuestra plataforma Sandy Bridge". Del mismo modo Amazon mide sus máquinas con Unidades de Elastic Compute o ECU. Su gran máquina de ocho CPU, conocida como m3.2xlarge, está calificada en 26 ECU, mientras que la versión básica de un núcleo, la m3.medium, está clasificada en tres ECU. Esa es una diferencia de un factor de más de ocho.
Este es un esfuerzo loable por traer algo de luz al tema, pero el rendimiento del benchmark no realiza un seguimiento de la GCEU o de los ECU muy de cerca. La RAM es a menudo una gran parte de la ecuación que se pasa por alto, y los algoritmos no siempre pueden usar todos los núcleos de la CPU que se les da. La máquina m3.2xlarge de Amazon, por ejemplo, fue a menudo solo de dos a cuatro veces más rápida que la m3.medium, a pesar de que llegó a ser cerca de ser ocho veces más rápida en algunos de los benchmarks.
Advertencia
La buena noticia es que el negocio de la computación en nube es competitivo y eficiente. Usted coloca su número de tarjeta de crédito, y un servidor aparece. Si lo que busca es una máquina y no tiene cifras de rendimiento duras y rápidas en mente, no le puede ir mal con alguno de estos proveedores.
¿Uno es más barato o más rápido? Las tablas adjuntas muestran los resultados más rápidos y más baratos en verde y los resultados más lentos y más caros en rojo. Hay un montón de verde en la tabla de Google y un montón de color rojo en la de Amazon. Dependiendo de cuánto enfatice el costo, los ganadores cambian. Las máquinas de Windows Azure de Microsoft empiezan a correr en verde cuando se toma el costo en cuenta.
Lo extraño es que estos resultados están lejos de ser coherentes, incluso en la misma arquitectura. Algunas de las máquinas de Microsoft tienen números verdes y números de color rojo para el mismo equipo. La máquina de una sola CPU de Google está llena de verde, pero corre en rojo con la prueba Tradesoap. ¿Es un problema con el examen o la manipulación de Google de la misma? ¿Quién sabe? La máquina de dos CPU de Google es más lenta en la prueba Fop -y la máquina de una sola CPU de Google es la más rápida. Vaya usted a saber.
Todos estos resultados significan que hacer su propia prueba es crucial. Si está decidido a exprimir el máximo rendimiento de sus monedas, tendrá que hacer algunas pruebas de comparación y estar listo para trabajar con algunos números. El rendimiento varía, y el precio apenas está correlacionado con la potencia utilizable. Hay una serie de tareas en las que solo sería una pérdida de dinero comprar una máquina más elegante, con núcleos extra porque el algoritmo no puede utilizarlos. Si no prueba estas cosas, puede estar desperdiciando su presupuesto.
También es importante reconocer que puede haber un poco de margen de beneficio oculto en estos precios. Para la comparación, también ejecutamos los benchmarks en una máquina básica de ocho núcleos (AMD FX- 8350) con 16GB de RAM en el escritorio. Por lo general, fue más rápida que la máquina de ocho núcleos de Windows Azure, solo un poco más lenta que la máquina de ocho núcleos de Google, y estuvo alrededor de la misma velocidad que la caja de ocho núcleos de Amazon. Sin embargo, el precio era muy diferente. La máquina de escritorio cuesta alrededor de 600 dólares, y debería ser capaz de colocar un servidor en el mismo terreno. La máquina de Google cuesta 82 centavos de dólar por hora o alrededor de 610 dólares por un mes de 31 días. Podría comenzar a ahorrar dinero después del primer mes si construye usted mismo la máquina.
El precio de la máquina, sin embargo, es solo parte de la ecuación. Hospedar la computadora cuesta dinero, o aún más, alojar un montón de equipos cuesta mucho dinero. Los servicios en la nube serán los más atractivos para las empresas que necesitan grandes bloques de poder de cómputo por sesiones cortas. Si pagan por hora y ejecutan las máquinas durante un corto espacio de tiempo, pueden reducir los costos de forma espectacular. Si su carga de trabajo aparece en ráfagas cortas, el marcado no es un problema, ya que cualquier máquina que posea estará ahí la mayor parte del día esperando, malgastando los ciclos y aumentando las cuentas del aire acondicionado.
Todos estos hechos hacen que la elección de un servicio en la nube sea drásticamente más complicado y difícil de lo que parece. El marketing es brillante y las imágenes hacen que todo parezca cómodo, pero escondido debajo de un montón de complejidad. La única manera de saber si está recibiendo por lo que estás pagando, es probar y probar un poco más. Solo entonces se puede tomar una decisión sobre si la luz y la simplicidad de una máquina en la nube, es para usted.
Peter Wayner, InfoWorld (EE.UU.)