Migración de una aplicación .NET de Microsoft Azure App Service a AWS Elastic Beanstalk
Raghavender Madamshitti, Amazon Web Services
Resumen
Este patrón describe cómo migrar una aplicación web .NET alojada en Microsoft Azure App Service a AWS Elastic Beanstalk. Hay dos formas de migrar aplicaciones a Elastic Beanstalk:
Mediante AWS Toolkit para Visual Studio: este complemento para el IDE de Microsoft Visual Studio proporciona la forma más fácil y sencilla de implementar aplicaciones .NET personalizadas en AWS. Puede utilizar este enfoque para implementar código .NET directamente en AWS y crear recursos de apoyo, como Amazon Relational Database Service (Amazon RDS) para bases de datos de SQL Server, directamente desde Visual Studio.
Mediante carga e implementación en Elastic Beanstalk: cada Azure App Service incluye un servicio en segundo plano llamado Kudu que resulta útil para capturar los volcados de memoria y los registros de implementación, ver los parámetros de configuración y acceder a los paquetes de implementación. Puede usar la consola Kudu para acceder al contenido de Azure App Service, extraer el paquete de implementación y, a continuación, cargar el paquete en Elastic Beanstalk mediante la opción de carga e implementación de la consola de Elastic Beanstalk.
Este patrón describe el segundo enfoque (cargar la aplicación en Elastic Beanstalk a través de Kudu). El patrón también utiliza los siguientes servicios de AWS: AWS Elastic Beanstalk, Amazon Virtual Private Cloud (Amazon VPC), Amazon CloudWatch, Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling, Amazon Simple Storage Service (Amazon S3) y Amazon Route 53.
La aplicación web .NET se implementa en AWS Elastic Beanstalk, que se ejecuta en un grupo de Amazon EC2 Auto Scaling. Puede configurar una política de escalado basada en las métricas de Amazon CloudWatch, como el uso de la CPU. Para una base de datos, puede utilizar Amazon RDS en un entorno Multi-AZ o Amazon DynamoDB, según los requisitos empresariales y de la aplicación.
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa
Una aplicación web .NET que se ejecute en Azure App Service
Permiso para usar la consola Kudu de Azure App Service
Versiones de producto
.NET Core (x64) 1.0.1, 2.0.0 o posterior, o .NET Framework 4.x, 3.5 (consulte el historial de la plataforma .NET en Windows Server)
Internet Information Services (IIS) versión 8.0 o posterior que se ejecute en Windows Server 2012 o posterior
.NET 2.0 o 4.0 Runtime.
Arquitectura
Pila de tecnología de origen
Aplicación desarrollada con .NET Framework 3.5 o posterior, o .NET Core 1.0.1, 2.0.0 o posterior, y alojada en Azure App Service (aplicación web o aplicación API)
Pila de tecnología de destino
AWS Elastic Beanstalk en un grupo de Amazon EC2 Auto Scaling
Arquitectura de migración

Flujo de trabajo de una implementación

