Migración de una aplicación a Azure App Service y SQL Database

En este artículo se muestra cómo la compañía ficticia Contoso refactoriza una aplicación de .NET de Windows de dos niveles que se ejecuta en máquinas virtuales VMware como parte de una migración a Azure. El equipo de Contoso migra la máquina virtual (VM) de front-end de la aplicación a una aplicación web de Azure App Service y la base de datos de la aplicación a Azure SQL Database.

La aplicación SmartHotel360 que usamos en este ejemplo se proporciona como software de código abierto. Si quiere utilizarla para sus propias pruebas, puede descargarla desde GitHub.

Impulsores del negocio

El equipo directivo de TI de Contoso ha trabajado estrechamente con sus socios comerciales para comprender lo quieren lograr con esta migración:

  • Abordar el crecimiento del negocio. Contoso está creciendo y los sistemas y la infraestructura locales están bajo presión.
  • Aumentar la eficacia. Contoso debe quitar procedimientos innecesarios y optimizar los procesos para sus desarrolladores y usuarios. La empresa necesita que el departamento de TI sea rápido y no malgaste tiempo ni dinero a fin de satisfacer más rápidamente los requisitos del cliente.
  • Aumentar la agilidad. Para alcanzar el éxito en una economía global, el departamento de TI de Contoso necesita más capacidad de respuesta a las necesidades de la empresa. Debe ser capaz de reaccionar con más rapidez a los cambios del mercado. No se debe interponer en el camino ni bloquear el negocio.
  • Escala. a medida que el negocio crece satisfactoriamente, el equipo de TI de Contoso debe proporcionar sistemas que puedan crecer al mismo ritmo.
  • Reducir los costos. Contoso quiere minimizar los costos de licencia.

Objetivos de la migración

El equipo de la nube de Contoso ha definido los siguientes objetivos con el fin de determinar el mejor método de migración:

Requisitos Detalles
Aplicación La aplicación de Azure seguirá siendo tan crítica como lo es hoy en día en el entorno local.

Debe tener las mismas funcionalidades de rendimiento que las que tiene actualmente en VMware.

El equipo no quiere invertir en la aplicación. Por ahora, los administradores simplemente moverán la aplicación de forma segura a la nube.

El equipo quiere finalizar el soporte técnico de Windows Server 2008 R2, donde se ejecuta actualmente la aplicación.

El equipo también quiere abandonar SQL Server 2008 R2 y pasar a una base de datos de plataforma como servicio (PaaS), lo que minimizará la necesidad de administración.

Contoso quiere aprovechar su inversión en licencias de SQL Server y Software Assurance, tanto como que sea posible.

Además, Contoso quiere mitigar el único punto de error en el nivel web.
Limitaciones La aplicación está formada por una aplicación de ASP.NET y un servicio Windows Communication Foundation (WCF) que se ejecutan en la misma máquina virtual. Contoso quiere distribuir estos componentes entre dos aplicaciones web con Azure App Service.
Azure Contoso quiere mover la aplicación a Azure, pero no quiere que se ejecute en máquinas virtuales. Quiere usar los servicios de PaaS de Azure para los niveles web y de datos.
DevOps Contoso quiere migrar a un modelo DevOps, con Azure DevOps para las canalizaciones de compilación y de versión.

Diseño de la solución

Después de precisar los objetivos y requisitos, Contoso diseña y revisa una solución de implementación. También identifica el proceso de migración, incluidos los servicios de Azure que usarán para la migración.

Aplicación actual

  • La aplicación SmartHotel360 local se divide en niveles entre dos máquinas virtuales (WEBVM y SQLVM).
  • Las máquinas virtuales se encuentran en el host de VMware ESXi contosohost1.contoso.com versión 6.5.
  • El entorno de VMware se administra con vCenter Server 6.5 (vcenter.contoso.com), que se ejecuta en una máquina virtual.
  • Contoso tiene un centro de datos local (contoso-datacenter), con un controlador de dominio local (contosodc1).
  • Las VM locales del centro de datos de Contoso se retirarán después de realizar la migración.

