En el examen AZ-104, los contenedores y App Service son temas importantes que también se usan con frecuencia en la práctica real. La terminología puede parecer desconocida al principio, pero con analogías de la vida cotidiana, lo entenderás mucho más fácil de lo que esperas.
¿Qué es un Contenedor?
Comencemos estableciendo el concepto de contenedor.
Un contenedor es como una caja de mudanza que usas cuando te cambias de casa. Cuando te mudas, empacas muebles, ropa y utensilios de cocina en cajas por separado, y cuando llegas a tu nuevo hogar, solo tienes que abrir las cajas y todo está listo para usar. Las apps funcionan igual. Cuando empaquetas una app junto con todas las bibliotecas y archivos de configuración que necesita en una sola imagen de contenedor, se ejecuta exactamente igual en cualquier servidor. El problema de "en mi computadora funcionaba bien..." desaparece.
Azure ofrece varios servicios para trabajar con contenedores. Veamos para qué situación se usa cada uno.
---
Azure Container Registry (ACR)
¿Qué es ACR?
ACR es tu propio almacén privado para guardar imágenes de contenedores.
Piensa en el almacén de un comercio en línea. Cuando se fabrican los productos, se guardan en el almacén, y cuando llega un pedido, se sacan y se envían. ACR funciona exactamente igual. Cuando el equipo de desarrollo crea una app como imagen de contenedor, la almacena en ACR y la saca para desplegarla en servidores cuando sea necesario.
¿Por qué necesitas tu propio almacén? Si subes imágenes a un registro público como Docker Hub, cualquiera puede verlas. Las apps internas de la empresa o las imágenes sensibles en términos de seguridad no deben quedar expuestas al exterior. Como ACR es un registro privado, solo los usuarios autorizados pueden acceder a las imágenes.
Comparación de SKU de ACR
| Nivel | Características | Ideal para | |-------|----------------|------------| | Basic | Almacenamiento pequeño, funciones básicas | Entornos de desarrollo/prueba | | Standard | Mayor capacidad, soporte de webhooks | Producción general | | Premium | Replicación geográfica, endpoints privados | Empresas de gran escala |
La función de replicación geográfica del nivel Premium coloca copias de las imágenes en múltiples regiones de Azure. Los servidores en Corea y los servidores en Estados Unidos pueden obtener las imágenes rápidamente desde el lugar más cercano.
Control de Acceso a ACR (RBAC)
Un almacén tiene roles, y ACR también los tiene.
AcrPull: Permiso para obtener (leer) imágenes. Se suele otorgar a los servidores de despliegue. AcrPush: Permiso para subir (escribir) imágenes. Se otorga a los pipelines de CI/CD o a los desarrolladores. AcrDelete: Permiso para eliminar imágenes. Es mejor otorgarlo solo a los administradores.
Consejo para el examen: "Necesito guardar imágenes Docker de forma privada" → piensa en ACR.
---
Azure Container Instances (ACI)
¿Qué es ACI?
ACI es la forma más rápida y sencilla de ejecutar un contenedor.
Piensa en un servicio de mensajería. Si solo necesitas transportar objetos ocasionalmente, sería un desperdicio comprar un camión o alquilar un almacén. Simplemente llamas a un mensajero. ACI funciona igual. Úsalo cuando quieras ejecutar un solo contenedor de inmediato sin configuraciones de servidor complejas ni gestión de clústeres.
¿Cuándo Usar ACI?
Trabajos por lotes: Una tarea que procesa datos cada noche a las 2 a.m. No es necesario mantenerla en ejecución el resto del tiempo — solo inicia el contenedor cuando lo necesitas y detenlo al terminar. Procesamiento basado en eventos: Casos en los que solo necesitas ejecutar algo brevemente cuando ocurre un evento específico, como convertir una imagen cuando se sube un archivo. Pruebas rápidas: Cuando quieres probar rápidamente una nueva imagen de contenedor.
Ventajas y Limitaciones de ACI
Con ACI puedes especificar directamente la CPU y la memoria, y usar solo lo que necesitas. Sin embargo, es más adecuado para tareas puntuales o de corta duración que para servicios web que funcionan de forma continua. Para arquitecturas de microservicios que requieren conexiones complejas entre múltiples contenedores, los servicios que se presentan a continuación son una mejor opción.
Consejo para el examen: "Ejecutar un solo contenedor lo más rápido posible" o "Ejecutar un contenedor sin gestión de clústeres" → piensa en ACI.
---
Azure Container Apps
¿Qué es Container Apps?
Container Apps es una plataforma de contenedores serverless. Es ideal para gestionar apps complejas donde múltiples contenedores están interconectados y trabajan juntos, como en los microservicios.
Imagina un restaurante de franquicia. La cocina, el salón y la caja operan de forma independiente pero colaboran entre sí. Durante el almuerzo, cuando hay más clientes, se añade personal en la cocina; en horas tranquilas, se reduce. Container Apps cumple exactamente este rol. Ejecuta cada microservicio (cocina, salón, caja) como un contenedor y ajusta automáticamente la escala según el tráfico.
Escalado Automático Basado en KEDA
KEDA (Kubernetes Event-Driven Autoscaling) observa diversas señales y ajusta automáticamente el número de contenedores.
Por ejemplo, cuando se acumulan solicitudes HTTP, se crean más contenedores; cuando se acumulan mensajes en una cola de mensajes, se lanzan contenedores adicionales para procesarlos. Cuando no hay tráfico, los contenedores pueden reducirse a cero para ahorrar costos. Esto es lo que significa "serverless" — no que no haya servidores, sino que no tienes que preocuparte por los servidores.
Gestión de Revisiones (Despliegues Blue/Green y Canary)
Si cambias el 100% del tráfico a una nueva versión de golpe, todos los usuarios se ven afectados si algo sale mal. Container Apps maneja esto de forma segura.
Despliegue Blue/Green: Se ejecutan simultáneamente la versión antigua (Blue) y la nueva versión (Green), y luego se transfiere todo el tráfico de una vez tras la verificación. Despliegue Canary: Inicialmente solo se envía el 5% del tráfico a la nueva versión, y se aumenta gradualmente si no hay problemas. Al igual que un canario detecta gas en una mina antes que los mineros, este enfoque prueba con un pequeño número de usuarios antes del lanzamiento completo.
Integración con Dapr
Dapr es una herramienta que facilita la comunicación entre microservicios. Proporciona una forma estandarizada para que el Servicio A envíe mensajes al Servicio B, o para almacenar y leer estado compartido, sin necesidad de escribir código complejo de sistemas distribuidos.
Consejo para el examen: "Contenedores serverless", "escalado con KEDA", "microservicios" → piensa en Container Apps.
---
Azure App Service
¿Qué es App Service?
App Service es un PaaS (Platform as a Service) que facilita el hospedaje de apps web, REST APIs y backends móviles.
Piensa en un apartamento de alquiler. No tienes que construir el apartamento tú mismo — cuando te mudas, la electricidad, el agua y la calefacción ya están listas. App Service funciona igual. Sin preocuparte por la infraestructura, como la instalación del sistema operativo del servidor, los parches de seguridad o el balanceo de carga, puedes poner en marcha un servicio web simplemente subiendo tu código. Admite una amplia variedad de lenguajes, incluidos Node.js, Python, .NET, Java y PHP.
App Service Plan
Un App Service Plan es un nivel de precios que define los recursos de cómputo (CPU, memoria) en los que se ejecuta tu app. Usando la analogía del apartamento, es como elegir entre un estudio, un apartamento de una habitación o uno dúplex.
| Nivel | Características | Ideal para | |-------|----------------|------------| | Free/Shared | Entorno gratuito o compartido, sin dominio personalizado | Desarrollo y aprendizaje | | Basic | Apps pequeñas, sin escalado automático | Producción a pequeña escala | | Standard | Escalado automático + slots de despliegue | Producción general | | Premium | Alto rendimiento, integración con VNet | Tráfico alto o necesidades de aislamiento de red | | Isolated (ASE) | Entorno dedicado aislado, App Service Environment | Casos que requieren aislamiento completo, como finanzas o sanidad |
Lo importante es que el escalado automático y los slots de despliegue solo están disponibles en Standard o superior. Este es un tema que aparece con frecuencia en el examen.
Slots de Despliegue (Deployment Slots)
Los slots de despliegue te permiten crear un entorno de staging junto a tu app de producción.
Piensa en la cocina de un restaurante. Cuando cambias el menú, hacer pruebas directamente en la cocina en funcionamiento afectaría a los clientes. En cambio, finalizas el nuevo menú en una cocina de prueba separada y, si todo está bien, lo intercambias por el menú existente.
Los slots de despliegue funcionan exactamente igual. Despliega la nueva versión en el slot de staging. Prueba exhaustivamente en staging. Si todo está bien, intercambia (swap) los slots de staging y producción. La nueva versión se despliega sin interrupción del servicio. Si surge un problema, vuelve a hacer el swap para revertir inmediatamente.