Development

Spring Native, Buildpacks & Cloud Run

Publicado por
Felipe Choque
Spring Native, Buildpacks & Cloud Run
Escrito por
Felipe Choque
Publicado en
March 22, 2024
Tiempo de lectura
Categoría
Development

logos

Cuando se trabaja en ambientes Cloud, unas de las cosas más importantes a considerar son los recursos que se usan en las aplicaciones que se quieren implementar. Considerando esto, Java no suele ser muy amado para estos propósitos. Aun así, muchas empresas evitan desechar todos sus sistemas inmediatamente y es por esto que sigue siendo muy utilizado, incluso en ambientes Cloud; para solucionar en parte este problema es que se desarrolló Spring Native.

Spring Native provee soporte para generar ejecutables usando GraalVM y Native Image. Como muchos sabrán, la principal desventaja de Java frente a otros lenguajes es la cantidad de recursos requeridos para sus aplicaciones. Allí es donde Spring Native viene a intentar dar una solución.

En esta ocasión utilizaremos Spring Native en la parte práctica, Cloud Run (GCP) para el ambiente y Buildpacks para generar el container de la aplicación.

Para crear el proyecto usaremos el clásico spring initializr:

Estructura del proyecto

spring

La idea no es realizar algo complejo, sino más bien mostrar cómo Spring Native, Build Pack y Java/SprintBoot pueden ser usados en ambientes Cloud con la ayuda de Cloud Run.

Tecnologías

  • Spring Native

Este es un proyecto experimental impulsado para mejorar la cantidad de recursos que Java/Springboot utiliza en su entorno de ejecución. Al necesitar de la JVM, Java consume por defecto más recursos que otros lenguajes. Por su parte, Spring Native se basa en GraalVM y Native Image; en palabras simples, GraalVM es un JDK diseñado para brindar high-performance y acelerar la ejecución de aplicaciones que utilizan la JVM, mientras que Native Image es una tecnología que compila el código de Java “ahead-of-time” a código binario, es decir, un “ejecutable nativo” el cual solo incluye el código requerido en runtime.

GraalVM y Native Image son mucho más complejos y podrían abarcar un artículo individual para cada uno, por lo que profundizaré en las características de cada uno en otra ocasión.

  • Buildpacks

Actualmente, cuando se trabaja en ambientes Cloud es raro que no se ocupen containers para las aplicaciones; lo más común es usar un Dockerfile para ello. Generar un buen container es bastante complicado, ya que debe cumplir con varias características para seguir las buenas prácticas. Como developer esto no es mi fuerte, por lo que busqué alternativas y llegué a Builpacks, una herramienta open source que ayuda a generar containers de manera automática a partir del código fuente.

Buildpacks incluye una serie de componentes que ayudan a generar un container cumpliendo con las mejores prácticas recomendadas para ambientes Cloud, por lo que usando esta herramienta se pueden generar containers “production-ready” sin mayores inconvenientes.

  • Cloud Run

Es un servicio serverless ofrecido por GCP, el cual tiene la particularidad de que si tienes ya tu aplicación containerized, entonces puedes deployarla muy fácilmente y generar una URL de manera automática. Todo esto sin necesidad de levantar un cluster ni ninguna otra configuración más que tu app.

Parte práctica

Para comenzar, primero mostraré algunas diferencias que se pueden notar en una aplicación que no usa Spring Native y una que sí lo ocupa. Esto lo haré con Buildpacks para generar la imagen de esta app. En el ejemplo utilizaré diferentes builders para distinguir las imágenes y finalmente subiré la imagen nativa a artifact registry en GCP para “deployarla” en Cloud Run. Esta última parte se puede hacer en un solo paso usando Cloud Build, pero será para otro artículo. 😉

attach icon
Adjuntar archivo
máximo: 10MB
Descarga el archivo haciendo click en el botón
Click aquí
¡Ups! Algo salió mal al enviar el formulario.

Download it for FREE here! 🇺🇸

Enter your details in the following form and get the full report.
attach icon
Adjuntar archivo
máximo: 10MB
Download the file by clicking the button
Click here
Oops! Something went wrong while submitting the form.

Crea tu propio manual de marca con esta plantilla gratuita.
¡Organiza tus activos de diseño de forma más eficiente!

Es
Eng