Refactorización de una aplicación local a una aplicación web de App Service y una instancia de SQL Managed Instance

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

La aplicación SmartHotel360 que se usa 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 que quieren lograr con esta migración:

  • Abordar el crecimiento del negocio. Contoso está creciendo y sus sistemas locales e infraestructura 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. el equipo de TI de Contoso necesita más capacidad de respuesta a las necesidades de la empresa. Para triunfar en una economía global, la empresa debe ser capaz de reaccionar más rápido que los cambios del mercado. El tiempo de reacción no se debe interponer en el camino ni bloquear el negocio.
  • Escala. A medida que el negocio crece, 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 creado estos objetivos con el fin de determinar el mejor método de migración:

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

La aplicación debe tener las mismas funcionalidades de rendimiento que tiene actualmente en VMware.

El equipo no quiere invertir en la aplicación. Por ahora, los administradores solo 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 siempre que sea posible.

Contoso quiere mitigar el único punto de error en el nivel web.

La aplicación está formada por una aplicación de ASP.NET y un servicio Windows Communication Foundation (WCF) que se ejecutan en una única máquina virtual. Contoso quiere distribuir estos componentes entre dos aplicaciones web mediante 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 que use Azure DevOps para las compilaciones y las canalizaciones de versiones.

Diseño de la solución

Después de determinar los objetivos y requisitos, Contoso diseña y revisa una solución de implementación. El equipo también identifica un proceso de migración, incluidos los servicios de Azure que usarán para la migración.

Aplicación actual

  • La aplicación local de SmartHotel360 se divide en niveles entre dos VM, WEBVM y SQLVM.
  • Las máquinas virtuales se encuentran en un host VMware ESXi 6.5 contosohost1.contoso.com.
  • El entorno VMware lo administra 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 el nivel web de la aplicación, Contoso usará Azure App Service. Contoso puede usar este servicio PaaS para implementar la aplicación con tan solo unos cambios en la configuración. Contoso usará Visual Studio para realizar los cambios 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 App Service.

Consideraciones sobre la base de datos

Durante el proceso de diseño de la solución, Contoso compara las características de Azure SQL Database con las de SQL Managed Instance. El equipo decide usar SQL Managed Instance, en función de estas consideraciones:

  • El objetivo de SQL Managed Instance es proporcionar casi un 100 % de compatibilidad con la versión de la instalación local de SQL Server más reciente. Microsoft recomienda SQL Managed Instance para las organizaciones que ejecutan SQL Server de forma local o en máquinas virtuales de infraestructura como servicio (IaaS) y que desean migrar sus aplicaciones a un servicio totalmente administrado con cambios mínimos en el diseño.
  • Contoso planea migrar un gran número de aplicaciones desde el entorno local a máquinas virtuales de IaaS. Muchas de estas máquinas virtuales las proporcionan proveedores de software independientes. El equipo de Contoso se da cuenta de que el uso de SQL Managed Instance puede ayudarle a garantizar la compatibilidad de las bases de datos con estas aplicaciones. Utilizarán SQL Managed Instance en lugar de utilizar SQL Database, que podría no ser compatible.
  • Contoso puede realizar una migración mediante lift-and-shift a SQL Managed Instance con Azure Database Migration Service totalmente automatizado. Contoso también puede reutilizar este servicio para futuras migraciones de bases de datos.
  • SQL Managed Instance admite el Agente SQL Server, un componente importante de la aplicación SmartHotel360. Contoso necesita esta compatibilidad. En caso contrario, tendrían que volver a diseñar los planes de mantenimiento que requiere la aplicación.
  • Con Software Assurance, Contoso puede intercambiar sus licencias actuales para obtener descuentos en una instancia de SQL Managed Instance mediante la Ventaja híbrida de Azure para SQL Server. Esto permite a Contoso ahorrar hasta un 30 % mediante el uso de SQL Managed Instance.
  • La instancia de SQL Managed Instance está totalmente integrada en la red virtual, por lo que ofrece un mejor nivel de aislamiento y seguridad para los datos de Contoso. Contoso puede obtener las ventajas de la nube pública y, al mismo tiempo, mantener el entorno aislado de la red Internet pública.
  • SQL Managed Instance admite muchas características de seguridad, incluido Always Encrypted, enmascaramiento dinámico de datos, seguridad a nivel de fila y detección de amenazas.

