Entrevista: Por qué Java es el futuro de las aplicaciones en la nube

El hecho de que los procesadores ARM64 tengan poca potencia en términos de consumo de energía significa que se pueden meter más servidores en el mismo volumen de espacio del centro de datos que el hardware x86.

Si las cargas de trabajo pueden ejecutarse en hardware ARM64, potencialmente habrá más potencia de procesamiento disponible por rack del centro de datos. Cada bastidor basado en ARM, por ejemplo, consume menos energía y requiere menos infraestructura de refrigeración que las necesidades de energía y refrigeración del centro de datos de los bastidores de servidores x86.

Scott Sellers es director ejecutivo de Azul, una empresa que ofrece una alternativa al kit de desarrollo Java (JDK) de Oracle llamado Azure Platform Core para desarrollar y ejecutar aplicaciones Java empresariales. En una entrevista con Computer Weekly, Sellers analiza el impacto de las arquitecturas de procesador en el desarrollo de software empresarial y por qué el mantra original de Java de “escribir una vez y ejecutar en cualquier lugar” es más importante que nunca.

Ya no se da el caso de que la única plataforma de destino para las aplicaciones empresariales sea un servidor x86 con tecnología Intel o AMD. Las unidades de procesamiento de gráficos (GPU) de Nvidia y la presencia de chips de servidor alternativos de ARM significan que la elección de la plataforma del servidor de destino es una decisión importante al implementar aplicaciones empresariales.

El ascenso de ARM

“No hay duda de que la innovación en la arquitectura ARM64 está teniendo un profundo impacto en el mercado”, dice Sellers. Por ejemplo, señala, Amazon ha realizado importantes inversiones en el desarrollo de arquitecturas de servidores basadas en ARM64 para Amazon Web Services (AWS), mientras que Microsoft y Google también tienen iniciativas de servidores ARM.

“Es una plataforma intrínsecamente más rentable en comparación con los servidores x86”, añade. “En este momento, el rendimiento es igual o mejor que x86, y la eficiencia energética general es materialmente mejor”.

Según Sellers, hay mucho impulso detrás de las cargas de trabajo ARM64. Si bien las nubes públicas generalmente admiten múltiples lenguajes de programación, incluidos Python, Java, C++ y Rust, el uso de lenguajes de programación que deben compilarse para una plataforma de destino significará revisar el código fuente al migrar entre servidores x86 y basados ​​en ARM. Los lenguajes interpretados como Python y Java, que se compilan “justo a tiempo” cuando se ejecuta la aplicación, no requieren que las aplicaciones se vuelvan a compilar.

La belleza de Java es que no es necesario modificar la aplicación. No son necesarios cambios. Realmente funciona

Scott Sellers, Azul

“La belleza de Java es que no es necesario modificar la aplicación. No son necesarios cambios. Realmente funciona”, afirma.

Según Sellers, los esfuerzos de cambio de plataforma generalmente implican mucho trabajo y muchas pruebas, lo que les dificulta mucho más la migración de cargas de trabajo en la nube desde servidores x86 a ARM64. “Si basa sus aplicaciones en Java, no tendrá que hacer estas apuestas. Puedes crearlos dinámicamente según lo que esté disponible”, afirma.

Esto significa efectivamente que en la infraestructura de nube pública como servicio, un desarrollador de Java simplemente escribe el código una vez y el compilador de tiempo de ejecución de Java genera las instrucciones del código de máquina para el procesador de destino cuando se ejecuta el código. Los responsables de la toma de decisiones de TI pueden evaluar los costos y el rendimiento de forma dinámica y elegir la arquitectura del procesador según el costo o el nivel de rendimiento que necesitan.

Los vendedores afirman que Java funciona excepcionalmente bien tanto en plataformas x86 como ARM64. Dice que los clientes de Azul están viendo un beneficio de rendimiento del 30% al 40% utilizando el motor de ejecución Java de la empresa. “Eso es cierto tanto para x86 como para ARM64”, añade.

Sellers dice que los líderes de TI pueden aprovechar el aumento de rendimiento y eficiencia disponible en la plataforma ARM64 sin la necesidad de realizar ningún cambio en la carga de trabajo objetivo. En la nube pública, dice, esto no sólo ahorra dinero (ya que la carga de trabajo utiliza menos procesamiento basado en la nube para lograr el mismo nivel de rendimiento), sino que la carga de trabajo también se ejecuta más rápido.