Solución propuesta

  • Para la capa de base de datos de la aplicación, Contoso comparó Azure SQL Database con SQL Server según el artículo Comparación de características: Azure SQL Database y Azure SQL Managed Instance. Contoso se decantó por Azure SQL Database por diversos motivos:
    • Azure SQL Database es un servicio administrado de bases de datos relacionales. Ofrece un rendimiento predecible en los diferentes niveles del servicio, con administración casi inexistente. Las ventajas incluyen escalabilidad dinámica sin tiempo de inactividad, optimización inteligente integrada y disponibilidad y escalabilidad global.
    • Contoso puede usar la herramienta ligera Data Migration Assistant para evaluar la migración de la base de datos local a Azure SQL Database.
    • Contoso puede usar Azure Database Migration Service para migrar la base de datos local a Azure SQL Database.
    • Con Software Assurance, Contoso puede intercambiar las licencias existentes por descuentos en una base de datos de SQL Database con la Ventaja híbrida de Azure para SQL Server. Este enfoque podría proporcionar un ahorro de costos de hasta un 30 por ciento.
    • SQL Database proporciona características de seguridad, por ejemplo, Always Encrypted, enmascaramiento dinámico de datos, seguridad a nivel de fila y detección de amenazas SQL.
  • Para el nivel web de la aplicación, Contoso ha decidido usar Azure App Service. Este servicio PaaS permite implementar la aplicación con tan solo unos cambios en la configuración. Contoso usará Visual Studio para realizar el cambio e implementará dos aplicaciones web, una para el sitio web y otra para el servicio WCF.
  • Para cumplir los requisitos de una canalización de DevOps, Contoso usará Azure DevOps para la administración del código fuente con repositorios de Git. Se usarán compilaciones y versiones automatizadas para compilar el código e implementarlo en Azure App Service.

Revisión de la solución

Contoso evalúa el diseño propuesto y crea una lista de ventajas y desventajas como se muestra en la tabla siguiente:

Consideración Detalles
Ventajas No es necesario modificar el código de la aplicación SmartHotel360 para la migración a Azure.

Contoso puede aprovechar su inversión en Software Assurance con la Ventaja híbrida de Azure para SQL Server y Windows Server.

Después de la migración, ya no será necesaria la compatibilidad con Windows Server 2008 R2. Para obtener más información, consulte la directiva de ciclo de vida de Microsoft.

Contoso puede configurar el nivel web de la aplicación con varias instancias, para que el nivel web deje de ser un único punto de error.

La base de datos ya no dependerá de la antigüedad de SQL Server 2008 R2.

SQL Database es compatible con los requisitos técnicos. Contoso evaluó la base de datos local con Data Migration Assistant y averiguó que es compatible.

Azure SQL Database cuenta con tolerancia a errores integrada que no es necesario que Contoso configure. Esto garantiza que la capa de datos ya no sea un único punto de conmutación por error.

Si Contoso usa Azure Database Migration Service para migrar su base de datos, tendrá la infraestructura preparada para migrar bases de datos a gran escala.
Desventajas Azure App Service solo admite la implementación de una aplicación por cada aplicación web. Esto significa que se deben aprovisionar dos aplicaciones web, una para el sitio web y otra para el servicio WCF.

Arquitectura propuesta

Diagrama de la arquitectura propuesta.

Proceso de migración

  1. Contoso aprovisiona una instancia de Azure SQL Database a la que migra la base de datos SmartHotel360 mediante Azure Database Migration Service.

  2. Aprovisiona y configura las aplicaciones web e implementa la aplicación SmartHotel360 en ellas.

    Diagrama del proceso de migración.

Servicios de Azure

