Moderniser les applications .NET existantes avec le cloud Azure et des conteneurs Windows (2ème édition)Modernize existing .NET applications with Azure cloud and Windows Containers (2nd edition)

Image de couverture du guide Moderniser les applications .NET.

PUBLIÉ PARPUBLISHED BY
Microsoft Press et Microsoft DevDivMicrosoft Press and Microsoft DevDiv
Divisions de Microsoft CorporationDivisions of Microsoft Corporation
One Microsoft WayOne Microsoft Way
Redmond, Washington 98052-6399Redmond, Washington 98052-6399

Copyright © 2018 Microsoft CorporationCopyright © 2018 by Microsoft Corporation

Tous droits réservés.All rights reserved. Aucune partie du contenu de ce document ne peut être reproduite sous quelque forme ou par quelque moyen que ce soit sans l’autorisation écrite de l’éditeur.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.

Cet ouvrage est disponible gratuitement sous forme de livre électronique via plusieurs canaux Microsoft, comme 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 vous avez des questions liées à cet ouvrage, envoyez un e-mail à dotnet-architecture-ebooks-feedback@service.microsoft.comIf you have questions related to this book, email at dotnet-architecture-ebooks-feedback@service.microsoft.com

Ce document est fourni « en l’état » et exprime les points de vue et les opinions de son auteur.This book is provided "as-is" and expresses the author's views and opinions. Les points de vue, les opinions et les informations exprimés dans cet ouvrage, notamment l’URL et autres références à des sites web Internet, peuvent faire l’objet de modifications sans préavis.The views, opinions, and information expressed in this book, including URL and other Internet website references, may change without notice.

Certains exemples décrits dans ce document ne sont fournis qu’à titre d’illustration et sont purement fictifs.Some examples depicted herein are provided for illustration only and are fictitious. Toute ressemblance ou tout lien avec le monde réel sont purement fortuits et involontaires.No real association or connection is intended or should be inferred.

Microsoft et les marques commerciales mentionnées dans la page web « Marques » sur https://www.microsoft.com sont des marques du groupe Microsoft.Microsoft and the trademarks listed at https://www.microsoft.com on the "Trademarks" webpage are trademarks of the Microsoft group of companies. Toutes les autres marques sont la propriété de leurs propriétaires respectifs.All other marks are property of their respective owners.

Auteur :Author:

Cesar de la Torre, chef de projet, équipe produit .NET, Microsoft Corp.Cesar de la Torre, Sr. PM, .NET Product Team, Microsoft Corp.

Participants et réviseurs :Participants and reviewers:

Scott Hunter, chef de projet directeur partenaire, équipe .NET, MicrosoftScott Hunter, Partner Director PM, .NET team, Microsoft
Paul Yuknewicz, chef de projet responsable principal, équipe Visual Studio Tools, MicrosoftPaul Yuknewicz, Principal PM Manager, Visual Studio Tools team, Microsoft
Lisa Guthrie, chef de projet senior, équipe Visual Studio Tools, MicrosoftLisa Guthrie, Sr. PM, Visual Studio Tools team, Microsoft
Ankit Asthana, responsable principal de la gestion de projets, équipe .NET, MicrosoftAnkit Asthana, Principal PM Manager, .NET team, Microsoft
Unai Zorrilla, développeur en chef, Plain ConceptsUnai Zorrilla, Developer Lead, Plain Concepts
Javier Valero, chef des opérations chez Grupo SolutioJavier Valero, Chief Operating Officer at Grupo Solutio

IntroductionIntroduction

Quand vous décidez de moderniser vos services ou applications web et de les migrer vers le cloud, vous ne devez pas nécessairement refondre entièrement l’architecture de vos applications.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. La refonte de l’architecture d’une application avec une approche avancée comme celle des microservices n’est pas toujours possible en raison de contraintes de coûts et de temps.Rearchitecting an application by using an advanced approach like microservices isn't always an option because of cost and time restraints. Selon le type de l’application, la refonte de son architecture peut aussi ne pas être pas nécessaire.Depending on the type of application, rearchitecting an app also might not be necessary. Pour optimiser la rentabilité de la stratégie de migration vers le cloud de votre organisation, il est important de prendre en compte les besoins de votre activité et les exigences de vos applications.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. Vous devez déterminer :You'll need to determine:

  • Les applications qui nécessitent une transformation ou une nouvelle architecture.Which apps require a transformation or rearchitecting.

  • Les applications qui doivent être modernisées seulement en partie.Which apps need to be only partially modernized.

  • Les applications pouvant faire l’objet d’un lift-and-shift directement dans le cloud.Which apps you can "lift and shift" directly to the cloud.

À propos de ce guideAbout this guide

Ce guide se concentre principalement sur la modernisation initiale des applications web ou orientées service Microsoft .NET Framework existantes, c’est-à-dire l’action de déplacer une charge de travail vers un environnement plus récent ou plus moderne sans altérer significativement le code de l’application et l’architecture de base.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.

Ce guide présente aussi les avantages de la migration de vos applications vers le cloud et de la modernisation partielle des applications, avec un ensemble spécifique de nouvelles technologies et approches, comme les conteneurs Windows et les plateformes de calcul associées dans les conteneurs Windows prenant en charge Azure.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.

Déplacement vers le cloud des applications .NET existantesPath to the cloud for existing .NET applications

En règle générale, les organisations choisissent de passer au cloud pour apporter souplesse et rapidité à leurs applications.Organizations typically choose to move to the cloud for the agility and speed they can get for their applications. Vous pouvez configurer des milliers de serveurs (des machines virtuelles) dans le cloud en quelques minutes, en comparaison aux semaines généralement nécessaires pour configurer des serveurs locaux.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.

Il n’existe pas de stratégie unique et universelle pour migrer des applications dans le cloud.There isn't a single, one-size-fits-all strategy for migrating applications to the cloud. La bonne stratégie de migration pour vous dépend des besoins et des priorités de votre organisation, ainsi que du type des applications que vous migrez.The right migration strategy for you will depend on your organization's needs and priorities, and the kind of applications you are migrating. Les applications ne justifient pas toutes l’investissement nécessaire pour passer à un modèle Paas (plateforme en tant que service) ou pour développer un modèle d’application natif pour le cloud.Not all applications warrant the investment of moving to a platform as a service (PaaS) model or developing a cloud-native application model. Dans de nombreux cas, vous pouvez adopter une approche progressive ou incrémentielle quand vous investissez dans le déplacement de vos ressources sur le cloud, en fonction des besoins de votre entreprise.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.

Pour les applications modernes avec les meilleures agilité et valeur ajoutée à long terme pour l’organisation, vous pouvez tirer profit d’un investissement dans des architectures d’application cloud natives.For modern applications with the best long-term agility and value for the organization, you might benefit from investing in cloud-native application architectures. Cependant, pour les applications qui sont des ressources existantes ou héritées, le plus important est de consacrer le moins de temps et d’argent possible (pas de refonte de l’architecture ni de modifications du code) lors de leur passage dans le cloud, de façon à en tirer des avantages significatifs.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.

La figure 1-1 montre les voies possibles utilisables quand vous faites passer progressivement des applications .NET existantes dans le cloud.Figure 1-1 shows the possible paths you can take when you move existing .NET applications to the cloud in incremental phases.

 Voies de modernisation pour les applications et les services .NET existants

Figure 1-1.Figure 1-1. Voies de modernisation pour les applications et les services .NET existantsModernization paths for existing .NET applications and services

Chaque approche de la migration présente des avantages différents et est utilisée pour des raisons différentes.Each migration approach has different benefits and reasons for using it. Vous pouvez choisir une même approche quand vous migrez des applications vers le cloud, ou choisir certains composants provenant de plusieurs approches.You can choose a single approach when you migrate apps to the cloud, or choose certain components from multiple approaches. Les applications individuelles ne sont pas limitées à une seule approche ou à un seul état de maturité.Individual applications aren't limited to a single approach or maturity state. Par exemple, une approche hybride courante consiste à avoir certains des composants en local et d’autres composants dans le cloud.For instance, a common hybrid approach would have certain on-premises components plus other components in the cloud.

Voici la définition et une petite explication de chaque niveau de maturité de l’application :The definition and short explanation for each application maturity level are the following:

Niveau 1 : applications prêtes pour l’infrastructure cloud : dans cette approche de migration, vous migrez ou réhébergez simplement vos applications locales actuelles sur une plateforme infrastructure as a service (IaaS).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. Vos applications ont pratiquement la même composition qu’avant, mais vous les déployez désormais sur des machines virtuelles dans le cloud.Your apps have almost the same composition as before, but now you deploy them to VMs in the cloud. Ce type de migration simple est généralement connu sous le nom de « Lift & Shift » dans le secteur.This simple type of migration is typically known in the industry as "Lift & Shift."

Niveau 2 : applications optimisées pour le Cloud : à ce niveau et toujours sans remaniement ou modification du code significatif, vous pouvez tirer des avantages supplémentaires de l’exécution de votre application dans le Cloud avec des technologies modernes telles que des conteneurs et des services gérés par le Cloud.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. Vous améliorez l’agilité de vos applications pour les livrer plus rapidement, en affinant les processus de fonctionnement du développement (DevOps) dans votre entreprise.You improve the agility of your applications to ship faster by refining your enterprise development operations (DevOps) processes. C’est possible en utilisant des technologies comme les conteneurs Windows, qui se basent sur le moteur Docker.You achieve this by using technologies like Windows Containers, which is based on Docker Engine. Les conteneurs suppriment les conflits causés par les dépendances des applications quand vous déployez en plusieurs étapes.Containers remove the friction that’s caused by application dependencies when you deploy in multiple stages. Dans ce modèle de maturité, vous pouvez déployer des conteneurs sur IaaS ou PaaS tout en utilisant d’autres services managés par le cloud associés aux bases de données, au cache en tant que service, à la supervision et aux pipelines d’intégration continue/de déploiement continu (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.

Le troisième niveau de maturité est l’objectif ultime dans le cloud, mais il est facultatif pour de nombreuses applications et ne constitue pas l’objet principal de ce guide :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:

Niveau 3 : applications Cloud natives : cette approche de migration est généralement motivée par les besoins de l’entreprise et par les cibles de la modernisation de vos applications stratégiques.Level 3: Cloud-Native applications: This migration approach typically is driven by business need and targets modernizing your mission-critical applications. À ce niveau, vous utilisez des services PaaS pour passer vos applications sur des plateformes informatiques PaaS.At this level, you use PaaS services to move your apps to PaaS computing platforms. Vous implémentez des applications et une architecture de microservices natives pour le cloud pour faire évoluer les applications avec une agilité à long terme et pour les adapter à de nouvelles limites.You implement cloud-native applications and microservices architecture to evolve applications with long-term agility, and to scale to new limits. Ce type de modernisation nécessite généralement une architecture spécifique pour le cloud.This type of modernization usually requires architecting specifically for the cloud. Du nouveau code doit souvent être écrit, en particulier quand vous passez à des modèles d’application natifs pour le cloud et basés sur des microservices.New code often must be written, especially when you move to cloud-native application and microservice-based models. Cette approche peut vous aider à profiter d’avantages difficiles à obtenir dans votre environnement applicatif monolithique et local.This approach can help you gain benefits that are difficult to achieve in your monolithic and on-premises application environment.

Le tableau 1-1 décrit les principaux avantages et les raisons de choisir chaque approche de migration ou de modernisation.Table 1-1 describes the main benefits of and reasons for choosing each migration or modernization approach.

Prêt pour l’infrastructure cloudCloud Infrastructure-Ready
Lift-and-shiftLift and shift
Optimisé pour le cloudCloud-Optimized
ModerniserModernize
Cloud natifCloud-Native
Moderniser, réarchitecturer et réécrireModernize, rearchitect and rewrite
Cible informatique de l’applicationApplication's compute target
Applications déployées sur des machines virtuelles dans AzureApplications deployed to VMs in Azure Applications monolithiques ou multiniveaux déployées sur Azure App Service, Azure Container Instance (ACI), des machines virtuelles avec conteneurs ou Azure Kubernetes Service (AKS)Monolithic or N-Tier apps deployed to Azure App Service, Azure Container Instance (ACI), VMs with containers, or AKS (Azure Kubernetes Service) Microservices conteneurisés sur Azure Kubernetes service (AKS) et/ou microservices serverless basés sur Azure Functions.Containerized microservices on Azure Kubernetes Service (AKS) and/or serverless microservices based on Azure Functions.
Cible de donnéesData target
SQL ou n’importe quelle base de données relationnelle sur une machine virtuelleSQL or any relational database on a VM Azure SQL Database Managed Instance ou autre base de données managée dans le cloud.Azure SQL Database Managed Instance or another managed database in the cloud. Bases de données affinées par microservice, basées sur Azure SQL Database, Azure Cosmos DB ou autre base de données managée dans le cloudFined-grain databases per microservice, based on Azure SQL Database, Azure Cosmos DB, or another managed database in the cloud
AvantagesAdvantages
  • Pas de refonte de l’architecture, pas de nouveau codeNo rearchitecting, no new code
  • Moins de travail pour une migration rapideLeast effort for quick migration
  • Plus petit dénominateur commun pris en charge dans AzureLeast-common denominator supported in Azure
  • Garanties de disponibilité de baseBasic availability guarantees
  • Après être passé au cloud, il est plus facile de moderniser encore plusAfter moving to the cloud, it's easier to modernize even more
  • Aucune refonte de l’architectureNo rearchitecting
  • Changements de code/configuration minimesMinimal code/config changes
  • Déploiement amélioré et meilleure agilité de DevOps pour la production de nouvelles versions grâce aux conteneursImproved deployment and DevOps agility to release because of containers
  • Densité accrue et coûts de déploiement inférieursIncreased density and lower deployment costs
  • Portabilité des applications et des dépendancesPortability of apps and dependencies
  • Flexibilité des cibles d’hôte : approches PaaS ou IaaSFlexibility of host targets: PaaS approaches or IaaS
  • Architecte pour le cloud, vous bénéficiez des meilleurs avantages du cloud, mais un nouveau code est nécessaireArchitect for the cloud, you get the best benefits from the cloud but new code is needed
  • Approches natives pour le cloud avec des microservicesMicroservices cloud-native approaches
  • Applications stratégiques modernes, résilientes au cloud et hyper-scalablesModern mission-critical applications, cloud-resilient hyper-scalable
  • Services entièrement gérésFully managed services
  • Optimisé pour la mise à l’échelleOptimized for scale
  • Optimisé pour une agilité autonome par sous-systèmeOptimized for autonomous agility by subsystem
  • S’appuyant sur le déploiement et sur DevOpsBuilt on deployment and DevOps
  • Difficultés éventuellesChallenges
  • Valeur cloud inférieure, autre que la variation des dépenses d’exploitation ou la fermeture de centres de donnéesSmaller cloud value, other than shift in operating expense or closing datacenters
  • Peu géré : aucune mise à jour corrective du système d’exploitation ou du middleware ; peut utiliser des solutions d’infrastructure, telles que Terraform, Spinnaker ou marionnetteLittle is managed: No OS or middleware patching; might use infrastructure solutions, like Terraform, Spinnaker, or Puppet
  • La conteneurisation est une étape supplémentaire dans le processus d’apprentissage pour les développeurs et les opérations informatiquesContainerizing is an additional step in the learning curve for developers and IT Operations
  • Les pipelines DevOps et CI/CD sont généralement un « must » pour cette approche.DevOps and CI/CD pipelines are usually ‘a must’ for this approach. Si actuellement absent de la culture de l’organisation, risque d’être une difficulté supplémentaireIf not currently present in the culture of the organization, it might be an additional challenge
  • Nécessite une réarchitecture pour les applications cloud natives et les architectures de microservices, plus généralement une refactorisation de code importante ou une réécriture lors de la modernisation (augmentation du temps et du budget)Requires rearchitecture for cloud native apps and microservice architectures and usually requires significant code refactoring or rewriting when modernizing (increased time and budget)
  • Tableau 1-1.Table 1-1. Avantages et difficultés éventuelles des parcours de modernisation pour les applications et les services .NET existantsBenefits and challenges of modernization paths for existing .NET applications and services

    Technologies et architectures principales par niveau de maturitéKey technologies and architectures by maturity level

    Au départ, les applications .NET Framework démarraient avec le .NET Framework version 1.0, qui a été publié fin 2001..NET Framework applications initially started with the .NET Framework version 1.0, which was released in late 2001. Ensuite, les entreprises sont passées à des versions plus récentes (comme 2.0, 3.5 et .NET 4.x).Then, companies moved towards newer versions (such as 2.0, 3.5 and .NET 4.x). La plupart de ces applications s’exécutaient sur Windows Server et IIS (Internet Information Server), et utilisaient une base de données relationnelle, comme SQL Server, Oracle, MySQL ou n’importe quel autre SGBDR.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 plupart des applications .NET existantes sont probablement basées sur le .NET Framework 4.x, ou même sur le .NET Framework 3.5, et elles utilisent des frameworks web, comme ASP.NET MVC, ASP.NET Web Forms, ASP.NET Web API, WCF (Windows Communication Foundation), ASP.NET SignalR et 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. Ces technologies .NET Framework répandues dépendent de Windows.These established .NET Framework technologies depend on Windows. Cette dépendance est importante à prendre en compte si vous effectuez simplement une migration d’applications héritées et que vous voulez apporter le moins de modifications possible à votre infrastructure d’application.That dependency is important to consider if you are simply migrating legacy apps and you want to make minimal changes to your application infrastructure.

    La figure 1-2 montre les technologies et les styles d’architecture principaux utilisés pour chacun des trois niveaux de maturité cloud :Figure 1-2 shows the primary technologies and architecture styles used at each of the three cloud maturity levels:

    Technologies principales pour chaque niveau de maturité pour la modernisation d’applications web .NET existantes

    Figure 1-2.Figure 1-2. Technologies principales pour chaque niveau de maturité pour la modernisation d’applications web .NET existantesPrimary technologies for each maturity level for modernizing existing .NET web applications

    La figure 1-2 met en évidence les scénarios les plus courants, mais de nombreuses variations hybrides et mixtes sont possibles concernant l’architecture.Figure 1-2 highlights the most common scenarios, but many hybrid and mixed variations are possible when it comes to architecture. Par exemple, les modèles de maturité s’appliquent non seulement aux architectures monolithiques dans les applications web existantes, mais aussi à l’orientation service, au multiniveau et à d’autres variations du style d’architecture.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. L’intérêt ou le pourcentage plus élevé sur un type d’architecture ou un autre et les technologies associées déterminent le niveau de maturité global de vos applications.The higher focus or percentage on one or another architecture type and related technologies determines the overall maturity level of your applications.

    Chaque niveau de maturité du processus de modernisation est associé aux technologies et aux approches principales suivantes :Each maturity level in the modernization process is associated with the following key technologies and approaches:

    • Cloud Infrastructure-prêt (réhébergement ou élévation de base & Shift) : dans un premier temps, de nombreuses organisations veulent uniquement exécuter rapidement une stratégie de migration Cloud.Cloud Infrastructure-Ready (rehost or basic lift & shift): As a first step, many organizations want only to quickly execute a cloud-migration strategy. Dans ce cas, les applications sont réhébergées.In this case, applications are rehosted. La plus grande partie du réhébergement peut être automatisée avec Azure Migrate, service qui fournit de l’aide, des insights et les mécanismes nécessaires pour vous aider à migrer vers Azure, basé sur des outils cloud comme Azure Site Recovery et 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. Vous pouvez également configurer manuellement le réhébergement, ce qui vous permet de découvrir des détails d’infrastructure sur vos ressources quand vous déplacez des applications héritées dans le cloud.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. Par exemple, vous pouvez déplacer vos applications vers des machines virtuelles dans Azure avec peu de modifications, probablement avec juste des changements de configuration mineurs.For example, you can move your applications to VMs in Azure with little modification-probably with only minor configuration changes. La mise en réseau est dans ce cas similaire à un environnement local, en particulier si vous créez des réseaux virtuels dans Azure.The networking in this case is similar to an on-premises environment, especially if you create virtual networks in Azure.

    • Optimisé pour le Cloud (services managés et conteneurs Windows) : ce modèle consiste à effectuer quelques optimisations de déploiement importantes pour tirer parti du Cloud, sans modifier l’architecture principale de l’application.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. Le principal est ici d’ajouter la prise en charge des conteneurs Windows à vos applications .NET Framework existantes.The fundamental step here is to add Windows Containers support to your existing .NET Framework applications. Cette étape importante (conteneurisation) ne demande pas de toucher au code, donc l’effort global de lift-and-shift est léger.This important step (containerization) doesn't require touching the code, so the overall lift and shift effort is light. Vous pouvez utiliser des outils comme Image2Docker ou Visual Studio, avec ses outils pour Docker.You can use tools like Image2Docker or Visual Studio, with its tools for Docker. Visual Studio choisit automatiquement des valeurs par défaut adaptées pour les applications ASP.NET et les images de conteneurs Windows.Visual Studio automatically chooses smart defaults for ASP.NET applications and Windows Containers images. Ces outils permettent à la fois une boucle interne rapide et une voie rapide pour placer les conteneurs dans Azure.These tools offer both a rapid inner loop, and a fast path to get the containers to Azure. Votre agilité est améliorée quand vous déployez sur plusieurs environnements.Your agility is improved when you deploy to multiple environments. Ensuite, en passant en production, vous pouvez déployer vos conteneurs Windows sur Azure Web App pour conteneurs, Azure Container instances (ACI) et des machines virtuelles Azure avec Windows Server 2016 et des conteneurs, si vous préférez une approche 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. Pour les applications multiconteneurs plus complexes, envisagez d’utiliser des orchestrateurs comme Azure Kubernetes Service (AKS/ACS).For more complex multi-container applications, consider using orchestrators like Azure Kubernetes Service (AKS/ACS).

    Au cours de cette première modernisation, vous pouvez également ajouter des ressources provenant du cloud, comme la supervision avec des outils comme Azure Application Insights, des pipelines CI/CD pour les cycles de vie de votre application avec Azure DevOps Services,et de nombreux autres services de ressources de données qui sont disponibles dans 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. Par exemple, vous pouvez modifier une application web monolithique qui a été développée à l’origine avec les composants classiques ASP.NET Web Forms ou ASP.NET MVC, mais vous la déployez maintenant en utilisant des conteneurs 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. Quand vous utilisez des conteneurs Windows, vous devez également migrer vos données vers une base de données qui se trouve dans Azure SQL Database Managed Instance, le tout sans modifier l’architecture principale de votre application.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.

    • Cloud-Native: comme nous l’avons vu, vous devez envisager de concevoir des applications Cloud natives lorsque vous ciblez des applications volumineuses et complexes avec plusieurs équipes de développement indépendantes qui travaillent sur différents microservices pouvant être développé et déployé de manière autonome.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. Aussi, en raison d’une scalabilité affinée et indépendante par microservice.Also, due to granularized and independent scalability per microservice. Ces approches architecturales font face à des difficultés et des complexités très importantes, mais peuvent être considérablement simplifiées à l’aide d’un PaaS cloud et d’orchestrateurs comme Azure Kubernetes Service (AKS/ACS) (Kubernetes managé) et Azure Functions pour une approche serverless.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), and Azure Functions for a serverless approach. Toutes ces approches (comme les microservices et serverless) vous demandent de créer une architecture pour le cloud et d’écrire un nouveau code—du code adapté à des plateformes PaaS spécifiques ou du code qui s’aligne sur des architectures spécifiques, comme les microservices.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.

    La figure 1-3 montre les technologies internes que vous pouvez utiliser pour chaque niveau de maturité :Figure 1-3 shows the internal technologies that you can use for each maturity level:

    Technologies internes pour chaque niveau de maturité de modernisation

    Figure 1-3.Figure 1-3. Technologies internes pour chaque niveau de maturité de modernisationInternal technologies for each modernization maturity level

    Scénario de lift-and-shiftLift and shift scenario

    Pour les migrations de type lift-and-shift, gardez à l’esprit que vous pouvez utiliser de nombreuses variations de lift-and-shift différentes dans vos scénarios d’application.For lift and shift migrations, keep in mind that you can use many different variations of lift and shift in your application scenarios. Si vous réhébergez seulement votre application, vous pouvez avoir un scénario semblable à celui illustré dans la Figure 1-4, où vous utilisez des machines virtuelles dans le cloud seulement pour votre application et pour votre serveur de base de données.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.

    Exemple de scénario IaaS pur dans le cloud

    Figure 1-4.Figure 1-4. Exemple de scénario IaaS pur dans le cloudExample of a pure IaaS scenario in the cloud

    Scénarios de modernisationModernization scenarios

    Pour les scénarios de modernisation, vous avez probablement une application optimisée pour le cloud pure qui utilise seulement des éléments de ce niveau de maturité.For modernization scenarios, you might have a pure Cloud-Optimized application that uses elements only from that maturity level. Vous pouvez aussi avoir une application dans un état intermédiaire avec quelques éléments au niveau Prêt pour l’infrastructure cloud et d’autres éléments au niveau Optimisé pour le cloud (un modèle par sélection ou mixte), comme dans la figure 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.

    Exemple de scénario « par sélection », avec une base de données sur IaaS, DevOps et des ressources de mise en conteneur

    Figure 1-5.Figure 1-5. Exemple de scénario « par sélection », avec une base de données sur IaaS, DevOps et des ressources de mise en conteneurExample "pick and choose" scenario, with database on IaaS, DevOps, and containerization assets

    Ensuite, comme scénario idéal pour de nombreuses applications .NET Framework existantes à migrer, vous pouvez migrer vers une application optimisée pour le cloud pour obtenir des avantages significatifs avec peu de travail.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. Cette approche vous permet aussi d’être prêt pour Cloud natif comme éventuelle évolution future.This approach also sets you up for Cloud-Native as a possible future evolution. La figure 1-6 en montre un exemple.Figure 1-6 shows an example.

    Exemple de scénario d’applications optimisées pour le cloud, avec des conteneurs Windows et des services managés

    Figure 1-6.Figure 1-6. Exemple de scénario d’applications optimisées pour le cloud, avec des conteneurs Windows et des services managésExample Cloud-Optimized apps scenario, with Windows Containers and managed services

    Pour aller encore plus loin, vous pouvez étendre votre application Optimisée pour le cloud en ajoutant quelques microservices pour des scénarios spécifiques.Going even further, you could extend your existing Cloud-Optimized application by adding a few microservices for specific scenarios. Ainsi, vous accéderiez partiellement au niveau du modèle Cloud natif, qui n’est pas le sujet central du présent guide.This would move you partially to the level of Cloud-Native model, which is not the main focus of the present guidance.

    Sujets non abordés dans ce guideWhat this guide does not cover

    Ce guide couvre un sous-ensemble spécifique des exemples de scénarios, comme le montre la figure 1-7.This guide covers a specific subset of the example scenarios, as shown in Figure 1-7. Il est axé sur les scénarios de lift-and-shift pour arriver au final au modèle Optimisé pour le cloud.This guide focuses only on lift and shift scenarios, and ultimately, on the Cloud-Optimized model. Dans le modèle Optimisé pour le cloud, une application .NET Framework est modernisée avec des conteneurs Windows, plus d’autres composants comme la supervision et les pipelines 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. Chaque composant est fondamental pour permettre un déploiement plus rapide et agile des applications dans le cloud.Each component is fundamental to deploying applications to the cloud, faster, and with agility.

    Cloud natif n’est pas abordé dans ce guide.

    Figure 1-7.Figure 1-7. Cloud natif n’est pas abordé dans ce guide.Cloud-Native is not covered in this guide

    L’objet principal de ce guide est spécifique.The focus of this guide is specific. Il vous montre le cheminement à suivre pour effectuer un lift-and-shift de vos applications .NET existantes, sans refonte de l’architecture ni modification du code.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. Enfin, il vous montre comment rendre votre application Optimisée pour le cloud.Ultimately, it shows you how to make your application Cloud-Optimized.

    Ce guide ne vous montre pas comment créer des applications cloud natives, par exemple comment évoluer vers une architecture de microservices.This guide doesn't show you how to create Cloud-Native applications, such as how to evolve to a microservices architecture. Pour remanier vos applications ou pour créer de nouvelles applications basées sur des microservices, consultez le livre électronique .net microservices : architecture for containered .NET applications.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.

    Ressources supplémentairesAdditional resources

    • Cycle de vie des applications Docker conteneurisées avec la plateforme et les outils de Microsoft (livre électronique téléchargeable) Containerized Docker application lifecycle with Microsoft platform and tools (downloadable e-book)
      https://aka.ms/dockerlifecycleebook

    • Microservices .net : architecture pour les applications .net en conteneur (livre électronique téléchargeable) .NET Microservices: Architecture for containerized .NET applications (downloadable e-book)
      https://aka.ms/microservicesebook

    • Architecture des applications web modernes avec ASP.NET Core et Azure (livre électronique téléchargeable) Architecting modern web applications with ASP.NET Core and Azure (downloadable e-book)
      https://aka.ms/webappebook

    Public visé par ce guideWho should use this guide

    Ce guide a été écrit pour les développeurs et les architectes de solutions qui veulent moderniser des applications web ASP.NET ou des services WCF existants basés sur le .NET Framework, de façon à obtenir une meilleure agilité dans la livraison des applications.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.

    Ce guide peut être utile également si vous êtes décideur informatique, par exemple architecte d’entreprise ou responsable du développement, et souhaitez seulement une vue d’ensemble des bénéfices que vous pouvez obtenir en utilisant des conteneurs Windows et en déployant sur le cloud si vous utilisez 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.

    Comment utiliser ce guideHow to use this guide

    Ce guide répond à la question « pourquoi » : pourquoi il peut être souhaitable de moderniser vos applications existantes. Il explique aussi quels sont les bénéfices procurés par l’utilisation des conteneurs Windows quand vous déplacez vos applications dans le cloud.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. Le contenu des premiers chapitres du guide est conçu pour les architectes et les décideurs informatiques qui veulent une vue d’ensemble, mais qui n’ont pas besoin d’informations techniques détaillées sur le processus d’implémentation.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.

    Le dernier chapitre de ce guide contient plusieurs procédures pas à pas centrées sur des scénarios de déploiement spécifiques.The last chapter of this guide introduces multiple walkthroughs that focus on specific deployment scenarios. Ce guide offre des versions plus courtes des procédures pas à pas, qui résument les scénarios et mettent en avant leurs avantages.This guide offers shorter versions of the walkthroughs, to summarize the scenarios and highlight their benefits. Les procédures pas à pas complètes détaillent la configuration et l’implémentation. Elles sont publiées sous la forme d’un ensemble de billets wiki dans le dépôt GitHub où vous trouvez aussi des exemples d’applications associées (présentées dans la section suivante).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). Le dernier chapitre et les procédures pas à pas du wiki sur GitHub sont plus intéressants pour les développeurs et les architectes qui veulent connaître les détails d’implémentation.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.

    Exemples d’applications pour la modernisation d’applications héritées : eShopModernizingSample apps for modernizing legacy apps: eShopModernizing

    Le dépôt eShopModernizing sur GitHub contient deux exemples d’applications qui simulent des applications web monolithiques héritées.The eShopModernizing repo on GitHub offers two sample applications that simulate legacy monolithic web applications. La première application web est développée à l’aide d’ASP.NET MVC ; la deuxième application web est développée à l’aide d’ASP.NET Web Forms et la troisième est une application multiniveau avec une application de bureau client WinForms utilisant un back-end de service WCF.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. Toutes ces applications sont basées sur le .NET Framework classique.All these apps are based on the traditional .NET Framework. Ces exemples d’applications n’utilisent pas .NET Core ou ASP.NET Core, car elles sont supposées être des applications .NET Framework existantes/héritées à moderniser.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.

    Ces exemples d’applications ont une seconde version, avec le code modernisé, et sont assez simples.These sample apps have a second version, with modernized code, and which are fairly straightforward. La différence la plus importante entre les versions des applications est que leur seconde version utilise les conteneurs Windows comme choix de déploiement.The most important difference between the app versions is that the second versions use Windows Containers as the deployment choice. Quelques ajouts ont été apportés aux secondes versions, comme des objets blob Stockage Azure pour la gestion des images, Azure Active Directory pour la gestion de la sécurité et Azure Application Insights pour la surveillance et l’audit des applications.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.

    Envoyez votre feedbackSend your feedback

    Ce guide a été écrit pour vous aider à comprendre les options dont vous disposez pour améliorer et moderniser des applications web .NET existantes.This guide was written to help you understand your options for improving and modernizing existing .NET web applications. Le guide et les exemples d’applications associés sont en constante évolution.The guide and related sample applications are evolving. Vos commentaires sont les bienvenus !Your feedback is welcome! Si vous avez des commentaires à formuler sur la façon dont ce guide peut être amélioré, envoyez-les à l’adresse : 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.