La decisión sobre qué plataforma implementar una carga de trabajo es algo que los vendedores consideran que debe evaluarse como parte del cálculo del retorno de la inversión. “Para la misma cantidad de memoria y capacidad de procesamiento, un nodo de computación ARM64 suele ser alrededor de un 20% más barato que el equivalente x86”, afirma. Esto, añade, es bueno para el sector tecnológico. “Francamente, mantiene a Intel y AMD honestos”.

Y añade: “Algunos de nuestros clientes más importantes ahora simplemente tienen implementaciones híbridas en la nube, y por híbrido lo que quiero decir es que ejecutan x86 y ARM64 simultáneamente para obtener lo mejor de todos los mundos”.

A lo que se refiere Sellers es al hecho de que, si bien es posible que los clientes quieran ejecutar cargas de trabajo en la infraestructura ARM64, hay muchos más kits x86 implementados en la infraestructura de la nube pública.

Si bien esto cambiará con el tiempo, según Sellers, muchos de los clientes más importantes de Azul no pueden comprar suficientes nodos de cómputo ARM64 de proveedores de nube pública, lo que significa que tienen que cubrir un poco sus apuestas. Sin embargo, Sellers considera que ARM64 es algo que inevitablemente se convertirá en una fuerza dominante en la infraestructura de computación en la nube pública.

Por qué no siempre se trata de GPU

Nvidia ha experimentado una gran demanda de sus unidades de procesamiento de gráficos (GPU) para impulsar cargas de trabajo de inteligencia artificial (IA) en el centro de datos. Las GPU incluyen cientos de núcleos de procesador relativamente simples en un solo dispositivo, que luego se pueden programar para ejecutarse en paralelo, logrando la aceleración requerida en las cargas de trabajo de inferencia de IA y aprendizaje automático.

Sellers describe la IA como un problema “vergonzosamente paralelo”, que puede resolverse utilizando una gran cantidad de núcleos de procesamiento de GPU, cada uno de los cuales ejecuta un conjunto de instrucciones relativamente simple. Por eso la GPU se ha convertido en el motor de la IA. Pero esto no lo hace adecuado para todas las aplicaciones que requieren un alto grado de paralelismo, donde se programan varias tareas complejas para ejecutarse simultáneamente.

Para uno de los clientes de Azul, la bolsa financiera LMAX Group, Sellers dice que las GPU nunca funcionarían. “Serían demasiado lentos y el caso de uso de LMAX no es tan intrínsecamente paralelo como la IA”.

Las GPU, afirma, son útiles para acelerar un tipo muy específico de aplicación, donde una parte relativamente simple de procesamiento se puede distribuir entre muchos núcleos de procesador. Pero una GPU no es adecuada para aplicaciones empresariales que requieren la ejecución de código complejo en paralelo en varios procesadores.

Más allá del debate sobre el hardware sobre si se deben utilizar GPU en aplicaciones empresariales, Sellers cree que la elección del lenguaje de programación es una consideración importante a la hora de codificar software de IA dirigido a GPU.

Si bien la gente está familiarizada con la programación de aplicaciones de IA en Python, dice: “Lo que la gente no reconoce es que el código Python en realidad no hace nada. Python es sólo la interfaz para descargar el trabajo a las GPU”.

Sellers dice que Java es más adecuado que otros lenguajes de programación para desarrollar y ejecutar aplicaciones empresariales tradicionales que requieren un alto grado de paralelismo.

Si bien Nvidia ofrece el lenguaje GPU CUDA, al escribir aplicaciones empresariales tradicionales, Sellers dice que Java es el único lenguaje de programación que tiene verdaderas capacidades vectoriales y capacidades masivas de subprocesos múltiples. Según Sellers, esto hace de Java un mejor lenguaje para programar aplicaciones que requieren capacidades informáticas paralelas. Con el subprocesamiento virtual, que apareció con Java 21, resulta más fácil escribir, mantener y depurar aplicaciones simultáneas de alto rendimiento.

“El subprocesamiento, así como la vectorización, que permite ejecutar más de una operación de computadora simultáneamente, han mejorado mucho en las últimas versiones de Java”, agrega.

Dada la oferta de productos de Azul, Sellers claramente exaltará las virtudes del lenguaje de programación Java. Sin embargo, hay un hilo conductor en la conversación que los responsables de la toma de decisiones de TI deberían considerar. Suponiendo que el futuro de la TI empresarial esté dominado por una arquitectura nativa de la nube, incluso cuando algunas cargas de trabajo deban ejecutarse en las instalaciones, los líderes de TI deben abordar una nueva realidad: x86 no es el único juego disponible.

Exit mobile version