Migración mediante lift-and-shift a contenedores con Azure App Service

Microsoft Entra ID
Azure Container Registry
Azure App Service

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con más información, como posibles casos de uso, servicios alternativos, consideraciones de implementación o una guía de precios, comunícalo a través de los Comentarios de GitHub.

Esta solución migra las aplicaciones web existentes a contenedores que se implementan en App Service, lo que le permite centrarse en la composición de contenedores sin tener que preocuparse de administrar la orquestación de contenedores.

Architecture

Diagrama de arquitectura en el que se muestra la migración de una aplicación existente a contenedores de Azure Kubernetes Service con Open Service Broker para Azure para acceder a las bases de datos de Azure.

Descargue un archivo Visio de esta arquitectura.

Flujo de datos

  1. El desarrollador convierte la aplicación web existente en un contenedor.
  2. El desarrollador publica la imagen de contenedor en:
    1. Un registro privado o Docker Hub.
    2. O bien, una instancia de Azure Container Registry.
  3. App Service extrae la imagen con:
    1. Credenciales para el registro privado o Docker Hub, si se usa.
    2. O bien identidad administrada, que usa una entidad de seguridad de Microsoft Entra para acceder a Azure Container Registry.
  4. Conectores de servicio para acceder a otros recursos de Azure.
  5. El desarrollador inserta una nueva imagen en el registro de contenedor, que desencadena las actualizaciones de App Service cuando se habilita la implementación continua.

Componentes

Web App for Containers: con App Service, puede implementar y ejecutar aplicaciones web en contenedores en Windows y Linux. Web App for Containers proporciona una rampa simple para que los desarrolladores aprovechen una plataforma totalmente administrada, pero que también quieren un único artefacto que se pueda implementar y que contenga una aplicación, así como todas sus dependencias. Otro escenario de destino son los desarrolladores que quieren trabajar con un marco personalizado o una versión más allá de los valores predeterminados que están integrados en la plataforma de Azure App Service. Las aplicaciones web en contenedores en Azure App Service pueden escalar según sea necesario y usar flujos de trabajo de CI/CD optimizados con Docker Hub, Azure Container Registry y GitHub.

Azure Container Registry es un registro de imágenes de Docker y Open Container Initiative (OCI), compatible con todos los artefactos de OCI. Use imágenes de contenedor en servicios de Azure, como App Service, Machine Learning y Batch. Por ejemplo, al configurar Web App for Containers para la aplicación web, puede especificar una imagen de contenedor de Azure Container Registry.

Azure Cosmos DB es un servicio de base de datos NoSQL totalmente administrado para compilar y modernizar aplicaciones escalables de alto rendimiento. Azure Cosmos DB está integrado con los servicios principales de Azure, entre los que se incluyen Azure Functions, IoT Hub, AKS (Azure Kubernetes Service), App Service y mucho más. Puede elegir entre varias API de base de datos, como Azure Cosmos DB for NoSQL nativo, Azure Cosmos DB for MongoDB, Azure Cosmos DB for Apache Cassandra, Azure Cosmos DB for Apache Gremlin y Azure Cosmos DB for Table.

Azure SQL Database: base de datos relacional totalmente administrada con inteligencia integrada. Azure SQL Database ayuda a compilar aplicaciones localmente o en la nube en plataformas y marcos populares con compatibilidad con controladores para los lenguajes más comunes. SQL Database permite simplificar el desarrollo con compatibilidad nativa con sitios web que se ejecutan en Azure App Service.

Azure Storage: Azure Storage ofrece una solución de almacenamiento en la nube duradera, de alta disponibilidad y escalable de forma masiva, e incluye almacenamiento de objetos, archivos, discos, colas y tablas. Azure Storage incluye servicios para el almacenamiento de objetos, bloques y archivos a fin de satisfacer las demandas del sitio web. Por ejemplo, los sitios web pueden usar con facilidad Azure Blob Storage para el almacenamiento en bloque escalable y seguro de los elementos multimedia del sitio web, como fotos y vídeos.

Azure Monitor: Application Insights proporciona supervisión de rendimiento y de estado, así como diagnósticos. Azure Monitor se puede usar con Web App for Containers (App Service) para supervisar las métricas del sitio web, como el número de conexiones y recuentos de solicitudes, lo que da lugar a códigos de estado HTTP.

Conector de servicio de Azure: el conector de servicio ayuda a conectar los servicios de proceso de Azure a otros servicios de copia de seguridad. Por ejemplo, use un conector de servicio entre Azure App Service y Azure Database for MySQL o PostgreSQL, Azure Storage y Azure Key Vault. Para obtener una lista completa de los servicios admitidos, consulte Servicios que se admiten en el conector de servicio.

Detalles del escenario

Migre con facilidad las aplicaciones web existentes a contenedores y ejecute las aplicaciones web en contenedores en Web App for Containers en Azure App Service. Web App for Containers permite centrarse en la composición de los contenedores sin tener que preocuparse de administrar y mantener un orquestador de contenedores subyacente. Al compilar aplicaciones web, Web App for Containers es una buena opción para realizar los primeros pasos con los contenedores. Los contenedores se pueden integrar fácilmente con otros recursos de Azure, como los servicios de almacenamiento y base de datos.

Al integrar aplicaciones web existentes con recursos de Azure, también puede aprovechar las conexiones sin contraseña para los servicios de Azure. Las conexiones sin contraseña son una característica independiente del lenguaje que abarca varios servicios de Azure. Cuando se usan conexiones sin contraseña, las aplicaciones web se conectan a los servicios basados en Azure sin necesidad de rotar las contraseñas. Solo se necesita la configuración: no se necesita código nuevo.

Posibles casos de uso

Esta idea de solución es ideal para migrar aplicaciones web actuales a contenedores que se ejecutan en Azure. Esta idea de solución se puede usar para crear un sitio web cuando se aplique lo siguiente:

  • Usa la experiencia de programación existente que se usa para crear sitios web que se implementan por código a fin de crear sitios web que se implementan por contenedores. Migración mediante lift-and-shift de aplicaciones web existentes a contenedores en App Service.

  • Desarrollo e implementación simplificados con herramientas como Visual Studio, Visual Studio Code, la CLI de Azure y Azure Cloud Shell.

  • Portabilidad en diferentes entornos, desde desarrollo a producción y nubes diferentes. Puede probar localmente, en una plataforma diferente de la que se implementa para producción.

  • La escalabilidad en App Service significa que puede escalar horizontalmente el número de trabajos que se usan a petición.

  • La modularidad del futuro sitio web funciona en App Service o en otros servicios, como Azure Container Apps y Azure Kubernetes Service. Web App for Containers puede ser un buen primer paso para el traslado a contenedores.

  • Un contenedor que se implemente en Web App for Containers está listo para la integración continua y entrega continua (CI/CD). Las funcionalidades de CI/CD le permiten enviar actualizaciones más rápido.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes

Ejemplo de implementaciones de lenguaje de contenedores en App Service:

Guía de arquitectura relacionada: