Modernizar aplicaciones .NET existentes con la nube de Azure y contenedores de Windows (2nd edition)Modernize existing .NET applications with Azure cloud and Windows Containers (2nd edition)

imagen de portada

PUBLICADO PORPUBLISHED BY
Microsoft Press y Microsoft DevDivMicrosoft Press and Microsoft DevDiv
Divisiones de Microsoft CorporationDivisions of Microsoft Corporation
One Microsoft WayOne Microsoft Way
Redmond, Washington 98052-6399Redmond, Washington 98052-6399

Copyright © 2018 de Microsoft CorporationCopyright © 2018 by Microsoft Corporation

Todos los derechos reservados.All rights reserved. No se puede reproducir de ninguna forma ni por ningún medio ninguna parte del contenido de este libro sin la autorización por escrito del publicador.No part of the contents of this book may be reproduced in any form or by any means without the written permission of the publisher.

Este libro está disponible gratuitamente en forma de libro electrónico (eBook) disponible a través de varios canales de Microsoft, como https://dot.net/architecture.This book is available for free in the form of an electronic book (e-book) available through multiple channels at Microsoft such as https://dot.net/architecture.

Si tiene preguntas relacionadas con este libro, envíe un correo electrónico a dotnet-architecture-ebooks-feedback@service.microsoft.com.If you have questions related to this book, email at dotnet-architecture-ebooks-feedback@service.microsoft.com

Este libro se proporciona “tal cual” y expresa las opiniones del autor.This book is provided "as-is" and expresses the author's views and opinions. Las vistas, opiniones e información expresados en este libro, incluidas las direcciones URL y otras referencias a sitios Web de Internet, pueden cambiar sin previo aviso.The views, opinions, and information expressed in this book, including URL and other Internet website references, may change without notice.

Algunos ejemplos descritos aquí se proporcionan únicamente con fines ilustrativos y son ficticios.Some examples depicted herein are provided for illustration only and are fictitious. No debe deducirse ninguna asociación ni conexión reales.No real association or connection is intended or should be inferred.

Microsoft y las marcas comerciales indicadas en https://www.microsoft.com en la página web "Marcas comerciales" pertenecen al grupo de empresas de Microsoft.Microsoft and the trademarks listed at https://www.microsoft.com on the "Trademarks" webpage are trademarks of the Microsoft group of companies. El resto de marcas pertenecen a sus respectivos propietarios.All other marks are property of their respective owners.

Autor:Author:

Cesar de la Torre, administrador de programas sénior del equipo del producto de .NET, Microsoft Corp.Cesar de la Torre, Sr. PM, .NET Product Team, Microsoft Corp.

Participantes y revisores:Participants and reviewers:

Scott Hunter, director asociado de administración de programas del equipo de .NET, MicrosoftScott Hunter, Partner Director PM, .NET team, Microsoft
Paul Yuknewicz, director principal de administración de programas del equipo de Visual Studio Tools, MicrosoftPaul Yuknewicz, Principal PM Manager, Visual Studio Tools team, Microsoft
Lisa Guthrie, administradora de programas del equipo de Visual Studio Tools, MicrosoftLisa Guthrie, Sr. PM, Visual Studio Tools team, Microsoft
Ankit Asthana, director principal de administración de programas del equipo de .NET, MicrosoftAnkit Asthana, Principal PM Manager, .NET team, Microsoft
Unai Zorrilla, responsable de desarrollo de Plain ConceptsUnai Zorrilla, Developer Lead, Plain Concepts
Javier Valero, director de operaciones de Grupo SolutioJavier Valero, Chief Operating Officer at Grupo Solutio

IntroducciónIntroduction

Si decide modernizar sus aplicaciones o servicios web y moverlas a la nube, no necesariamente deben totalmente rediseñar sus aplicaciones.When you decide to modernize your web applications or services and move them to the cloud, you don't necessarily have to fully rearchitect your apps. Cambio de arquitectura de una aplicación mediante el uso de un enfoque avanzado como microservicios no siempre es una opción debido a restricciones de costos y tiempo.Rearchitecting an application by using an advanced approach like microservices isn't always an option because of cost and time restraints. Según el tipo de aplicación, cambio de arquitectura de una aplicación también es posible que no sea necesario.Depending on the type of application, rearchitecting an app also might not be necessary. Para optimizar la rentabilidad de la estrategia de migración a la nube de su organización, es importante tener en cuenta las necesidades de su negocio y los requisitos de las aplicaciones.To optimize the cost-effectiveness of your organization's cloud migration strategy, it's important to consider the needs of your business and requirements of your apps. Debe determinar:You'll need to determine:

  • Las aplicaciones que requieren una transformación o cambio de la arquitectura.Which apps require a transformation or rearchitecting.

  • Qué aplicaciones necesitan modernizarse solo parcialmente.Which apps need to be only partially modernized.

  • Qué aplicaciones se pueden "elevar y desplazar" directamente a la nube.Which apps you can "lift and shift" directly to the cloud.

Acerca de esta guíaAbout this guide

Esta guía se centra principalmente en la modernización inicial de web de Microsoft .NET Framework existentes o las aplicaciones orientadas a servicios, lo que significa que la acción de mover una carga de trabajo a un entorno más reciente o más moderno sin modificar significativamente el código de la aplicación y la arquitectura básica.This guide focuses primarily on initial modernization of existing Microsoft .NET Framework web or service-oriented applications, meaning the action of moving a workload to a newer or more modern environment without significantly altering the application's code and basic architecture.

Esta guía también resalta las ventajas de mover las aplicaciones a la nube y modernizarlas parcialmente mediante el uso de un conjunto específico de nuevas tecnologías y enfoques, como los contenedores de Windows y plataformas de proceso relacionadas en Azure se admiten contenedores de Windows.This guide also highlights the benefits of moving your apps to the cloud and partially modernizing apps by using a specific set of new technologies and approaches, like Windows Containers and related compute-platforms in Azure supporting Windows Containers.

Ruta de acceso a la nube para aplicaciones .NET existentesPath to the cloud for existing .NET applications

Las organizaciones suelen elegir la migración a la nube por la agilidad y velocidad que pueden obtener para sus aplicaciones.Organizations typically choose to move to the cloud for the agility and speed they can get for their applications. Puede configurar miles de servidores (VM) en la nube en cuestión de minutos, en comparación con las semanas que suele llevar la configuración de los servidores locales.You can set up thousands of servers (VMs) in the cloud in minutes, compared to the weeks it typically takes to set up on-premises servers.

No hay una estrategia única y general para migrar las aplicaciones a la nube.There isn't a single, one-size-fits-all strategy for migrating applications to the cloud. La estrategia de migración adecuada para su caso dependerá de las necesidades y prioridades de la organización y del tipo de aplicaciones que se vayan a migrar.The right migration strategy for you will depend on your organization's needs and priorities, and the kind of applications you are migrating. No todas las aplicaciones garantizan la inversión que conlleva la migración a un modelo de plataforma como servicio (PaaS) o el desarrollo de un modelo de aplicación nativa de la nube.Not all applications warrant the investment of moving to a platform as a service (PaaS) model or developing a cloud-native application model. En muchos casos, puede adoptar un enfoque por fases o incremental para invertir en la migración de los recursos a la nube, en función de las necesidades de su negocio.In many cases, you can take a phased or incremental approach to invest in moving your assets to the cloud, based on your business needs.

Aplicaciones modernas con la agilidad a largo plazo y el valor para la organización, puede beneficiarse de la inversión en nativas de la nube arquitecturas de aplicaciones.For modern applications with the best long-term agility and value for the organization, you might benefit from investing in cloud-native application architectures. Sin embargo, para las aplicaciones existentes o heredados activos, la clave es dedicar un tiempo mínimo y dinero (sin necesidad de rediseñar ni cambiar el código) mientras se mueven a la nube, para obtener importantes ventajas.However, for applications that are existing or legacy assets, the key is to spend minimal time and money (no rearchitecting or code changes) while moving them to the cloud, to realize significant benefits.

En la figura 1-1 se muestran las posibles rutas de acceso que puede usar para migrar las aplicaciones .NET existentes a la nube en fases incrementales.Figure 1-1 shows the possible paths you can take when you move existing .NET applications to the cloud in incremental phases.

 Rutas de acceso de modernización de servicios y aplicaciones .NET existentes

Figura 1-1.Figure 1-1. Rutas de acceso de modernización de servicios y aplicaciones .NET existentesModernization paths for existing .NET applications and services

Cada método de migración tiene distintas ventajas y motivos para su uso.Each migration approach has different benefits and reasons for using it. Puede elegir un único enfoque para migrar las aplicaciones a la nube o seleccionar determinados componentes de varios enfoques.You can choose a single approach when you migrate apps to the cloud, or choose certain components from multiple approaches. Las aplicaciones individuales no están limitadas a un único enfoque o a un solo estado de madurez.Individual applications aren't limited to a single approach or maturity state. Por ejemplo, un enfoque híbrido común tendría ciertos componentes locales y otros componentes en la nube.For instance, a common hybrid approach would have certain on-premises components plus other components in the cloud.

La definición y una breve explicación de cada nivel de madurez de la aplicación son los siguientes:The definition and short explanation for each application maturity level are the following:

Nivel 1: En la nube infraestructura-listo aplicaciones: en este enfoque de migración, puede simplemente migrar o rehospedar las aplicaciones locales actuales a una infraestructura como servicio (IaaS) plataforma.Level 1: Cloud Infrastructure-Ready applications: In this migration approach, you simply migrate or rehost your current on-premises applications to an infrastructure as a service (IaaS) platform. Las aplicaciones tienen casi la misma composición que antes, pero ahora se implementan en máquinas virtuales en la nube.Your apps have almost the same composition as before, but now you deploy them to VMs in the cloud. Este tipo simple de migración normalmente se conoce en la industria como "Elevar y desplazar".This simple type of migration is typically known in the industry as "Lift & Shift."

