¿Cuales son las diferencias entre Azure Container Instances, Azure Container Apps y Azure Kubernetes Services?

Aquí de vuelta, y me complace comentar que he sido renovado por séptima vez como Microsoft MVP para Developer Technologies y Microsoft Azure, reconocimiento que es a la vez un reto que motiva a seguir compartiendo conocimiento, así que vamos a ello.

Hace unas semanas tuve una conversación respecto a las diferencias entre ACA, ACI y AKS, lo cual me hizo pensar que si, puede haber cierta confusión ya que los servicios no nacieron en el mismo tiempo, así que para entender su contexto repasemos un poco de historia.

Muchos recordamos el boom de Docker y los Contenedores durante 2015 y 2016, y si, en ese momento significo toda una revolución respecto a como se desarrollaban y desplegaban las aplicaciones, no nos detendremos en eso, pues ya se ha escrito mucho al respecto, pero si anotaremos las consecuencias inmediatas de ese boom para entonces:

  • Impulso para el uso de Linux, ya que era el único Sistema Operativo que permitía ejecutar Docker
  • Se abrió el camino para el crecimiento de un patrón de arquitectura llamado “microservicios”
  • Lo cual derivo en la necesidad de ejecutar mas de un contenedor a la vez

Si pues, yo un usuario clásico de Windows de toda la vida tuve que desempolvar mis oxidados conocimientos de Linux (¡en una MV sobre Azure!)  a fin de poder practicar con Docker y así hacer mis primeras demos al respecto. Y claro, eso me dejo con la inquietud de “¿es conveniente desplegar una MV para tan solo un contenedor?”, claro eso me llevo a conocer y probar lo que era Docker Composer, y leer sobre algo llamado Docker Swarm.

Tiempos acelerados, y en ese momento los objetivos de Microsoft iban por dos frentes: integrar a Windows (Server) en el mundo de los contenedores y por otro lado ofrecer alternativas para simplificar el despliegue y la orquestación de los contenedores en la nube. Finish Reading: ¿Cuales son las diferencias entre Azure Container Instances, Azure Container Apps y Azure Kubernetes Services?

Lo que se trajo el Microsoft Build 2022: ACA, gRPC, GraphQL y mas…

Y si, llego otra edición del Build, el evento de Microsoft orientado a los desarrolladores donde anuncia sus novedades tecnológicas de la temporada, en esta ocasión ya se nota un regreso progresivo a lo presencial pues en Simultaneo se están realizando eventos en diversas ciudades del mundo, siendo la mas cercana a nosotros Buenos Aires.

Ah, y este servidor también estuvo presente con estos #TableTopic, que espero les sean de interés:

