paint-brush
¿Qué son los Buildpacks nativos de la nube? Una guía sencillapor@alvinslee
258 lecturas Nueva Historia

¿Qué son los Buildpacks nativos de la nube? Una guía sencilla

por Alvin Lee8m2025/03/11
Read on Terminal Reader

Demasiado Largo; Para Leer

Los Buildpacks nativos de la nube son una forma sencilla de crear aplicaciones para Docker. Reúnen todo lo que tu aplicación necesita para ejecutarse y lo colocan en una imagen de Open Container Initiative (OCI). Es como tener el Dockerfile exacto que necesitas, solo que no necesitas escribir uno.
featured image - ¿Qué son los Buildpacks nativos de la nube? Una guía sencilla
Alvin Lee HackerNoon profile picture

¿Alguna vez te cansas de manipular un Dockerfile? Los Dockerfiles y las imágenes Docker son una excelente manera de empaquetar tu aplicación para implementaciones reutilizables en contenedores. Sin embargo, escribir y mantener un Dockerfile no siempre es intuitivo y consume tiempo que podrías dedicar a añadir funciones a tu aplicación. Descubre los Buildpacks nativos de la nube. Los Buildpacks reúnen todo lo que tu aplicación necesita para ejecutarse y lo colocan en una imagen de Open Container Initiative (OCI), sin necesidad de un Dockerfile.


Para todos los desarrolladores que necesitan un proceso de compilación de contenedores fácil de usar que les ahorre tiempo y dolores de cabeza, Cloud Native Buildpacks podría ser la solución que buscan. ¿Les interesa? Les contaré más.

¿Qué son los Buildpacks nativos de la nube?

En términos generales, un paquete de compilación toma el código de la aplicación y lo hace ejecutable mediante un proceso de compilación. Por lo tanto, los paquetes de compilación nativos de la nube toman el código fuente de la aplicación y lo convierten en imágenes OCI ejecutables y reproducibles, implementando así sus requisitos de seguridad de imágenes, optimización del rendimiento y orden de compilación de contenedores. Es como tener el Dockerfile exacto que necesita, solo que no necesita escribir uno.


Aunque la mayoría de los desarrolladores pueden crear un Dockerfile, pocos son expertos en Docker o en infraestructura. Demasiadas aplicaciones tienen Dockerfiles improvisados a partir de fragmentos de código encontrados en la web, a menudo una combinación de Copilot, Stack Overflow y ChatGPT. Los errores en los Dockerfiles pueden generar aplicaciones inseguras y con bajo rendimiento.


Los paquetes de compilación nativos de la nube se encargan de esta tarea, aplicando automáticamente las mejores prácticas para cada lenguaje o marco de trabajo. Un desarrollador puede utilizar cualquier número de paquetes de compilación , detectando automáticamente los necesarios y aplicándolos para crear una aplicación. Estos son los paquetes de compilación compatibles actualmente con el desarrollador de Heroku:


 $ pack builder inspect heroku/builder:24 Inspecting builder: heroku/builder:24 REMOTE: Description: Ubuntu 24.04 AMD64+ARM64 base image with buildpacks for .NET, Go, Java, Node.js, PHP, Python, Ruby & Scala. ... Buildpacks: ID NAME VERSION heroku/deb-packages Heroku .deb Packages 0.0.3 heroku/dotnet Heroku .NET 0.1.10 heroku/go Heroku Go 0.5.2 heroku/gradle Heroku Gradle 6.0.4 heroku/java Heroku Java 6.0.4 heroku/jvm Heroku OpenJDK 6.0.4 heroku/maven Heroku Maven 6.0.4 heroku/nodejs Heroku Node.js 3.4.5 heroku/nodejs-corepack Heroku Node.js Corepack 3.4.5 heroku/nodejs-engine Heroku Node.js Engine 3.4.5 heroku/nodejs-npm-engine Heroku Node.js npm Engine 3.4.5 heroku/nodejs-npm-install Heroku Node.js npm Install 3.4.5 heroku/nodejs-pnpm-engine Heroku Node.js pnpm Engine 3.4.5 heroku/nodejs-pnpm-install Heroku Node.js pnpm install 3.4.5 heroku/nodejs-yarn Heroku Node.js Yarn 3.4.5 heroku/php Heroku PHP 0.2.0 heroku/procfile Heroku Procfile 4.0.0 heroku/python Heroku Python 0.23.0 heroku/ruby Heroku Ruby 5.0.1 heroku/sbt Heroku sbt 6.0.4 heroku/scala Heroku Scala 6.0.4


Otros desarrolladores, como los de Paketo o Google Cloud , también ofrecen una variedad de paquetes de compilación. En resumen, el ecosistema de paquetes de compilación nativos de la nube está creciendo y madurando, lo cual es emocionante para los desarrolladores.


Si ya conoces Heroku, seguro que ya disfrutas de la experiencia de buildpack . Con git push heroku main , puedes implementar directamente en Heroku sin necesidad de Dockerfile. Los Buildpacks nativos de la nube se basan en la experiencia de buildpack de Heroku, convirtiendo lo que antes era una implementación específica del proveedor en un estándar CNCF compatible con cualquier plataforma en la nube.