Nivel 2: En la nube optimizado aplicaciones: en este nivel y sin necesidad de diseñar la arquitectura ni modificar el código importante, puede obtener ventajas adicionales al ejecutar la aplicación en la nube con modernas tecnologías como los contenedores y adicionales servicios administrados en la nube.Level 2: Cloud Optimized applications: At this level and still without rearchitecting or altering significant code, you can gain additional benefits from running your app in the cloud with modern technologies like containers and additional cloud-managed services. Se mejora la agilidad de las aplicaciones para distribuirlas con más rapidez al perfeccionar los procesos de las operaciones de desarrollo empresariales (DevOps).You improve the agility of your applications to ship faster by refining your enterprise development operations (DevOps) processes. Para lograrlo, usando tecnologías como contenedores de Windows, que se basa en el motor de Docker.You achieve this by using technologies like Windows Containers, which is based on Docker Engine. Los contenedores eliminan la fricción causada por las dependencias de aplicación cuando se implementa en varias fases.Containers remove the friction that’s caused by application dependencies when you deploy in multiple stages. En este modelo de madurez, puede implementar contenedores en IaaS o PaaS al uso adicionales relacionadas con servicios administrados en la nube para bases de datos, almacenar en caché como un servicio, supervisión e implementación continua e integración continua canalizaciones (CI/CD).In this maturity model, you can deploy containers on IaaS or PaaS while using additional cloud-managed services related to databases, cache as a service, monitoring, and continuous integration/continuous deployment (CI/CD) pipelines.

El tercer nivel de madurez es el objetivo final de la nube, pero es opcional para muchas aplicaciones y no el enfoque principal de esta guía:The third level of maturity is the ultimate goal in the cloud, but it's optional for many apps and not the main focus of this guide:

Nivel 3: Nativo en la nube aplicaciones: este enfoque de migración suele basarse en las necesidades del negocio y modernización de las aplicaciones de misión crítica de destinos.Level 3: Cloud-Native applications: This migration approach typically is driven by business need and targets modernizing your mission-critical applications. En este nivel, debe usar los servicios PaaS para migrar las aplicaciones a plataformas informáticas PaaS.At this level, you use PaaS services to move your apps to PaaS computing platforms. Debe implementar la arquitectura de microservicios y aplicaciones nativas de la nube para desarrollar aplicaciones con una agilidad a largo plazo y para escalar a nuevos límites.You implement cloud-native applications and microservices architecture to evolve applications with long-term agility, and to scale to new limits. Este tipo de modernización suele requerir un diseño específico para la nube.This type of modernization usually requires architecting specifically for the cloud. A menudo puede ser necesario escribir código nuevo, sobre todo, al migrar a modelos basados en microservicios y en aplicaciones nativas de la nube.New code often must be written, especially when you move to cloud-native application and microservice-based models. Este enfoque puede ayudar a obtener ventajas que son difíciles de conseguir en un entorno de aplicaciones locales y monolíticas.This approach can help you gain benefits that are difficult to achieve in your monolithic and on-premises application environment.

En la tabla 1-1 se describen las principales ventajas y motivos para elegir cada enfoque de migración o modernización.Table 1-1 describes the main benefits of and reasons for choosing each migration or modernization approach.