Como decía, aparte de la visión de liderazgo que nos dan lideres como Satya Nadella, Donovan Brown o Scott Scott Hanselman, el plato fuerte es conocer los nuevos servicios o funcionalidades que se encuentran disponibles a partir de hoy, y claro, cada uno tiene sus preferencias pero las mías son:

  • Disponibilidad (GA) de los Azure Container Apps, esta era la noticia que mas estaba esperando desde el pasado #MSIgnite, donde conocimos a este nuevo servicio que viene a representar una alternativa mas sencilla de administrar la orquestación de contenedores que la proveida por Kubernetes, que seamos francos, con toda su potencia no siempre es lo que hace falta cuando tienes aplicaciones pequeñas o medianas, sumale un soporte directo a KEDA y escalamiento mas sencillo y ya tenemos una herramienta destinada a tomar un lugar relevante en nuestras arquitecturas.
  • Mejoras en Azure Kubernetes Service (AKS), de todas maneras K8s seguira siendo la opción de referencia para varios despliegues, y en ese sentido AKS ahora incluye soporte a Draft 2 para el despliegue de aplicaciones contenerizadas a Kubernetes. De igual manera se estan incluyendo dos nuevos add-in uno para facilitar el ruteo de aplicaciones Web hacia internet, y otro para KEDA, sera motivo para probar ese ruteador.
  • Mejoras a Azure App Service, ok, se ha anunciado el preview de nuevas capacidades de migración entre SKUs  y un nuevo Landing Zone (documentación y automatización) para AppService 3, pero la verdad es que lo mas esperado era el soporte para gRPC, el cual finalmente esta en preview, lo cual nos permitirá usar el protocolo HTTP/2 para facilitar y mejorar la performance de la comunicación entre el frontend y el backend.
  • Novedades en Azure API Management, Azure API Management es un servicio que usualmente damos por sentado, pero cubre un rol muy importante en las organizaciones al exponer nuestras APIs, las cuales tradicionalmente han sido de tipo RESTful, pero en los últimos años ha ido creciendo el uso de APIs basadas en GraphQL, en escenarios que requieren flexibilidad en el conjunto de datos que se recuperan de las consultas, por lo que era cuestión de tiempo que Azure API Management le diera soporte, el cual hoy pasa del modo preview a la disponibilidad general (GA).
  • Novedades en Azure SQL Database, si esta vez se han anunciado varias cosas incluyendo su conexión con Synapse, pero en este caso lo que nos interesan son las novedades para desarrolladores siendo la mas importante el anuncio de actualizaciones en el soporte a Azure Functions, lo que permitirá (en adición a C#) que lenguajes como Python o JavaScript se conecten a SQL Database reduciendo la complejidad en el acceso a la base de datos; de igual manera ahora contamos con un entorno local de desarrollo contenerizado que nos da a los desarrolladores una experiencia de trabajo lo mas cercana posible a la versión en la nube, en un entorno que nos brinda Visual Studio Code y extensiones de Azure Data Studio que nos permite generar un workflow completo de diseño, desarrollo, test y despliegue de nuestra base de datos.

Si, hay muchas otras novedades como las que trae Cosmos DB en sus mejoras para el modo serverless, o el cambio de nombre de Azure Spring Cloud a Azure Spring Apps, el nuevo MySQL Flexible Server Business Critical, etc, pero con esto tenemos lo esencial para ir aprendiendo en los próximos meses viendo las diversas sesiones ¿Cual es tu novedad mas importante? Espero tus comentarios en español, que de eso se trata este blog ;).

¿Psicosociales en el mundo de los contenedores? Kubernetes depreca a Docker

El día de ayer, buena parte del mundillo informático se sacudió con una noticia, que si bien ya se veía venir, por el lenguaje utilizado causo revuelo y preocupación, veamos:

Docker support in the kubelet is now deprecated and will be removed in a future release.

Esta nota formaba parte del log de cambios de Kubernetes, lo cual iba en la línea de un anuncio anterior donde se anunciaban este objetivo por parte de Kubernetes.

Obviamente las preguntas saltaron, ¿ya no podre seguir usando Docker si quiero trabajar con Kubernetes? ¿Qué pasara con el soporte para contenedores en Windows?, y la verdad la respuesta tardó algo en darse, y de eso hablaremos aquí, pero antes contextualicemos un poco.

Primero, veamos la parte técnica, a estas alturas en el mundo informático ya el concepto de contenedores esta mas o menos establecido, que la equivalencia con los contenedores usados en el transporte marítimo, que es una unidad de software con lo mínimo para ejecutar en un entorno destino y asi asegurar la portabilidad, las diferencias con las máquinas virtuales etc. Dicho esto, si que debemos repasar cual es el ciclo de trabajo que la mayoría de nosotros usamos al trabajar con contenedores, por simplicidad he quitado los componentes DevOps para enfocarnos en los contenedores, Docker y Kubernetes.

  • Tenemos un archivo llamado Dockerfile que define los componentes de software que queremos empaquetar y algunas acciones alrededor, este Dockerfile actúa como “receta” para que el comando “docker build” construya una imagen que la llamaremos X.
  • En este momento la imagen X esta en nuestro equipo, por lo que ya podríamos ejecutarla usando el comando “docker run”, o publicarla en un Registro tal como Docker Hub, Elastic Container Registry o Azure Container Registry, para lo cual usaremos “docker push”.
  • Con la imagen X subida en uno de estos Registros, ya esta lista para ser usada en diversos ambientes (generalmente en la nube), tales como Azure Container Instances, una máquina “convencional, Elastic Beanstalk y… Kubernetes, para lo cual este entorno destino deberá hacer un “pull” contra el Registro respectivo.

Entendiendo este gráfico podemos ver el porque de las dudas, si hemos subido nuestras imágenes apoyándonos en las funcionalidades de Docker… ¿quiere decir que en un futuro ese flujo va a cambiar?, bueno… para responder esta pregunta toca revisar un poco el como hemos llegado hasta aquí. Finish Reading: ¿Psicosociales en el mundo de los contenedores? Kubernetes depreca a Docker