Despliegue de contenedores: AWS vs. Azure

Empiece a utilizar aplicaciones en contenedores en AWS y Azure

No es una exageración decir que la tecnología de contenedores ha revolucionado la forma en que los equipos de software despliegan aplicaciones en la nube. Al mismo tiempo, el aprovisionamiento de una infraestructura orientada a los procesos de contenedores puede ser todo un reto. Por suerte para nosotros, desarrolladores y profesionales de operaciones de TI, los proveedores de la nube han creado servicios que eliminan gran parte del trabajo pesado necesario para ejecutar contenedores.

En esta entrada del blog, veremos dos opciones para empezar rápidamente a desplegar aplicaciones de contenedores en AWS y Azure. Al final de esta publicación, comprenderás mejor cómo trabajar con contenedores tanto en AWS como en Azure, y tendrás más información para ayudarte a decidir cuál es el mejor proveedor de servicios en la nube para tu caso de uso.

AWS: Elastic Beanstalk

Una de las formas más sencillas de implementar aplicaciones de contenedores en la nube de AWS es utilizando Elastic Beanstalk. Este servicio es compatible con una variedad de tecnologías de tiempo de ejecución. En el momento de escribir este artículo, se admiten las siguientes: Python, PHP, Go, Ruby, Java, .NET en Windows Server, .NET Core en Linux y Docker.

La documentación oficial de Beanstalk afirma que «al utilizar Docker con Elastic Beanstalk, se dispone de una infraestructura que gestiona todos los detalles del aprovisionamiento de capacidad, el equilibrio de carga, el escalado y la supervisión del estado de las aplicaciones».

Para desplegar aplicaciones de un solo contenedor en Beanstalk, todo lo que se necesita es un Dockerfile. Para aplicaciones más complejas que impliquen varios contenedores, Beanstalk nos permite aprovechar las características de Docker Compose mediante el uso de un archivo docker-compose.yml.

Cada entorno de Beanstalk crea y gestiona un puñado de servicios subyacentes de AWS, como los Elastic Load Balancers, los grupos de autoescalado, las instancias de EC2 y los daemons de Docker.

El soporte está disponible para repositorios de imágenes de contenedores tanto públicos como privados. Como alternativa al popular Docker Hub, que recientemente implementó limitaciones en las cuentas gratuitas, podemos utilizar el propio Amazon Elastic Container Registry de AWS para almacenar y extraer imágenes de contenedores.

La forma más rápida de empezar a utilizar Docker en Beanstalk es con la Elastic Beanstalk CLI (EB CLI). Usando la CLI, podemos crear y probar una aplicación en nuestra estación de trabajo local, y luego desplegar y administrar la aplicación en AWS.

El proceso de despliegue puede (¡y debería!) ser automatizado a través de la configuración de un CI/CD Pipeline con AWS Code Pipeline. Code Pipeline detecta los cambios en el repositorio de código fuente e inicia automáticamente la implementación en Beanstalk.

Para empezar rápidamente a desplegar aplicaciones en contenedores en AWS, comprueba Beanstalk.

Azure: App Service

El servicio utilizado para alojar y gestionar aplicaciones web a escala en Azure se llama App Service. Este servicio admite una variedad de lenguajes de tiempo de ejecución tanto para Windows como para Linux, y también aplicaciones en contenedores. App Service es a Azure lo que Beanstalk es a AWS.

La documentación oficial de App Service dice que «App Service no sólo añade la potencia de Microsoft Azure a su aplicación, como la seguridad, el equilibrio de carga, el autoescalado y la gestión automatizada. También puedes aprovechar sus capacidades de DevOps, como el despliegue continuo desde Azure DevOps, GitHub, Docker Hub y otras fuentes, la gestión de paquetes, los entornos de preparación, el dominio personalizado y los certificados TLS/SSL.»

Para crear un App Service, utilizamos el Marketplace para buscar el plan App Service. Un plan de App Service define un conjunto de recursos informáticos necesarios para la ejecución de una aplicación web.

Para aquellos que buscan simplemente experimentar con despliegues de contenedores en Azure, cualquiera de los dos niveles de precios base (gratuito y compartido) para el plan App Service debería funcionar. Estos niveles son gratuitos y los recursos no pueden escalarse, pero nos permiten probar el servicio antes de comprometernos a pagar.

Una vez creado el plan App Service, utilizamos el Marketplace para buscar y crear una Web App. Este es el servicio que se utiliza para desplegar nuestras aplicaciones web y que abstrae toda la complejidad que conlleva el aprovisionamiento de la infraestructura necesaria para ejecutar procesos de contenedores.

Para ejecutar un contenedor en una Web App, la imagen del contenedor debe estar alojada en un registro desde el que la Web App pueda desplegarse. Los registros que se admiten actualmente son Azure Container Registry, Docker Hub o un registro privado y autoalojado.

Con los servicios en su lugar y el registro de imágenes en la mano, la aplicación de contenedores está lista para ser desplegada en Azure. Este tutorial de Microsoft muestra instrucciones paso a paso sobre cómo hacerlo.

Para empezar a desplegar rápidamente aplicaciones de contenedor en Azure, consulte App Service.