Infraestructura preparada para la nubeCloud Infrastructure-Ready
Elevación y desplazamientoLift and shift
Optimizada para la nubeCloud-Optimized
ModernizarModernize
En la nube nativasCloud-Native
Modernizar, rediseñar y volver a escribirModernize, rearchitect and rewrite
Destino de cálculo de la aplicaciónApplication's compute target
Aplicaciones implementadas en las máquinas virtuales de AzureApplications deployed to VMs in Azure Monolítica o las aplicaciones de N niveles implementado en Azure App Service, instancia de contenedor de Azure (ACI), las máquinas virtuales con contenedores, Azure Service Fabric o AKS (Azure Kubernetes Service)Monolithic or N-Tier apps deployed to Azure App Service, Azure Container Instance (ACI), VMs with containers, Azure Service Fabric, or AKS (Azure Kubernetes Service) Microservicios en contenedores en Azure Kubernetes Service (AKS), Service Fabric o microservicios sin servidor basadas en funciones de Azure.Containerized microservices on Azure Kubernetes Service (AKS), Service Fabric and/or serverless microservices based on Azure Functions.
Destino de datosData target
SQL o cualquier base de datos relacional en una máquina virtualSQL or any relational database on a VM Instancia administrada de Azure SQL Database o en otra base de datos administrado en la nube.Azure SQL Database Managed Instance or another managed database in the cloud. Bases de datos de grano multas por microservicio, en función de otra base de datos administrado en la nube, Azure Cosmos DB o Azure SQL DatabaseFined-grain databases per microservice, based on Azure SQL Database, Azure Cosmos DB, or another managed database in the cloud
VentajasAdvantages
  • Ningún código de cambio de la arquitectura, no hay nuevoNo rearchitecting, no new code
  • Mínimo esfuerzo para una migración rápidaLeast effort for quick migration
  • Mínimo común denominador compatible con AzureLeast-common denominator supported in Azure
  • Garantías de disponibilidad básicasBasic availability guarantees
  • Después de la migración a la nube, todavía es más fácil modernizarAfter moving to the cloud, it's easier to modernize even more
  • Ningún cambio de la arquitecturaNo rearchitecting
  • Cambios de código/configuración mínimaMinimal code/config changes
  • Desarrollo y agilidad de DevOps mejorados para publicar debido a los contenedoresImproved deployment and DevOps agility to release because of containers
  • Mayor densidad y costos de implementación más bajosIncreased density and lower deployment costs
  • Portabilidad de aplicaciones y dependenciasPortability of apps and dependencies
  • Flexibilidad de destinos host: PaaS enfoques o IaaSFlexibility of host targets: PaaS approaches or IaaS
  • Arquitecto de la nube, obtener los mejores beneficios de la nube pero se requiere nuevo códigoArchitect for the cloud, you get the best benefits from the cloud but new code is needed
  • Enfoques nativos de la nube de los microserviciosMicroservices cloud-native approaches
  • Aplicaciones modernas de misión crítica, resistente en la nube muy escalableModern mission-critical applications, cloud-resilient hyper-scalable
  • Servicios totalmente administradosFully managed services
  • Optimizado para escaladoOptimized for scale
  • Optimizado para la agilidad autónoma por subsistemaOptimized for autonomous agility by subsystem
  • Basado en implementaciones y DevOpsBuilt on deployment and DevOps
  • DesafíosChallenges
  • Valor menor de la nube, aparte del cambio en gastos operativos o en el cierre de los centros de datosSmaller cloud value, other than shift in operating expense or closing datacenters
  • Poca administración: No del sistema operativo o aplicación de revisiones de software intermedio; Puede usar soluciones de infraestructura, como Terraform, Spinnaker o PuppetLittle is managed: No OS or middleware patching; might use infrastructure solutions, like Terraform, Spinnaker, or Puppet
  • Inclusión en contenedores es un paso adicional en la curva de aprendizaje para desarrolladores y las operaciones de TIContainerizing is an additional step in the learning curve for developers and IT Operations
  • Las canalizaciones de DevOps y CI/CD suele ser 'obligatorio' para este enfoque.DevOps and CI/CD pipelines is usually ‘a must’ for this approach. Si no se encuentra actualmente en la referencia cultural de la organización, podría ser un desafío adicionalIf not currently present in the culture of the organization, it might be an additional challenge
  • Requiere rediseño de aplicaciones nativas en la nube y las arquitecturas de microservicios y normalmente no requiere código significativa refactorización o reescribir cuando Modernice (un aumento del tiempo y presupuesto)Requires rearchitecture for cloud native apps and microservice architectures and usually requires significant code refactoring or rewriting when modernizing (increased time and budget)
  • Las canalizaciones de DevOps y CI/CD suele ser 'obligatorio' para este enfoque.DevOps and CI/CD pipelines is usually ‘a must’ for this approach. Si no se encuentra actualmente en la referencia cultural de la organización, podría ser un desafío adicionalIf not currently present in the culture of the organization, it might be an additional challenge
  • Tabla 1-1.Table 1-1. Ventajas y desafíos de la modernización de rutas de los servicios y las aplicaciones .NET existentesBenefits and challenges of modernization paths for existing .NET applications and services

    Arquitecturas y tecnologías clave por nivel de madurezKey technologies and architectures by maturity level

    Las aplicaciones .NET Framework se iniciaron por primera vez con .NET Framework 1.0, que se publicó a finales de 2001..NET Framework applications initially started with the .NET Framework version 1.0, which was released in late 2001. Después, las empresas cambian a nuevas versiones (como 2.0, 3.5 y .NET 4.x).Then, companies moved towards newer versions (such as 2.0, 3.5 and .NET 4.x). La mayoría de esas aplicaciones se ejecutaba en Windows Server y de Internet Information Server (IIS) y usa una base de datos relacional como SQL Server, Oracle, MySQL o cualquier otro servicio RDBMS.Most of those applications ran on Windows Server and Internet Information Server (IIS), and used a relational database, like SQL Server, Oracle, MySQL, or any other RDBMS.

    La mayoría de las aplicaciones .NET existentes pueden basarse actualmente en .NET Framework 4.x o incluso en .NET Framework 3.5 y usar marcos de trabajo web, como ASP.NET MVC, Formularios web ASP.NET, ASP.NET Web API, Windows Communication Foundation (WCF), ASP.NET SignalR y ASP.NET Web Pages.Most existing .NET applications might nowadays be based on .NET Framework 4.x, or even on .NET Framework 3.5, and use web frameworks like ASP.NET MVC, ASP.NET Web Forms, ASP.NET Web API, Windows Communication Foundation (WCF), ASP.NET SignalR, and ASP.NET Web Pages. Estas tecnologías de .NET Framework establecidas dependen de Windows.These established .NET Framework technologies depend on Windows. Es importante tener en cuenta esa dependencia si solo se van a migrar aplicaciones heredadas y solo se desea realizar cambios mínimos en la infraestructura de las aplicaciones.That dependency is important to consider if you are simply migrating legacy apps and you want to make minimal changes to your application infrastructure.

    En la figura 1-2 se muestran los estilos de arquitectura y las tecnologías principales utilizados en cada uno de los tres niveles de madurez de la nube:Figure 1-2 shows the primary technologies and architecture styles used at each of the three cloud maturity levels:

    Tecnologías principales de cada nivel de madurez para modernizar las aplicaciones web .NET existentes

    Figura 1-2.Figure 1-2. Tecnologías principales de cada nivel de madurez para modernizar las aplicaciones web .NET existentesPrimary technologies for each maturity level for modernizing existing .NET web applications

    En la figura 1-2 se destacan los escenarios más comunes, pero se pueden presentar muchas variaciones híbridas y mixtas en relación con la arquitectura.Figure 1-2 highlights the most common scenarios, but many hybrid and mixed variations are possible when it comes to architecture. Por ejemplo, los modelos de madurez no solo se aplican a arquitecturas monolíticas de las aplicaciones web existentes, sino también a la orientación del servicio, a variaciones de n niveles y a otras variaciones de estilo de la arquitectura.For example, the maturity models apply not only to monolithic architectures in existing web apps, but also to service orientation, N-Tier, and other architecture style variations. El foco o el porcentaje en el tipo de arquitectura de uno u otro y las tecnologías relacionadas superior determina el nivel de madurez general de las aplicaciones.The higher focus or percentage on one or another architecture type and related technologies determines the overall maturity level of your applications.

    Cada nivel de madurez del proceso de modernización está asociado con los siguientes enfoques y tecnologías clave:Each maturity level in the modernization process is associated with the following key technologies and approaches:

    • En la nube listos para la infraestructura (rehospedaje o basic elevar y desplazar): como primer paso, muchas organizaciones desean solo ejecutar rápidamente una estrategia de migración a la nube.Cloud Infrastructure-Ready (rehost or basic lift & shift): As a first step, many organizations want only to quickly execute a cloud-migration strategy. En este caso, las aplicaciones se rehospedados.In this case, applications are rehosted. La mayoría del rehospedaje puede automatizarse mediante Azure Migrate, un servicio que ofrece la orientación, la información y los mecanismos necesarios para facilitar la migración a Azure basada en herramientas de la nube, como Azure Site Recovery y Azure Database Migration Service.Most rehosting can be automated by using Azure Migrate, a service that provides the guidance, insights, and mechanisms needed to assist you in migrating to Azure based on cloud tools like Azure Site Recovery and Azure Database Migration Service. También puede configurar el rehospedaje manualmente, para poder aprender los detalles de los recursos de la infraestructura al mover las aplicaciones heredadas a la nube.You can also set up rehosting manually, so that you can learn infrastructure details about your assets when you move legacy apps to the cloud. Por ejemplo, puede mover sus aplicaciones a las máquinas virtuales en Azure con una pequeña modificación probablemente con solo los cambios de configuración menores.For example, you can move your applications to VMs in Azure with little modification-probably with only minor configuration changes. En este caso, el servicio de red es similar a un entorno local, sobre todo, si crea redes virtuales en Azure.The networking in this case is similar to an on-premises environment, especially if you create virtual networks in Azure.

    • Optimizada para la nube (servicios administrados y los contenedores de Windows): este modelo consiste en hacer algunas optimizaciones importantes de implementación para obtener algunas ventajas importantes de la nube, sin tener que cambiar la arquitectura básica de la aplicación.Cloud-Optimized (Managed Services and Windows Containers): This model is about making a few important deployment optimizations to gain some significant benefits from the cloud, without changing the core architecture of the application. El paso fundamental aquí es agregar la compatibilidad con los contenedores de Windows a las aplicaciones .NET Framework existentes.The fundamental step here is to add Windows Containers support to your existing .NET Framework applications. Este paso importante (creación de contenedores) no requiere modificar el código, por lo que el esfuerzo general de migración mediante lift- and -shift es claro.This important step (containerization) doesn't require touching the code, so the overall lift and shift effort is light. Puede usar también herramientas como Image2Docker o Visual Studio con sus herramientas para Docker.You can use tools like Image2Docker or Visual Studio, with its tools for Docker. Visual Studio elige automáticamente valores predeterminados inteligentes para aplicaciones ASP.NET e imágenes de contenedores de Windows.Visual Studio automatically chooses smart defaults for ASP.NET applications and Windows Containers images. Estas herramientas ofrecen un bucle interior rápido y una ruta rápida para obtener los contenedores en Azure.These tools offer both a rapid inner loop, and a fast path to get the containers to Azure. La agilidad se mejora al implementar en varios entornos.Your agility is improved when you deploy to multiple environments. A continuación, pasar a producción, puede implementar los contenedores de Windows a Azure Web Apps for Containers, [Azure Container Instances (ACI) y máquinas virtuales de Azure con Windows Server 2016 y contenedores si prefiere un enfoque de IaaS.Then, moving to production, you can deploy your Windows Containers to Azure Web App for Containers, [Azure Container Instances (ACI), and Azure VMs with Windows Server 2016 and containers if you prefer an IaaS approach. Para las aplicaciones de varios contenedores ligeramente más complejas, en orquestadores como Azure Service Fabric o Azure Kubernetes Service (AKS/ACS).For slightly more complex multi-container applications, into orchestrators like Azure Service Fabric or Azure Kubernetes Service (AKS/ACS). Durante esta Modernización inicial, también puede agregar recursos de la nube, como la supervisión con herramientas como Azure Application Insights; Las canalizaciones de CI/CD para los ciclos de vida de la aplicación con servicios de Azure DevOps; y muchos otros servicios de recursos de datos que están disponibles en Azure.During this initial modernization, you can also add assets from the cloud, such as monitoring with tools like Azure Application Insights; CI/CD pipelines for your app lifecycles with Azure DevOps Services; and many more data resource services that are available in Azure. Por ejemplo, puede modificar una aplicación web monolítica desarrollada originalmente con las herramientas Web Forms ASP.NET o ASP.NET MVC tradicionales, pero ahora se implementa con los contenedores de Windows.For instance, you can modify a monolithic web app that was originally developed by using traditional ASP.NET Web Forms or ASP.NET MVC, but now you deploy it by using Windows Containers. Si usa los contenedores de Windows, también debe migrar los datos a una base de datos en la Instancia administrada de Azure SQL Database, y todo sin tener que modificar la arquitectura de código de la aplicación.When you use Windows Containers, you should also migrate your data to a database in Azure SQL Database Managed Instance, all without changing the core architecture of your application.

    • Nativo en la nube: como se mencionó, debería pensar en diseño nativas de la nube cuando tiene como destino aplicaciones grandes y complejas con varios equipos de desarrollo independiente trabajando en las aplicaciones diferentes microservicios que se pueden desarrollar e implementar de forma autónoma.Cloud-Native: As introduced, you should think about architecting cloud-native applications when you are targeting large and complex applications with multiple independent development teams working on different microservices that can be developed and deployed autonomously. Además, debido a la escalabilidad granularized e independiente por microservicio.Also, due to granularized and independent scalability per microservice. Estos enfoques de arquitectura enfrentan a muy importantes dificultades y complejidades, pero se pueden simplificar en gran medida mediante el uso de la nube PaaS y orquestadores como Azure Kubernetes Service (AKS/ACS) (managed Kubernetes), [servicio de Azure Tejido, y Azure Functions adoptar un enfoque sin servidor.These architectural approaches face very important challenges and complexities but can be greatly simplified by using cloud PaaS and orchestrators like Azure Kubernetes Service (AKS/ACS) (managed Kubernetes), [Azure Service Fabric, and Azure Functions for a serverless approach. Todos estos enfoques (por ejemplo, microservicios y sin servidor) normalmente requieren diseñar para la nube y escribir código nuevo, el código que se ha adaptado a determinadas plataformas PaaS o código que se adapte a arquitecturas específicas, tales como microservicios.All these approaches (like microservices and Serverless) typically require you to architect for the cloud and write new code—code that is adapted to specific PaaS platforms, or code that aligns with specific architectures, like microservices.

    En la figura 1-3 se muestran las tecnologías internas que se pueden usar para cada nivel de madurez:Figure 1-3 shows the internal technologies that you can use for each maturity level:

    Tecnologías internas para cada nivel de madurez de la modernización

    Figura 1-3.Figure 1-3. Tecnologías internas para cada nivel de madurez de la modernizaciónInternal technologies for each modernization maturity level

    Escenario de migración mediante lift- and -shiftLift and shift scenario

    Para las migraciones de elevación y desplazamiento, tenga en cuenta que puede usar muchas variaciones distintas de elevación y desplazamiento en los escenarios de aplicaciones.For lift and shift migrations, keep in mind that you can use many different variations of lift and shift in your application scenarios. Si solo rehospeda la aplicación, puede tener un escenario como el que se muestra en la figura 1-4, donde se usan máquinas virtuales en la nube solo para la aplicación y el servidor de base de datos.If you only rehost your application, you might have a scenario like the one shown in Figure 1-4, where you use VMs in the cloud only for your application and for your database server.

    Ejemplo de un escenario IaaS puro en la nube

    Figura 1-4.Figure 1-4. Ejemplo de un escenario IaaS puro en la nubeExample of a pure IaaS scenario in the cloud

    Escenarios de ModernizaciónModernization scenarios

    Para escenarios de modernización, podría tener una aplicación optimizada para la nube pura que usa elementos solo de ese nivel de madurez.For modernization scenarios, you might have a pure Cloud-Optimized application that uses elements only from that maturity level. O bien, puede que tenga una aplicación de estado intermedio con algunos elementos de la infraestructura de nube listos y otros elementos de optimizada para la nube (un "elegir" o un modelo mixto), al igual que en la figura 1-5.Or, you might have an intermediate-state application with some elements from Cloud Infrastructure-Ready and other elements from Cloud-Optimized (a "pick and choose" or mixed model), like in Figure 1-5.

    Ejemplo de escenario de elección, con base de datos IaaS, DevOps y recursos incluidos en contenedores

    Figura 1-5.Figure 1-5. Ejemplo de escenario de elección, con base de datos IaaS, DevOps y recursos incluidos en contenedoresExample "pick and choose" scenario, with database on IaaS, DevOps, and containerization assets

    A continuación, como el escenario ideal para muchas aplicaciones existentes de .NET Framework migrar, podría migrar a una aplicación optimizada para la nube, para obtener ventajas significativas de poco trabajo.Next, as the ideal scenario for many existing .NET Framework applications to migrate, you could migrate to a Cloud-Optimized application, to get significant benefits from little work. Este enfoque también establece la configuración para nativas de la nube como una evolución posibles futuras.This approach also sets you up for Cloud-Native as a possible future evolution. En la figura 1-6 se muestra un ejemplo.Figure 1-6 shows an example.

    Ejemplo de escenario de aplicaciones optimizadas para la nube, con contenedores de Windows y los servicios administrados

    Figura 1-6.Figure 1-6. Ejemplo de escenario de aplicaciones optimizadas para la nube, con contenedores de Windows y los servicios administradosExample Cloud-Optimized apps scenario, with Windows Containers and managed services

    Va aún más, puede ampliar la aplicación optimizada para la nube existente mediante la adición de algunos microservicios para escenarios específicos.Going even further, you could extend your existing Cloud-Optimized application by adding a few microservices for specific scenarios. Esto, pasaría parcialmente al nivel de modelo de nativas de la nube, que no es el enfoque principal de esta guía.This would move you partially to the level of Cloud-Native model, which is not the main focus of the present guidance.

    Aspectos no tratados en esta guíaWhat this guide does not cover

    En esta guía se incluye un subconjunto específico de los escenarios de ejemplo, como se muestra en la figura 1-7.This guide covers a specific subset of the example scenarios, as shown in Figure 1-7. Esta guía se centra sólo en escenarios de migración mediante lift- and -shift y, en última instancia, en el modelo optimizado para la nube.This guide focuses only on lift and shift scenarios, and ultimately, on the Cloud-Optimized model. En el modelo optimizado para la nube, una aplicación de .NET Framework se moderniza mediante contenedores de Windows, además de componentes adicionales, como la supervisión y canalizaciones de CI/CD.In the Cloud-Optimized model, a .NET Framework application is modernized by using Windows Containers, plus additional components like monitoring and CI/CD pipelines. Cada componente es fundamental para implementar aplicaciones en la nube más rápido y con agilidad.Each component is fundamental to deploying applications to the cloud, faster, and with agility.

    Nativo en la nube no se trata en esta guía

    Figura 1-7.Figure 1-7. Nativo en la nube no se trata en esta guíaCloud-Native is not covered in this guide

    El objetivo de esta guía es específico.The focus of this guide is specific. Muestra la ruta de acceso que puede seguir para lograr una migración mediante lift- and -shift de las aplicaciones .NET existentes, sin necesidad de rediseñar y sin cambios de código.It shows you the path you can take to achieve a lift and shift of your existing .NET applications, without rearchitecting, and with no code changes. En última instancia, se muestra cómo hacer que su aplicación optimizada para la nube.Ultimately, it shows you how to make your application Cloud-Optimized.

    Esta guía no muestra cómo crear aplicaciones nativas de la nube, por ejemplo, cómo evolucionan a una arquitectura de microservicios.This guide doesn't show you how to create Cloud-Native applications, such as how to evolve to a microservices architecture. Para rediseñar las aplicaciones o crear otras basadas en microservicios, consulte el libro electrónico Microservicios de. NET: arquitectura para aplicaciones .NET en contenedor.To rearchitect your applications or to create brand-new applications that are based on microservices, see the e-book .NET Microservices: Architecture for containerized .NET applications.

    Recursos adicionalesAdditional resources

    Destinatarios de esta guíaWho should use this guide

    Esta guía se escribió para desarrolladores y arquitectos de soluciones que desean modernizar las aplicaciones web ASP.NET existentes o los servicios WCF que se basan en .NET Framework, para mejorar la agilidad de distribución y publicación de aplicaciones.This guide was written for developers and solution architects who want to modernize existing ASP.NET web applications or WCF services that are based on the .NET Framework, for improved agility in shipping and releasing applications.

    Esta guía puede resultar útil también si es responsable de toma de decisiones, como un arquitecto empresarial o un jefe o director de desarrollo que solo desea obtener información general de las ventajas que se pueden obtener con el uso de los contenedores de Windows y con la implementación en la nube mediante Microsoft Azure.You also might find this guide useful if you are a technical decision maker, such as an enterprise architect or a development lead/director who just wants an overview of the benefits that you can get by using Windows Containers, and by deploying to the cloud when using Microsoft Azure.

    Cómo usar esta guíaHow to use this guide

    En esta guía se aborda el motivo por el que modernizar las aplicaciones existentes y las ventajas específicas derivadas del uso de los contenedores de Windows al mover las aplicaciones a la nube.This guide addresses the "why"-why you might want to modernize your existing applications, and the specific benefits you get from using Windows Containers when you move your apps to the cloud. El contenido de los primeros capítulos de la guía está diseñado para arquitectos y responsables de tomar decisiones técnicas que desean obtener información general, pero que no necesitan centrarse en información detallada de carácter técnico ni en la implementación.The content in the first few chapters of the guide is designed for architects and technical decision makers who want an overview, but who don't need to focus on implementation and technical, step-by-step details.

    En el último capítulo de esta guía se presentan varios tutoriales centrados en escenarios de implementación específicos.The last chapter of this guide introduces multiple walkthroughs that focus on specific deployment scenarios. Esta guía ofrece versiones más cortas de los tutoriales, para resumir los escenarios y destacar sus ventajas.This guide offers shorter versions of the walkthroughs, to summarize the scenarios and highlight their benefits. Los tutoriales completos profundizan en los detalles de configuración e implementación y se publican como una serie de entradas de wiki en el mismo repositorio de GitHub público en el que se encuentran aplicaciones de ejemplo relacionadas (tratadas en la siguiente sección).The full walkthroughs drill down into setup and implementation details, and are published as a set of wiki posts in the same public GitHub repo where related sample apps reside (discussed in the next section). El último capítulo y los tutoriales detallados de la wiki de GitHub resultarán más interesantes para los desarrolladores y arquitectos que desean centrarse en los detalles de implementación.The last chapter and the step-by-step wiki walkthroughs on GitHub will be of more interest to developers and architects who want to focus on implementation details.

    Aplicaciones de ejemplo para modernizar aplicaciones heredadas: eShopModernizingSample apps for modernizing legacy apps: eShopModernizing

    En el repositorio eShopModernizing de GitHub se ofrecen dos aplicaciones de ejemplo que simulan aplicaciones web monolíticas heredadas.The eShopModernizing repo on GitHub offers two sample applications that simulate legacy monolithic web applications. Una aplicación web se desarrolla con ASP.NET MVC; la segunda aplicación web se desarrolla con ASP.NET Web Forms y la tercera aplicación es una aplicación de N niveles con una aplicación de escritorio de cliente de WinForms consumir un servicio WCF back-end.One web app is developed by using ASP.NET MVC; the second web app is developed by using ASP.NET Web Forms and the third app is an N-Tier app with a WinForms client desktop app consuming a WCF service backend. Todas estas aplicaciones se basan en .NET Framework tradicional.All these apps are based on the traditional .NET Framework. Estas aplicaciones de ejemplo no usan .NET Core o ASP.NET Core, ya que se supone que se van a modernizar aplicaciones .NET Framework existentes/heredadas.These sample apps don't use .NET Core or ASP.NET Core as they are supposed to be existing/legacy .NET Framework applications to be modernized.

    Estas aplicaciones de ejemplo tienen una segunda versión, con código modernizado, y que son bastante sencillas.These sample apps have a second version, with modernized code, and which are fairly straightforward. La diferencia más importante entre las versiones de las aplicaciones es que las segundas versiones usan los contenedores de Windows como opción de implementación.The most important difference between the app versions is that the second versions use Windows Containers as the deployment choice. También hay algunas adiciones en las segundas versiones, como Azure Storage Blob para administrar imágenes, Azure Active Directory para administrar la seguridad y Azure Application Insights para supervisar y auditar las aplicaciones.There also are a few additions to the second versions, like Azure Storage Blobs for managing images, Azure Active Directory for managing security, and Azure Application Insights for monitoring and auditing the applications.

    Envíe sus comentariosSend your feedback

    Esta guía se escribió para ayudarle a entender las opciones para mejorar y modernizar las aplicaciones web .NET existentes.This guide was written to help you understand your options for improving and modernizing existing .NET web applications. La guía y las aplicaciones de ejemplo relacionadas evolucionan.The guide and related sample applications are evolving. ¡Sus comentarios son Bienvenidos!Your feedback is welcome! Si tiene comentarios sobre cómo esta guía podría resultar más útil, envíelos a dotnet-architecture-ebooks-feedback@service.microsoft.com.If you have comments about how this guide might be more helpful, please send them to dotnet-architecture-ebooks-feedback@service.microsoft.com.

    SiguienteNext