En resumen, los Buildpacks nativos de la nube permiten a los desarrolladores:


  • Implemente aplicaciones más fácilmente que nunca
  • …de manera estándar y sin bloqueos
  • …todo ello aplicando las mejores prácticas de contenedores
  • …y sin que los desarrolladores tengan que manipular Dockerfiles.

Casos de uso

Suena genial, ¿verdad? Con todos estos beneficios, veamos algunos casos específicos en los que podrías beneficiarte del uso de Buildpacks nativos de la nube.

Cualquier lugar donde normalmente se necesita un Dockerfile es una oportunidad para usar un paquete de compilación. Algunos ejemplos incluyen:


  • Una aplicación web Node.js
  • Un microservicio de Python
  • Una aplicación heterogénea que utiliza múltiples lenguajes o marcos
  • Creación de aplicaciones para su implementación en plataformas en la nube como AWS, Azure y Heroku


Es importante tener en cuenta lo siguiente: mientras que los buildpacks son declarativos , los Dockerfiles son procedurales . Con un buildpack, simplemente se declara que se desea compilar una aplicación con un compilador o buildpack específico. En cambio, un Dockerfile requiere definir los comandos y el orden en que se ejecutan para compilar la aplicación. Por lo tanto, los buildpacks actualmente no ofrecen el mismo nivel de configurabilidad que un Dockerfile, por lo que podrían no satisfacer las necesidades de algunos casos de uso más avanzados.


Dicho esto, con los Buildpacks de Cloud Native no hay dependencia de ningún proveedor. Simplemente crean una imagen OCI. ¿Necesitas más personalización y opciones que las disponibles en el Buildpack? Simplemente reemplaza el compilador en tu pipeline de compilación con tu Dockerfile y una compilación de imagen OCI estándar, y listo.

Un tutorial sencillo

Hagamos un recorrido rápido sobre cómo utilizar Cloud Native Buildpacks.


Para empezar a usar buildpacks como desarrollador de aplicaciones, el primer paso debería ser instalar la herramienta Pack CLI . Esta herramienta permite crear una aplicación con buildpacks. Siga las instrucciones de instalación para su sistema operativo.


Además, si aún no lo tienes, necesitarás un demonio de Docker para que el compilador cree tu aplicación y para que puedas ejecutar tu imagen. Con estas dos herramientas instaladas, estás listo para empezar.

Crear una aplicación de muestra

Con acceso a la herramienta pack , ya puedes probarla creando una aplicación de ejemplo. La ejecutaré dentro de una aplicación Next.js. ¿Necesitas una aplicación de ejemplo para probar el paquete de compilación? Aquí tienes un directorio completo de aplicaciones de ejemplo de Next.js. También puedes probar cualquier aplicación que tengas.


Una vez que tengas tu aplicación lista, empieza por ver qué constructor sugiere la herramienta de empaquetado. En tu shell, navega al directorio de la aplicación y ejecuta este comando:


 $ pack builder suggest


En mi instalación de Ubuntu, para mi aplicación Next.js, la herramienta pack sugiere los siguientes constructores:


Probemos el paquete de compilación de Heroku sugerido ( heroku/builder:24 ). Para usarlo, ejecute el siguiente comando:


 $ pack build my-app --builder heroku/builder:24


El tiempo de compilación varía según el tamaño de la aplicación; en mi caso, compilarla me llevó 30 segundos. Con eso, mi imagen estaba lista. Podemos ejecutar la imagen con lo siguiente:


 $ docker run -p 3000:3000 my-app


El resultado se ve así:



¡Listo! Hemos creado con éxito una imagen OCI de nuestra aplicación Next.js, sin usar un Dockerfile.

Configuraciones adicionales

¿Qué ocurre si necesitas configurar algo dentro del paquete de compilación? Para ello, debes consultar los paquetes de compilación seleccionados por el compilador. Por ejemplo, para mi aplicación Next.js, puedo ver en los registros que el compilador seleccionó dos paquetes de compilación: nodejs-engine y nodejs-yarn .



Supongamos que quiero especificar la versión de Yarn que usa el paquete de compilación. Primero, iría al archivo Léame del paquete de compilación de nodejs-yarn , donde veo que puedo especificar la versión de Yarn en mi archivo package.json con una clave packageManager . Modificaría mi archivo para que se vea así:


 { "packageManager": "yarn@1.22.22" }


Desde allí, todo lo que tendría que hacer sería ejecutar pack build my-app --builder heroku/builder:24 nuevamente.

Conclusión

Los Buildpacks nativos de la nube son una nueva y emocionante forma de crear imágenes de contenedor para nuestras aplicaciones. Al eliminar la necesidad de un Dockerfile, agilizan el empaquetado y la implementación de nuestra aplicación. Además, al crear imágenes de contenedor estándar, no hay dependencia de ningún proveedor.


Los paquetes de compilación nativos de la nube están en versión preliminar en muchas plataformas, lo que significa que su conjunto de funciones es reducido, pero crece rápidamente. Heroku, que ha publicado sus paquetes de compilación nativos de la nube en código abierto , también los está incorporando a su plataforma de nueva generación . Tengo muchas ganas de ver cómo los paquetes de compilación nativos de la nube permiten una implementación segura y rápida de aplicaciones en toda la comunidad de plataformas en la nube.