Servicio Descripción Coste
Azure App Service Migration Assistant Una forma sencilla y gratuita de migrar sin problemas aplicaciones web de .NET desde el entorno local a la nube con cambios mínimos en el código o incluso sin ningún cambio. Es una herramienta que se puede descargar de forma gratuita.
Data Migration Assistant Contoso va a usar Data Migration Assistant para evaluar y detectar problemas de compatibilidad que podrían afectar a la funcionalidad de la base de datos en Azure. Data Migration Assistant evalúa la paridad de características entre orígenes y destinos de SQL y recomienda mejoras de rendimiento y confiabilidad. Es una herramienta que se puede descargar de forma gratuita.
Azure Database Migration Service Azure Database Migration Service permite migraciones completas de varios orígenes de base de datos a plataformas de datos de Azure, con un tiempo de inactividad mínimo. Información acerca de las regiones admitidas y los precios de Database Migration Service.
Azure SQL Database Servicio de base de datos relacional inteligente y completamente administrado en la nube. El costo se basa en las características, el rendimiento y el tamaño. Más información.
Azure App Service Permite crear aplicaciones en la nube eficaces que usan una plataforma totalmente administrada. Los precios se basan en el tamaño, la ubicación y la duración del uso. Más información.
Azure Pipelines Ofrece una canalización de integración continua e implementación continua (CI/CD) para el desarrollo de aplicaciones. La canalización comienza con un repositorio de Git para administrar código de aplicaciones, un sistema de compilación para producir paquetes y otros artefactos de compilación, y un sistema de administración de versiones para implementar cambios en entornos de desarrollo, prueba y producción.

Requisitos previos

Contoso debe cumplir los siguientes requisitos previos para ejecutar este escenario:

Requisitos Detalles
Suscripción de Azure Suscripciones creadas por Contoso anteriormente en esta serie de artículos. Si no tiene una suscripción a Azure, cree una cuenta gratuita.

Si crea una cuenta gratuita, será el administrador de su suscripción y podrá realizar todas las acciones.

Si usa una suscripción existente y no es el administrador, tendrá que solicitar al administrador que le asigne permisos de propietario o colaborador.
Infraestructura de Azure Contoso configura la infraestructura de Azure según se describe en Infraestructura de Azure para la migración.

Pasos del escenario

Contoso ejecutará la migración de la forma siguiente:

  • Paso 1: Evaluar y migrar las aplicaciones web. Contoso usa la herramienta Azure App Service Migration Assistant para ejecutar comprobaciones de compatibilidad previas a la migración y migrar sus aplicaciones web a Azure App Service.
  • Paso 2: Aprovisionamiento de una base de datos en Azure SQL Database. Contoso aprovisiona una instancia de Azure SQL Database. Después de migrar el sitio web de la aplicación a Azure, la aplicación web del servicio WCF apuntará a esta instancia.
  • Paso 3: Evaluación de la base de datos. Contoso evalúa la base de datos para la migración con Data Migration Assistant y, a continuación, realiza la migración con Azure Database Migration Service.
  • Paso 4: Configuración de Azure DevOps. Contoso crea un proyecto de Azure DevOps e importa el repositorio de Git.
  • Paso 5: Configuración de las cadenas de conexión. Contoso configura las cadenas de conexión para que la instancia de SQL, la aplicación web del servicio WCF y la aplicación web de nivel de web puedan comunicarse.
  • Paso 6: Configuración de las canalizaciones de compilación y de versión en Azure DevOps. Como último paso, Contoso configura las canalizaciones de compilación y de versión en Azure DevOps para crear la aplicación y, a continuación, las implementa en dos aplicaciones web independientes.

Paso 1: Evaluar y migrar las aplicaciones web

Los administradores de Contoso evalúan y migran su aplicación web mediante la herramienta Azure App Service Migration Assistant. Usan la ruta de aprendizaje sobre migración de aplicaciones de ASP.NET a Azure como guía durante el proceso. Los administradores realizan estas acciones:

  • Usan la herramienta Azure App Service Migration Assistant para evaluar las dependencias entre sus aplicaciones web y determinar si hay alguna incompatibilidad entre sus aplicaciones web locales y aquellas que se admiten en Azure App Service.

  • Descargan Azure App Service Migration Assistant e inician sesión en su cuenta de Azure.

  • Eligen una suscripción, un grupo de recursos y el nombre de dominio del sitio web.

Paso 2: Aprovisionamiento de una base de datos en Azure SQL Database

  1. Los administradores de Contoso deciden crear una instancia de Azure SQL Database.

    Captura de pantalla que muestra el vínculo de SQL Database.

  2. Especifican un nombre de base de datos para que coincida con la base de datos, SmartHotel.Registration, que se ejecuta en la máquina virtual local. Colocan la base de datos en el grupo de recursos ContosoRG. Este es el grupo de recursos que usa para los recursos de producción en Azure.

    Captura de pantalla que muestra los detalles de la instancia de SQL Database.

  3. Configuran una nueva instancia de SQL Server, sql-smarthotel-eus2, en la región primaria.

    Captura de pantalla de la nueva instancia de SQL Server.

  4. Establece el plan de tarifa que mejor se adapta a las necesidades de su servidor y base de datos. Así mismo, selecciona esta opción para ahorrar dinero con la Ventaja híbrida de Azure, porque ya tiene una licencia de SQL Server.

  5. Para ajustar el tamaño, realiza compras basadas en el núcleo virtual y establece los límites para los requisitos esperados.

    Captura de pantalla de los requisitos de tamaño de núcleo virtual.

  6. Crean la instancia de la base de datos.

    Captura de pantalla de la creación de una instancia de SQL Database.

  7. Abren la base de datos y anotan los detalles que necesitarán cuando usen Data Migration Assistant para la migración.

    Captura de pantalla del archivo de texto de la instancia de base de datos.

¿Necesita más ayuda?

Paso 3: Evaluación de la base de datos

Los administradores de Contoso evalúan la base de datos mediante Data Migration Assistant y, a continuación, la migran con Azure Database Migration Service según el tutorial de migración paso a paso. Pueden realizar migraciones en línea, sin conexión e híbridas (versión preliminar).

En resumen, los administradores hacen lo siguiente:

  • Usan Data Migration Assistant para detectar y resolver los problemas de migración de base de datos.
  • Crean una instancia de Azure Database Migration Service con una SKU Premium que está conectada a la red virtual.
  • Se aseguran de que la instancia pueda acceder a la instancia remota de SQL Server mediante la red virtual. Esto implica asegurarse de que todos los puertos de entrada están permitidos desde Azure a SQL Server en el nivel de la red virtual, la VPN de red y la máquina que hospeda SQL Server.
  • Configuran la instancia:
    • Cree un proyecto de migración.
    • Agregue un origen (base de datos local).
    • Seleccione un destino.
    • Seleccione las bases de datos que se van a migrar.
    • Configure las opciones avanzadas.
    • Inicie la replicación.
    • Resuelva posibles errores.
    • Realice la migración final.

Paso 4: Configurar Azure DevOps

Contoso necesita compilar la infraestructura y las canalizaciones de DevOps para la aplicación. Para ello, los administradores de Contoso crean un proyecto de DevOps, importan el código y luego configuran las canalizaciones de compilación y versión.

  1. En la cuenta de Azure DevOps de Contoso, crean un nuevo proyecto, ContosoSmartHotelRefactor, y, a continuación, seleccionan Git como control de versiones.

    Captura de pantalla de la creación de un nuevo proyecto en Azure DevOps.

  2. Importan el repositorio de Git que actualmente contiene su código de la aplicación. Lo descargan desde el repositorio público de GitHub.

    Captura de pantalla del panel Importar un repositorio de Git.

  3. Conectan Visual Studio al repositorio y clonan el código en la máquina de desarrollo mediante Team Explorer.

    Captura de pantalla del panel Conectarse a un proyecto.

  4. Abren el archivo de la solución para la aplicación. La aplicación web y el servicio WCF tienen proyectos separados dentro del archivo.

    Captura de pantalla del Explorador de soluciones, donde se enumeran los proyectos de la aplicación web y el servicio WCF.

Paso 5: Configurar cadenas de conexión

Los administradores de Contoso se aseguran de que las aplicaciones web y la base de datos pueden comunicarse. Para ello, configura las cadenas de conexión en el código y en las aplicaciones web.

  1. En la aplicación web del servicio WCF, SHWCF-EUS2, en Configuración>Configuración de la aplicación, agregan una nueva cadena de conexión llamada DefaultConnection.

  2. Extraen la cadena de conexión de la base de datos SmartHotel-Registration y, a continuación, la actualizan con las credenciales correctas.

    Captura de pantalla del panel Configuración de la cadena de conexión.

  3. En Visual Studio, los administradores abren el proyecto SmartHotel.Registration.wcf desde el archivo de la solución. En el proyecto, actualizan la sección connectionStrings del archivo web.config con la cadena de conexión.

    Captura de pantalla de la sección connectionStrings del archivo web.config en el proyecto SmartHotel.Registration.wcf.

  4. Cambian la sección client del archivo web.config para que SmartHotel.Registration.Web apunte a la nueva ubicación del servicio WCF. Esta es la dirección URL de la aplicación web WCF que hospeda el punto de conexión de servicio.

    Captura de pantalla de la sección Cliente del archivo web.config del proyecto SmartHotel.Registration.wcf.

  5. Una vez realizados los cambios en el código, los administradores los confirman y los sincronizan mediante Team Explorer en Visual Studio.

Paso 6: Configurar canalizaciones de compilación y versión en Azure DevOps

Los administradores de Contoso configuran ahora Azure DevOps para ejecutar el proceso de compilación y creación de versiones.

  1. En Azure DevOps, seleccionan Compilación y versión>Nueva canalización.

    Captura de pantalla del vínculo Nueva canalización en Azure DevOps.

  2. Seleccionan GIT de Azure Repos y, en la lista desplegable Repositorio, seleccionan el repositorio correspondiente.

    Captura de pantalla del botón Repositorio Git de Azure y el repositorio seleccionado.

  3. En Seleccionar una plantilla, seleccionan la plantilla ASP.NET para su compilación.

    Captura de pantalla del panel Seleccionar una plantilla para seleccionar la plantilla de ASP.NET.

  4. Usan el nombre ContosoSmartHotelRefactor-ASP.NET-CI para realizar la compilación y, a continuación, seleccionan Guardar y poner en cola, lo que inicia la primera compilación.

    Captura de pantalla del botón Guardar y poner en cola para la compilación.

  5. Seleccionan el número de compilación para ver el proceso. Cuando termina, los administradores pueden ver los comentarios del proceso y seleccionar Artefactos para revisar los resultados de la compilación.

    Captura de pantalla de la página de compilación y el vínculo Artefactos para revisar los resultados de la compilación.

    Se abre el panel Explorador de artefactos y la carpeta drop muestra los resultados de la compilación.

    • Los dos archivos ZIP son los paquetes que contienen las aplicaciones.
    • Estos archivos ZIP se usan en la canalización de versión para la implementación en Azure App Service.

    Captura de pantalla del panel Explorador de artefactos.

  6. Seleccionan Versiones>+ Nueva canalización.

    Nueva canalización

  7. Seleccionan la plantilla de implementación de Azure App Service.

    Captura de pantalla de la plantilla de implementación de Azure App Service.

  8. Asignan a la canalización de versión el nombre ContosoSmartHotel360Refactor y, en Nombre de la fase, especifican SHWCF-EUS2 como nombre de la aplicación web de WCF.

    Captura de pantalla del nombre de la fase de la aplicación web de WCF.

  9. En las fases, seleccionan 1 phase, 1 task (1 fase, 1 tarea) para configurar la implementación del servicio WCF.

    Captura de pantalla de la opción 1 trabajo, 1 tarea.

  10. Comprueban que la suscripción está seleccionada y autorizada y, a continuación, seleccionan Nombre de App Service.

    Captura de pantalla de la selección del nombre de App Service.

  11. En la canalización >Artefactos, seleccionan + Agregar un artefacto y, a continuación, optan por compilar con la canalización ContosoSmarthotel360Refactor.

    Captura de pantalla del botón Compilación del panel Agregar un artefacto.

  12. Los administradores seleccionan el icono de rayo en el artefacto para habilitar el desencadenador de la implementación continua.

    Captura de pantalla del icono de rayo en el artefacto.

  13. Establecen el desencadenador de implementación continua en Habilitado.

    Captura de pantalla que muestra el desencadenador de implementación continua establecido en Habilitado.

  14. Ahora, vuelven a la fase 1 trabajo, 1 tarea y, después, seleccionan Implementación de Azure App Service.

    Captura de pantalla de la opción para seleccionar Implementación de Azure App Service.

  15. En Seleccione un archivo o carpeta, expanden la carpeta drop, seleccionan el archivo SmartHotel.Registration.Wcf.zip que se creó durante la compilación y, a continuación, seleccionan Guardar.

    Captura de pantalla del panel Seleccione un archivo o carpeta para seleccionar el archivo WCF.

  16. Seleccionan Canalización>Fases y, a continuación, seleccionan + Agregar para agregar un entorno para SHWEB-EUS2. Seleccionan otra implementación de Azure App Service.

    Captura de pantalla del vínculo 1 trabajo, 1 tarea para agregar un entorno.

  17. Repiten el proceso para publicar el archivo SmartHotel.Registration.Web.zip en la aplicación web correcta y, a continuación, seleccionan Guardar.

    Captura de pantalla del panel Seleccione un archivo o carpeta para seleccionar el archivo web.

    Aparece la canalización de versión, como se muestra aquí:

    Captura de pantalla del resumen de la canalización de versión.

  18. Vuelven a Compilación, seleccionan Desencadenadores y, a continuación, activan la casilla Habilitar la integración continua. Esta acción habilita la canalización para que, cuando se confirmen los cambios en el código, se produzcan la compilación y la creación de versión completas.

    Captura de pantalla en la que se resalta la casilla

  19. Seleccionan Guardar y poner en cola para ejecutar la canalización completa. Se desencadena una nueva compilación que, a su vez, crea la primera versión de la aplicación en Azure App Service.

    Captura de pantalla del botón Guardar y poner en cola.

  20. Los administradores de Contoso pueden seguir el proceso de canalización de compilación y versión en Azure DevOps. Una vez finalizada la compilación, se inicia la creación de versión.

    Captura de pantalla del progreso de las aplicaciones de compilación y versión.

  21. Una vez finalizada la canalización, se habrán implementado ambos sitios y la aplicación estará en funcionamiento en línea.

    Captura de pantalla que muestra que la aplicación está en funcionamiento.

    La aplicación se ha migrado correctamente a Azure.

Limpiar después de la migración

Después de la migración, Contoso debe completar estos pasos de limpieza:

  • Quita las VM locales del inventario de vCenter.
  • Eliminan las máquinas virtuales de los trabajos de copia de seguridad locales.
  • Actualizan la documentación interna para que muestre las nuevas ubicaciones de la aplicación SmartHotel360. La documentación muestra que la base de datos se ejecuta en Azure SQL Database y el front-end está en ejecución en dos aplicaciones web.
  • Revisan los recursos que interactúan con las máquinas virtuales retiradas y actualizan los valores de configuración pertinentes y la documentación para reflejar la nueva configuración.

Revisión de la implementación

Con los recursos ya migrados a Azure, Contoso debe proteger la infraestructura nueva y ponerla totalmente en marcha.

Seguridad

  • Contoso tiene que asegurarse de que la nueva base de datos SmartHotel-Registration es segura. Más información.
  • Específicamente, Contoso actualiza las aplicaciones web para usar SSL con certificados.

Copias de seguridad

  • El equipo de Contoso revisa los requisitos de copia de seguridad para la instancia de Azure SQL Database. Más información.
  • También aprenden a administrar las copias de seguridad y las restauraciones de SQL Database. Más información sobre las copias de seguridad automáticas.
  • Consideran la implementación de grupos de conmutación por error para proporcionar conmutación por error regional para la base de datos. Más información.
  • Para lograr resistencia, consideran la implementación de la aplicación web en la región principal (East US 2) y la región secundaria (Central US). El equipo podría configurar Traffic Manager para garantizar la conmutación por error durante las interrupciones regionales.

Optimización de los costos y licencias

  • Una vez implementados todos los recursos, Contoso asigna etiquetas de Azure según el planeamiento de la infraestructura.
  • Todas las licencias se integran en el costo de los servicios de PaaS que consume Contoso. Este costo se deduce del Contrato Enterprise.
  • Contoso usará Azure Cost Management + Billing para asegurarse de que la compañía permanece dentro de los presupuestos establecidos por la dirección de TI.

Conclusión

En este artículo, Contoso refactorizó la aplicación SmartHotel360 en Azure mediante la migración de la VM de front-end de la aplicación a dos aplicaciones web de Azure App Service. La base de datos de la aplicación se migró a Azure SQL Database.