Revisión de la solución

El equipo de Contoso evalúa su diseño propuesto mediante la creación de una lista de ventajas y desventajas:

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, Contoso ya no necesitará 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.

Instancia administrada de SQL admite los requisitos técnicos y los objetivos de Contoso.

La instancia de SQL Managed Instance va a proporcionar compatibilidad total con su implementación actual, al tiempo que permite dejar de usar SQL Server 2008 R2.

Contoso puede volver a usar Database Migration Service para futuras migraciones.

La instancia de SQL Managed Instance tiene tolerancia a errores integrada que Contoso no necesita configurar. Esta tolerancia a errores garantiza que la capa de datos ya no sea un único punto de conmutación por error.
Desventajas App Service solo admite la implementación de una aplicación por cada aplicación web. Por tanto, deben aprovisionarse dos aplicaciones web (una para el sitio web y otra para el servicio WCF).

Para la capa de datos, es posible que SQL Managed Instance no sea la mejor solución si Contoso desea personalizar el sistema operativo o el servidor de base de datos, o si desea ejecutar aplicaciones de terceros junto con SQL Server. La ejecución de SQL Server en una máquina virtual IaaS puede proporcionar esta flexibilidad.

Arquitectura propuesta

Diagrama que muestra la arquitectura propuesta.

Proceso de migración

  1. Contoso aprovisiona una instancia de Azure SQL Managed Instance a la que migra la base de datos SmartHotel360 mediante Database Migration Service.
  2. Aprovisiona y configura las aplicaciones web e implementa la aplicación SmartHotel360 en ellas.

Diagrama que muestra el proceso de migración.

Servicios de Azure

Servicio Descripción Coste
Asistente de migración de App Service Una herramienta gratuita y fácil de usar que puede ayudarle a migrar aplicaciones web de .NET desde el entorno local a la nube con cambios mínimos en el código o incluso sin cambios. Es una herramienta que se puede descargar de forma gratuita.
Database Migration Service Un servicio de Azure que puede usar para migrar desde varios orígenes de base de datos a plataformas de datos de Azure con un tiempo de inactividad mínimo. Consulte los precios de Azure Database Migration Service y las regiones admitidas.
Instancia administrada de SQL Un servicio de base de datos administrada que representa una instancia de SQL Server completamente administrada en Azure. Usa el mismo código que la versión más reciente del motor de base de datos de SQL Server, y tiene las características, mejoras de rendimiento y actualizaciones de seguridad más recientes. El uso de una instancia de SQL Managed Instance en Azure genera cargos en función de la capacidad. Más información acerca de los precios de SQL Managed Instance.
Azure App Service Un servicio que le ayuda a 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 sobre los precios de App Service.
Azure Pipelines Un servicio que ofrece una canalización de integración continua y entrega 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. Más información sobre los precios de Azure Pipelines.

Prerrequisitos

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

Requisito Detalles
Suscripción de Azure En un artículo anterior de esta serie, Contoso creó suscripciones. 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, el administrador tiene que asignarle permisos de propietario o colaborador.
Infraestructura de Azure Contoso configura una infraestructura de Azure según se indica en la 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 el asistente de migración de Azure App Service para ejecutar comprobaciones de compatibilidad previas a la migración y migrar sus aplicaciones web a App Service.
  • Paso 2: Configuración de una instancia de SQL Managed Instance. Contoso necesita una instancia administrada existente a la que se migrará la base de datos de SQL Server local.
  • Paso 3: Migración mediante Database Migration Service. Contoso migra la base de datos de la aplicación mediante 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 cadenas de conexión. Contoso configura las cadenas de conexión para que la instancia de SQL Managed Instance, la aplicación web del servicio WCF y la aplicación web del nivel web puedan comunicarse.
  • Paso 6: Configuración de las canalizaciones de compilación y versión en Azure DevOps. En el último paso, Contoso configura las canalizaciones de compilación y de versión en Azure DevOps para crear la aplicación. A continuación, el equipo implementa las canalizaciones en dos aplicaciones web independientes.

Paso 1: Evaluar y migrar las aplicaciones web

Los administradores de Contoso evalúan y migran sus aplicaciones web mediante el asistente de migración de App Service. 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 el asistente de migración de App Service 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 App Service.

  • Descargan el asistente de migración de App Service 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: Configuración de una instancia de SQL Managed Instance

Para configurar una instancia de Azure SQL Managed Instance, Contoso necesita una subred que cumpla estos requisitos:

  • La subred debe estar dedicada. Tiene que estar vacía. No puede contener ningún otro servicio en la nube. La subred no puede ser una subred de puerta de enlace.
  • Una vez creada la instancia administrada, Contoso no debe agregar recursos a la subred.
  • La subred no puede tener asociado un grupo de seguridad de red.
  • La subred debe tener una tabla de rutas definida por el usuario. La única ruta asignada debe ser 0.0.0.0/0, con Internet como próximo salto.
  • Si se especifica un DNS personalizado para la red virtual, es necesario agregar a la lista la dirección IP virtual 168.63.129.16 de las resoluciones recursivas de Azure. Aprenda a configurar un servidor DNS personalizado para una instancia de Azure SQL Managed Instance.
  • La subred no puede tener un punto de conexión de servicio (de almacenamiento o SQL) asociado a ella. Los puntos de conexión de servicio se deben deshabilitar en la red virtual.
  • La subred debe tener al menos 16 direcciones IP. Aprenda cómo cambiar el tamaño de la subred de la instancia administrada.
  • En el entorno híbrido de Contoso, se requiere la configuración de DNS personalizada. Contoso configura los valores de DNS para usar uno o varios de los servidores de Azure DNS de la empresa. Más información sobre la personalización de DNS.

Configurar una red virtual para la instancia administrada

Los administradores de Contoso configuran la red virtual de la forma siguiente:

  1. Crean una red virtual (VNET-SQLMI-EUS2) en la región primaria Este de EE. UU. 2. Crean la red virtual en el grupo de recursos ContosoNetworkingRG.

  2. Asignan el espacio de direcciones 10.235.0.0/24. Garantizan que el intervalo no se solapará con otras redes de la empresa.

  3. Se agregan dos subredes a la red:

    • SQLMI-DB-EUS2 (10.235.0.0/25).

    • SQLMI-SAW-EUS2 (10.235.0.128/29). Esta subred se usa para asociar un directorio a la instancia administrada.

      Captura de pantalla que muestra los valores para crear la instancia administrada.

  4. Después de implementar la red virtual y las subredes, emparejan las redes como se indica a continuación:

    • Emparejan VNET-SQLMI-EUS2 con VNET-HUB-EUS2 (la red virtual central de Este de EE. UU. 2).

    • Emparejan VNET-SQLMI-EUS2 con VNET-PROD-EUS2 (la red de producción).

      Captura de pantalla que muestra las redes emparejadas.

  5. Establecen una configuración de DNS personalizada. La configuración de DNS primero apunta a los controladores de dominio de Azure de Contoso. Azure DNS es secundario. Los controladores de dominio de Azure de Contoso están ubicados de la manera siguiente:

    • Están ubicados en la subred PROD-DC-EUS2, en la red de producción (VNET-PROD-EUS2) de Este de EE. UU. 2.

    • Dirección de CONTOSODC3: 10.245.42.4

    • Dirección de CONTOSODC4: 10.245.42.5

    • Resolución de Azure DNS: 168.63.129.16

    Captura de pantalla que muestra los servidores DNS de la red.

¿Necesita más ayuda?

Configuración del enrutamiento

La instancia administrada se coloca en una red privada virtual. Contoso necesita una tabla de enrutamiento para que la red virtual se comunique con el servicio de administración de Azure. Si la red virtual no puede comunicarse con el servicio que la administra, se vuelve inaccesible.

Contoso tiene en cuenta estos factores:

  • La tabla de enrutamiento contiene un conjunto de reglas (rutas) que especifican cómo se deben enrutar los paquetes enviados en la red virtual desde la instancia administrada.
  • La tabla de enrutamiento se asocia con subredes en las que se implementan instancias administradas. Cada paquete que sale de una subred se controla en función de la tabla de rutas asociada.
  • Una subred puede asociarse con una sola tabla de rutas.
  • No hay ningún cargo adicional por la creación de tablas de enrutamiento en Azure.

Para configurar el enrutamiento, los administradores de Contoso siguen estos pasos:

  1. Crean una tabla de enrutamiento definida por el usuario en el grupo de recursos ContosoNetworkingRG:

    Captura de pantalla que muestra el cuadro de diálogo Crear tabla de rutas.

  2. Para cumplir los requisitos de SQL Managed Instance, tras implementar la tabla de rutas (MIRouteTable), los administradores agregan una ruta con un prefijo de dirección 0.0.0.0/0. Establecen el valor del Tipo del próximo salto en Internet:

    Captura de pantalla que muestra el cuadro de diálogo Agregar ruta.

  3. Asocian la tabla de enrutamiento a la subred SQLMI-DB-EUS2 de la red VNET-SQLMI-EUS2:

    Captura de pantalla que muestra el cuadro de diálogo Asociar subred.

¿Necesita más ayuda?

Aprenda cómo configurar rutas para una instancia administrada.

Creación de una instancia administrada

A continuación, los administradores de Contoso aprovisionan una instancia de SQL Managed Instance completando estos pasos:

  1. Como la instancia administrada da servicio a una aplicación empresarial, los administradores implementan la instancia administrada en la región primaria de la empresa (Este de EE. UU. 2). Agregan la instancia administrada al grupo de recursos ContosoRG.

  2. Seleccionan un plan de tarifa, el tamaño de proceso y el almacenamiento de la instancia. Más información acerca de los precios de SQL Managed Instance.

    Captura de pantalla que muestra el cuadro de diálogo de SQL Managed Instance.

    Una vez implementada la instancia administrada, dos nuevos recursos aparecen en el grupo de recursos ContosoRG:

    • La instancia de SQL Managed Instance.

    • Un clúster virtual en caso de que Contoso tenga varias instancias administradas.

      Captura de pantalla que muestra los nuevos recursos del grupo de recursos ContosoRG.

¿Necesita más ayuda?

Aprenda cómo aprovisionar una instancia administrada.

Paso 3: Migración mediante Database Migration Service

Los administradores de Contoso migran la instancia administrada mediante Database Migration Service. Siguen las instrucciones del tutorial de migración paso a paso. Pueden realizar migraciones en línea, sin conexión e híbridas (versión preliminar).

Los administradores de Contoso completan los siguientes pasos:

  • Crean una instancia de Database Migration Service con una SKU Premium que está conectada a la red virtual.
  • Se aseguran de que Database Migration Service pueda acceder a la instancia remota de SQL Server a través de la red virtual. Este paso 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 Database Migration Service:
    • 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 que muestra el cuadro de diálogo Nuevo proyecto.

  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 que muestra el cuadro de diálogo 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 que muestra el cuadro de diálogo Conectar 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 que muestra la aplicación web y los proyectos del servicio WCF en el Explorador de soluciones.

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 denominada 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 que muestra la configuración de la cadena de conexión.

  3. En Visual Studio, el administrador abre 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 del proyecto SmartHotel.Registration.wcf.

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

    Captura de pantalla que muestra la sección

  5. Los administradores confirman y sincronizan los cambios del código 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 que muestra el botón Nueva canalización de Azure DevOps.

  2. Seleccionan GIT de Azure Repos y el repositorio correspondiente:

    Captura de pantalla que muestra el botón GIT de Azure Repos y el repositorio seleccionado.

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

    Captura de pantalla que muestra el cuadro de diálogo Seleccionar una plantilla con la plantilla ASP.NET seleccionada.

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

    Captura de pantalla que muestra el botón Guardar y poner en cola para la compilación.

  5. Seleccionan el número de compilación para ver el proceso. Una vez finalizado el proceso, los administradores pueden ver los comentarios del proceso. Seleccionan Artefactos para revisar los resultados de la compilación:

    Captura de pantalla que muestra la página de compilación y el botón Artefactos.

    Se abre la ventana Explorador de artefactos. Los resultados de la compilación son visibles en la carpeta drop.

    • 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 App Service.

    Captura de pantalla que muestra el explorador de artefactos.

  6. Seleccionan Versiones>Nueva canalización:

    Captura de pantalla en la que se muestra el botón Nueva canalización.

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

    Captura de pantalla que muestra el cuadro de diálogo Seleccionar una plantilla.

  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 que muestra el nombre de la fase de la aplicación web de WCF.

  9. En las fases, seleccionan 1 trabajo, 1 tarea para configurar la implementación del servicio WCF:

    Captura de pantalla que muestra la opción

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

    Captura de pantalla que muestra el nombre de la instancia de App Service.

  11. En la canalización, seleccionan Artefactos, Agregar un artefacto, después, seleccionan Compilación como el tipo de origen y, finalmente, compilan mediante la canalización ContosoSmarthotel360Refactor:

    Captura de pantalla que muestra el botón Compilar en el cuadro de diálogo Agregar un artefacto.

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

    Captura de pantalla que muestra el botón 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 seleccionan Implementación de Azure App Service:

    Captura de pantalla que muestra la opción 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 que muestra el cuadro de diálogo Seleccionar un archivo o carpeta.

  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 que muestra el vínculo

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

    Captura de pantalla que muestra el cuadro de diálogo

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

    Captura de pantalla que muestra la canalización de versión.

  18. Vuelven a Compilación, seleccionan Desencadenadores y, a continuación, seleccionan 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 una compilación y creación de versión completas.

    Captura de pantalla que muestra la casilla Habilitar la integración continua.

  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 App Service.

    Captura de pantalla en la que se muestra el 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 que muestra el progreso de la compilación y creación de versión.

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

    Captura de pantalla que muestra la aplicación en ejecución.

    La aplicación se ha migrado correctamente a Azure.

Limpieza después de la migración

Después de la migración, el equipo de Contoso realiza los siguientes 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 SQL Managed Instance y el front-end se ejecuta 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

Una vez que los recursos se migran a Azure, Contoso debe poner en funcionamiento completamente la nueva infraestructura y proporcionarle seguridad.

Seguridad

Copias de seguridad

  • El equipo de Contoso revisa los requisitos de copia de seguridad de la base de datos de SQL Managed Instance. Para más información, consulte Copias de seguridad automatizadas en Azure SQL Database.
  • También aprenden a administrar las copias de seguridad y las restauraciones de SQL Database. Para más información, consulte 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. Para más información, consulte Introducción a los grupos de conmutación por error automática.
  • Para lograr resistencia, consideran la implementación de la aplicación web en la región principal (Este de EE. UU. 2) y la región secundaria (Centro de EE. UU.). 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 las etiquetas de Azure que decidieron durante 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 and Billing para asegurarse de que funcionan 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 App Service. Contoso migró la base de datos de la aplicación a una instancia de Azure SQL Managed Instance.