Herramientas
Herramientas
.NET Core o .NET Framework
C#
IIS
Consola Kudu
Servicios y características de AWS
AWS Elastic Beanstalk: Elastic Beanstalk es un servicio fácil de usar para implementar y escalar aplicaciones web .NET. Elastic Beanstalk administra automáticamente el aprovisionamiento de capacidad, el equilibrio de carga y el escalado automático.
Grupo de Amazon EC2 Auto Scaling: Elastic Beanstalk incluye un grupo de escalado automático que administra las instancias de Amazon EC2 en el entorno. En un entorno de una sola instancia, el grupo de escalado automático garantiza que siempre haya una instancia en ejecución. En un entorno con equilibrio de carga, se configura el grupo con una serie de instancias para ejecutarse, y Amazon EC2 Auto Scaling agrega o elimina instancias según sea necesario, en función de la carga.
Elastic Load Balancing: cuando se habilita el equilibrio de carga en AWS Elastic Beanstalk, se crea un equilibrador de carga que distribuye el tráfico entre las instancias de EC2 del entorno.
Amazon CloudWatch: Elastic Beanstalk utiliza automáticamente Amazon CloudWatch para proporcionar información sobre los recursos de la aplicación y del entorno. Amazon CloudWatch admite métricas estándar, métricas personalizadas y alarmas.
Amazon Route 53: Amazon Route 53 es un servicio web de sistema de nombres de dominio (DNS) escalable y de alta disponibilidad. Puede usar los registros de alias de Route 53 para asignar nombres de dominio personalizados a los entornos de AWS Elastic Beanstalk.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Configure una nube privada virtual (VPC). | En su cuenta de AWS, cree una VPC con la información requerida. | Administrador de sistemas |
Cree subredes. | Cree dos o más subredes en la VPC. | Administrador de sistemas |
Cree una tabla de enrutamiento. | Cree una tabla de enrutamiento según sus necesidades. | Administrador de sistemas |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Acceda a la consola Kudu de Azure App Service. | Para acceder a Kudu a través del portal de Azure, diríjase al panel de control de App Service y, a continuación, seleccione Advanced Tools (Herramientas avanzadas) y Go (Ir). O bien, puede modificar la URL del servicio de aplicaciones de Azure de la siguiente manera: | Desarrollador de aplicaciones, administrador de sistemas |
Descargue el paquete de implementación de Kudu. | Seleccione la opción DebugConsole para acceder a Windows PowerShell. De esta forma se abrirá la consola Kudo. Vaya a la carpeta | Desarrollador de aplicaciones, administrador de sistemas |
Cree un paquete para Elastic Beanstalk. | Descomprima el paquete de implementación que descargó de Azure App Service. Cree un archivo JSON llamado | Desarrollador de aplicaciones, administrador de sistemas |
Cree una nueva aplicación de Elastic Beanstalk. | Abra la consola de Elastic Beanstalk. Seleccione una aplicación existente o cree una nueva. | Desarrollador de aplicaciones, administrador de sistemas |
Cree el entorno. | En el menú Actions (Acciones) de la consola de Elastic Beanstalk, seleccione Create environment (Crear entorno). Seleccione el entorno del servidor web y la plataforma .NET/IIS. En código de aplicación, seleccione Cargar. Cargue el archivo zip que preparó para Elastic Beanstalk y, a continuación, seleccione Create Environment (Crear entorno). | Desarrollador de aplicaciones, administrador de sistemas |
Configure Amazon CloudWatch. | De forma predeterminada, está habilitada la supervisión básica de CloudWatch. Si desea cambiar la configuración, en el asistente de Elastic Beanstalk, seleccione la aplicación publicada y, a continuación, Monitoring (Supervisión). | Administrador de sistemas |
Compruebe que el paquete de implementación se encuentre en Amazon S3. | Una vez creado el entorno de la aplicación, encontrará el paquete de implementación en el bucket de S3. | Desarrollador de aplicaciones, administrador de sistemas |
Probar la aplicación. | Una vez creado el entorno, utilice la URL proporcionada en la consola de Elastic Beanstalk para probar la aplicación. | Administrador de sistemas |
Recursos relacionados
Conceptos AWS Elastic Beanstack (documentación de Elastic Beanstalk)
Getting Started with .NET on Elastic Beanstalk (Introducción a .NET en Elastic Beanstalk (documentación de Elastic Beanstalk)
Consola Kudu
(GitHub) Using "Kudu" to Manage Azure Web Apps
(artículo de GS Lab) Custom ASP.NET Core Elastic Beanstalk Deployments (Guía del usuario del Kit de herramientas de AWS para Visual Studio)
AWS Elastic Beanstalk Supported Platforms
(Plataformas compatibles con AWS Elastic Beanstalk (documentación de Elastic Beanstalk) Deploy a Web Application to AWS
(Implementación de una aplicación web en AWS) (artículo de C# Corner) Escalado del tamaño de su grupo de escalado automático (documentación de Amazon EC2)
High Availability (Multi-AZ) for Amazon RDS (Alta disponibilidad (Multi-AZ) para Amazon RDS) (documentación de Amazon RDS)
Información adicional
Notas
Si va a migrar una base de datos en las instalaciones o de Azure SQL Server a Amazon RDS, también debe actualizar los detalles de conexión a la base de datos.
Para realizar las pruebas, se adjunta un ejemplo de aplicación de demostración.
Conexiones
Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip