Migración de aplicaciones .NET - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Migración de aplicaciones .NET

La migración de sus aplicaciones.NET AWS le permite crear cargas de trabajo de alta disponibilidad con capacidades de escalado elásticas, reducir la sobrecarga operativa y aumentar la agilidad empresarial al centrarse en su valor diferenciador.

Esta sección se centra en las diferentes opciones para alojar sus aplicaciones.NET. AWS Puede elegir entre utilizar una máquina virtual, una solución gestionada, por ejemplo AWS Elastic Beanstalk, contenerizar el código o refactorizarlo a una arquitectura basada en microservicios o sin servidor.

Evaluación

La elección de una ruta de migración para su carga de trabajo de .NET depende de los siguientes factores clave:

  • Busque la versión de .NET utilizada: Microsoft admite dos implementaciones de .NET diferentes: .NET Framework (1.0 a 4.8) y .NET (.NET Core 1.0 a 3.1 y .NET 5 y versiones posteriores). Ambas comparten muchos de los componentes y pueden ejecutar código de aplicación escrito en los distintos lenguajes de programación de .NET (como C#, F# y VB.NET). La elección de una estrategia de migración y un servicio de alojamiento depende del tiempo de ejecución utilizado, ya que .NET Framework se ejecuta en Windows, mientras que el nuevo .NET es multiplataforma. En el caso de .NET Framework, puede alojarlo en un sistema operativo Windows o refactorizar el código para utilizar el .NET más reciente. El .NET más reciente también se puede alojar en servicios basados en el sistema operativo Linux. Al modernizar las cargas de trabajo basadas en .NET Framework, puede utilizar el Asistente de portabilidad para .NET o el conjunto de herramientas de AWS para la refactorización de .NET para analizar el código y generar un informe de evaluación de la compatibilidad. Al comprobar si hay algún .NET Framework incompatible al que APIs haga referencia tu proyecto, puedes planificar la complejidad de un proyecto de migración y decidir si refactorizar el código para usar un entorno de ejecución más reciente y cuándo.

  • Revise su implementación actual: compruebe si la carga de trabajo actualmente migrada tiene CI/CD canalizaciones existentes que puedan actualizarse para implementar las mismas cargas de trabajo en la nube. El uso de una canalización de creación e implementación existente puede reducir el tiempo necesario para implementar la aplicación en la nube, ya que automatiza los pasos necesarios para crear, configurar e implementar las cargas de trabajo.

  • Revise su hoja de ruta: según el estado actual del proyecto, es posible que ya esté pensando en rediseñar sus aplicaciones. Cualquier modernización que se lleve a cabo debe tener en cuenta la hoja de ruta del producto. Por ejemplo, la decisión de contenedorizar el código existente o refactorizar una arquitectura monolítica para convertirla en microservicios debería formar parte de la hoja de ruta del producto y estar en consonancia con otros esfuerzos de desarrollo.

Movilización

Hay tres rutas de migración diferentes que se deben tener en cuenta al migrar las cargas de trabajo de.NET. AWS Puede elegir entre las distintas opciones en función de la complejidad de su base de código actual, el tiempo asignado a la migración y el tamaño del equipo asignado para respaldar el esfuerzo de migración. Al considerar la modernización como parte de la migración, se recomienda ajustarse a la hoja de ruta del producto.

  • Rehospedar (levantar y cambiar): puede elegir este enfoque si su prioridad es una migración más rápida AWS con pocos o ningún cambio. Puede realojar sitios web basados en ASP.NET en Internet Information Services (IIS) que se ejecuten en instancias de Amazon. EC2 Puede realojar sus aplicaciones de escritorio (como Windows Presentation Foundation, Web Forms y.NET MAUI) en una de las plataformas informáticas para usuarios finales, como Amazon 2.0 AppStream o Amazon. WorkSpaces

  • Redefinición de la plataforma: la redefinición de la plataforma es la opción más adecuada para aquellos casos en los que se quiere alojar la aplicación mediante un servicio administrado sin realizar cambios en el código, pero se quiere reducir la sobrecarga operativa al evitar el trabajo pesado indiferenciado, como la instalación, la aplicación de revisiones, las actualizaciones y la administración de instancias. Esta estrategia también es adecuada para los equipos que desean pasar a cargas de trabajo basadas en contenedores. Puede cambiar la plataforma de sus aplicaciones existentes a Elastic Beanstalk o utilizar contenedores Docker alojados en Amazon ECS, Amazon EKS o. AWS App Runner

  • Refactorizar: elija este enfoque si puede invertir tiempo y esfuerzo en realizar cambios en el código y la arquitectura que reduzcan la sobrecarga operativa y logren una mejor escalabilidad, alta disponibilidad y recuperación ante desastres mediante el uso de servicios nativos de la nube. AWS La refactorización implica modernizar la base de código mediante la migración de las aplicaciones de .NET Framework existentes a .NET (anteriormente .NET Core) o la modernización de una base de código existente para que funcione mejor en la nube. Puede usarlo AWS SDK para .NETpara llamar a muchos servicios AWS en la nube desde su código.NET. Herramientas como Porting Assistant para .NET se AWS Microservice Extractor for .NETpueden utilizar para portar el código base de .NET Framework a.NET y dividir una aplicación monolítica en microservicios. Al refactorizar sus cargas de trabajo de.NET existentes para que se ejecuten AWS Lambda, puede utilizar la informática sin servidor para evitar el aprovisionamiento y la administración de la infraestructura.

Migración

Los pasos de la migración de las cargas de trabajo de .NET dependen de la ruta de migración que haya elegido durante la fase de evaluación y del tipo de aplicación.

Realojamiento de aplicaciones .NET

Elija esta ruta de migración si desea migrar su aplicación sin realizar ningún cambio en el código, pero desea beneficiarse del escalado automático, el equilibrio de carga y la elasticidad en la nube. En el caso de los sitios web basados en Windows, realojarlos normalmente implica ejecutarlos en Internet Information Services (IIS). AWS En el caso de las aplicaciones de escritorio, debe instalar la aplicación y permitir que los usuarios se conecten a la aplicación desde el exterior.

Servicios de información de Internet en AWS

Internet Information Services (IIS) es un servidor web de Microsoft que se ejecuta en un sistema operativo Windows y se utiliza para alojar sitios web y servicios web. IIS se puede instalar en cualquier EC2 instancia de Amazon que ejecute Windows Server. Una vez habilitado y configurado IIS, puede implementar sus sitios web y servicios de ASP.NET mediante el mismo mecanismo de implementación que utiliza para los entornos en las instalaciones.

Si aloja instancias de IIS en EC2 Windows, es importante seguir el marco de AWS Well-Architected mediante el balanceo de carga, los grupos de Auto Scaling y la implementación Multi-AZ en función de la carga de trabajo y las necesidades de HADR. Recomendamos usar el AWS Launch Wizardporque le guía a través del dimensionamiento, la configuración y la implementación de una carga de trabajo de Windows Server en la que se ejecutan recursos de IIS. AWS Launch Wizard implementa una arquitectura de alta disponibilidad que abarca dos zonas de disponibilidad con los componentes de procesamiento, redes y almacenamiento necesarios para una VPC recién creada o existente.

Alojar aplicaciones de escritorio en AWS

Muchos clientes necesitan acceder a aplicaciones de cliente pesado basadas en Windows. Puede elegir entre tres plataformas diferentes:

  • Amazon EC2: elija esta opción si desea que sus usuarios se conecten a un entorno basado en Windows Server mediante Microsoft Remote Desktop. Con esta opción, usted es responsable de crear las revisiones y mantener su sistema operativo. También debe adquirir licencias de acceso de cliente (RDS CALs) adicionales de los Servicios de Escritorio Remoto para sus usuarios y Software Assurance (SA) activo. Para obtener más información, consulte Licencias de Microsoft AWS en la AWS documentación.

  • Amazon WorkSpaces: elija esta opción si necesita una infraestructura de escritorio virtual (VDI) totalmente gestionada para sus usuarios. Puede utilizarla WorkSpaces para proporcionar una experiencia de escritorio de Windows persistente a sus usuarios. También puede personalizar su WorkSpaces entorno e instalar aplicaciones.NET mediante una imagen personalizada o utilizarlas AWS Systems Managerpara entregar sus aplicaciones.NET a sus WorkSpaces entornos. Los usuarios pueden conectarse mediante su navegador o el WorkSpacescliente de Amazon.

  • Amazon AppStream 2.0: elija esta opción para proporcionar un acceso seguro, fiable y escalable a aplicaciones y escritorios no persistentes desde cualquier ubicación. Puede usar la AppStream versión 2.0 para permitir que sus usuarios accedan a sus aplicaciones.NET desde la web. Si ya tiene un RDS CALs y una SA activa, puede usar esas licencias con la AppStream versión 2.0 mediante License Mobility.

Redefinir la plataforma

La redefinición de la plataforma implica cambiar el entorno de alojamiento con pocos o ningún cambio en el código. Elija esta estrategia para reducir sus gastos operativos y usar las capacidades y los servicios de la nube.

AWS Elastic Beanstalk

Puede utilizarlas AWS Elastic Beanstalkpara cambiar la plataforma de sus cargas de trabajo de.NET Framework. Si empaqueta sus aplicaciones basadas en ASP.NET o ASP.NET Core, podrá implementar y administrar las aplicaciones rápidamente AWS sin tener que aprender sobre la infraestructura en la que se ejecutan esas aplicaciones. Esto reduce la complejidad sin restringir la libertad de elección ni el control. Solo tiene que cargar la aplicación y Elastic Beanstalk gestionará de manera automática los detalles de aprovisionamiento de capacidad, equilibrio de carga, escalado y supervisión de estado de la aplicación.

Para obtener más información, consulte los siguientes recursos:

Contenedorización de las aplicaciones existentes

Puede utilizar Amazon ECS o Amazon EKS para alojar sus aplicaciones en contenedores basadas en Docker. AWS administra ambos servicios. La elección entre los dos depende de los conocimientos y preferencias existentes. Ambas opciones pueden ejecutar contenedores basados en Linux o contenedores basados en Windows.

Para obtener más información, consulte los siguientes recursos:

La inclusión en contenedores de las aplicaciones basadas en .NET depende del entorno de ejecución de .NET utilizado. Considere lo siguiente:

  • Las aplicaciones basadas en .NET Framework se ejecutan en contenedores de Windows: para agregar compatibilidad con Docker a las aplicaciones existentes, se crea un archivo de Docker que describe cómo se debe contenedorizar la aplicación. Se puede utilizar AWS App2Containerpara almacenar en contenedores y migrar fácilmente las aplicaciones existentes basadas en .NET Framework a. AWS App2Container escanea el servidor IIS para determinar los archivos necesarios y extrae la aplicación de destino para crear una imagen de Docker. También puede usar App2Container para crear los artefactos de despliegue necesarios para alojar su aplicación en. Nube de AWS

  • .NET o.NET Core: además de ejecutar aplicaciones web nuevas basadas en .NET en Amazon ECS o Amazon EKS, también puede utilizar. AWS App Runner App Runner es una solución sin servidor y totalmente administrada que ejecuta el código o la imagen del contenedor y administra el equilibrio de carga, el escalado automático, el registro, los certificados y las redes.

Refactorización o rediseño del código existente

Elija esta opción si su empresa tiene una necesidad imperiosa de añadir características, escalabilidad o rendimiento que, de otro modo, serían difíciles de conseguir en el entorno actual de la aplicación. En función de la hoja de ruta de la aplicación, puede optar por cambiar el código para utilizar el marco más reciente o los servicios nativos en la nube, o rediseñarlo para que funcione mejor en la nube.

La primera opción de refactorización disponible consiste en migrar la aplicación .NET Framework existente a .NET. La migración a .NET le ofrece la ventaja de poder ejecutarla en Linux en lugar de en Windows. Esto reduce el costo total de las licencias, le proporciona los marcos más recientes y ofrece las versiones más recientes de los lenguajes de programación .NET.

AWS SDK para .NET

AWS SDK para .NETsimplifica su uso Servicios de AWS al proporcionar un conjunto de bibliotecas coherentes y familiares para los desarrolladores de.NET. El AWS SDK ofrece soporte multiplataforma y se distribuye mediante. NuGet Los desarrolladores pueden usar el AWS SDK para llamar fácilmente a los servicios en la nube desde su código.NET, cumpliendo así con los requisitos de almacenamiento, colas, autenticación y configuración de sus aplicaciones.

Modernización de las aplicaciones de .NET Framework

Puede migrar desde .NET Framework mediante el Asistente de portabilidad para .NET, que analiza los archivos de código y crea un informe que lo ayuda a planificar la hoja de ruta de migración de su cartera de aplicaciones. El asistente de portabilidad para .NET también puede reducir la sobrecarga de migración, ya que identifica los paquetes APIs y de.NET Core incompatibles y encuentra sustitutos conocidos. El AWS kit de herramientas para la refactorización de .NET es una extensión de Visual Studio que reduce el tiempo y el esfuerzo necesarios para que los desarrolladores refactoricen las aplicaciones de .NET antiguas y las conviertan en alternativas basadas en la nube. AWS Evalúa el código fuente de la aplicación para recomendar posibles vías de modernización, como la migración a .NET Core, identifica las configuraciones de dependencia de IIS y Active Directory específicas de Windows, modifica el código siempre que es posible para permitir la compatibilidad con Linux y ayuda a validar la aplicación refactorizada. Servicios de AWS La migración de aplicaciones de.NET Framework a .NET permite ejecutarlas en procesadores Graviton ARM64 basados en procesadores Graviton con una mejor relación precio-rendimiento. Para obtener más información, consulte .NET en Graviton on y Graviton2 GitHub y contenedores de Optimización de costes con servicios basados AWS en Graviton en la documentación de Workshop Studio. AWS

Del monolito a los microservicios

Muchos equipos de desarrollo desean rediseñar sus aplicaciones monolíticas existentes para convertirlas en microservicios. Al adoptar arquitecturas basadas en microservicios, sus equipos de desarrollo pueden aumentar la agilidad del desarrollo, reducir los costes de procesamiento, escalar los servicios de forma individual y reducir los tiempos de implementación. AWS Microservice Extractor for .NETsimplifica el proceso de refactorizar aplicaciones monolíticas antiguas en una arquitectura basada en microservicios. Al identificar los componentes y agrupar la funcionalidad, los equipos de desarrollo pueden extraer gradualmente la funcionalidad de las aplicaciones monolíticas de .NET Framework y convertirla en servicios .NET.

Refactorización de las aplicaciones sin servidor

AWS Lambdaes un servicio de cómputo sin servidor y basado en eventos que le permite ejecutar código para prácticamente cualquier tipo de aplicación o servicio de backend sin aprovisionar ni administrar servidores. Puede extraer la lógica de su aplicación existente para crear flujos de trabajo sin servidor basados en eventos que se escalen automáticamente cuando sea necesario mediante .NET y Lambda. Los casos de uso comunes de Lambda incluyen cargas de trabajo impulsadas por eventos que se ejecutan durante unos segundos o minutos con diferentes necesidades de escalado, como el procesamiento de archivos, el análisis, los sitios web y las aplicaciones móviles. Para obtener más información, consulte Creación de funciones de Lambda con C# en la documentación de Lambda.

Recursos adicionales