Migration d’applications .NET - AWS Conseils prescriptifs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Migration d’applications .NET

La migration de vos applications .NET vous AWS permet de créer des charges de travail hautement disponibles avec des fonctionnalités d'évolutivité élastiques, de réduire les frais d'exploitation et d'accroître l'agilité de votre entreprise en vous concentrant sur votre valeur distinctive.

Cette section se concentre sur les différentes options d'hébergement de vos applications .NET sur AWS. Vous pouvez choisir entre l'utilisation d'une machine virtuelle, une solution gérée telle que AWS Elastic Beanstalkla conteneurisation de votre code ou la refactorisation de votre code vers une architecture basée sur des microservices ou sans serveur.

Évaluation

Le choix d’un chemin de migration pour votre charge de travail .NET repose sur les principaux facteurs suivants :

  • Rechercher la version .NET utilisée : Microsoft prend en charge deux implémentations .NET différentes : .NET Framework (1.0 à 4.8) et .NET (.NET Core 1.0 à 3.1 et .NET 5 et versions ultérieures). Toutes deux partagent de nombreux composants et peuvent exécuter du code d’application écrit à l’aide des différents langages de programmation .NET (tels que C#, F# et VB.NET). Le choix d’une stratégie de migration et d’un service d’hébergement dépend de l’environnement d’exécution utilisé, étant donné que .NET Framework s’exécute sous Windows, alors que la version plus récente de .NET est multiplateforme. Pour .NET Framework, vous pouvez héberger votre code sur un système d’exploitation Windows ou le refactoriser pour utiliser la version plus récente de .NET. La version plus récente de .NET peut également être hébergée sur des services basés sur le système d’exploitation Linux. Lorsque vous modernisez des charges de travail basées sur .NET Framework, vous pouvez utiliser l’Assistant de portage pour .NET ou AWS Toolkit for .NET Refactoring afin d’analyser votre code et générer un rapport d’évaluation de compatibilité. En déterminant s'il existe un .NET Framework incompatible APIs référencé par votre projet, vous pouvez planifier la complexité d'un projet de migration et décider si et quand vous devez refactoriser votre code pour utiliser un environnement d'exécution plus récent.

  • Passez en revue votre déploiement actuel : vérifiez si la charge de travail actuellement migrée possède des CI/CD pipelines existants qui peuvent être mis à jour pour déployer les mêmes charges de travail dans le cloud. L’utilisation d’un pipeline de création et de déploiement existant peut réduire le temps nécessaire au déploiement de votre application dans le cloud en automatisant la procédure nécessaire à la création, à la configuration et au déploiement de vos charges de travail.

  • Examiner votre feuille de route : en fonction de l’état actuel du projet, vous envisagez peut-être déjà de réarchitecturer ou de reconcevoir vos applications. Toute modernisation effectuée doit tenir compte de la feuille de route du produit. Par exemple, la décision de conteneuriser le code existant ou de refactoriser une architecture monolithique en microservices fait idéalement partie de la feuille de route du produit et s’inscrit dans le cadre d’autres efforts de développement.

Mobilisation

Il existe trois chemins de migration différents à prendre en compte lors de la migration de vos charges de travail .NET vers. AWS Vous pouvez choisir entre les différentes options en fonction de la complexité de votre base de code existante, du temps consacré à la migration et de la taille de l’équipe chargée de soutenir l’effort de migration. Lorsque vous envisagez la modernisation dans le cadre de votre migration, il est recommandé de vous aligner sur la feuille de route du produit.

  • Réhébergement (lift & shift) : vous pouvez choisir cette approche si votre priorité est d'accélérer la migration vers une migration AWS avec peu ou pas de modifications. Vous pouvez réhéberger des sites Web basés sur ASP.NET vers des services Internet (IIS) exécutés sur des instances Amazon. EC2 Vous pouvez réhéberger vos applications de bureau (telles que Windows Presentation Foundation, Web Forms et .NET MAUI) sur l'une des plateformes informatiques destinées aux utilisateurs finaux, comme Amazon 2.0 AppStream ou Amazon. WorkSpaces

  • Replateformer : la replateforme est la solution idéale lorsque vous souhaitez héberger votre application à l’aide d’un service géré sans apporter de modifications au code, mais que vous désirez réduire votre charge opérationnelle en vous déchargeant de tâches lourdes et indifférenciées telles que l’installation, l’application de correctifs, les mises à niveau et la gestion des instances. Cette stratégie convient également aux équipes qui souhaitent passer à des charges de travail basées sur des conteneurs. Vous pouvez reconfigurer vos applications existantes vers Elastic Beanstalk ou utiliser des conteneurs Docker hébergés sur Amazon ECS, Amazon EKS ou. AWS App Runner

  • Refactorisation : optez pour cette approche si vous pouvez investir du temps et des efforts pour apporter des modifications au code et à l'architecture afin de réduire les frais d'exploitation et d'améliorer l'évolutivité, la haute disponibilité et la reprise après sinistre en utilisant des services AWS cloud natifs. La refactorisation consiste à moderniser votre base de code en transférant les applications .NET Framework existantes vers .NET (anciennement .NET Core) ou en modernisant une base de code existante pour qu’elle s’exécute mieux dans le cloud. Vous pouvez utiliser le AWS SDK pour .NETpour appeler de nombreux services AWS cloud depuis votre code .NET. Des outils tels que Porting Assistant for .NET AWS Microservice Extractor for .NETpeuvent être utilisés pour porter votre base de code de .NET Framework vers .NET et diviser votre application monolithique en microservices. En refactorisant vos charges de travail .NET existantes pour les exécuter AWS Lambda, vous pouvez utiliser l'informatique sans serveur pour éviter le provisionnement et la gestion de l'infrastructure.

Migrer

Les étapes de la migration de vos charges de travail .NET dépendent du chemin de migration que vous avez choisi lors de l’étape d’évaluation et de votre type d’application.

Réhébergement d’applications .NET

Choisissez ce chemin de migration si vous souhaitez migrer votre application sans apporter de modifications au code, mais si vous souhaitez bénéficier de la mise à l’échelle automatique, de l’équilibrage de charge et de l’élasticité dans le cloud. Pour les sites Web basés sur Windows, le réhébergement signifie généralement les exécuter sur Internet Information Services (IIS) sur. AWS Pour les applications de bureau, vous devez installer l’application et permettre aux utilisateurs de s’y connecter depuis l’extérieur.

Services d'information Internet sur AWS

Internet Information Services (IIS) est un serveur Web Microsoft qui s’exécute sur un système d’exploitation Windows et qui sert à héberger des sites Web et des services Web. IIS peut être installé sur n'importe quelle EC2 instance Amazon exécutant Windows Server. Une fois IIS activé et configuré, vous pouvez déployer vos sites Web et services ASP.NET en utilisant le même mécanisme de déploiement que celui que vous utilisez pour les environnements sur site.

Si vous hébergez IIS sur des instances EC2 Windows, il est important de suivre le AWS Well-Architected Framework en utilisant l'équilibrage de charge, les groupes Auto Scaling et le déploiement multi-AZ en fonction de votre charge de travail et de vos besoins en matière de HADR. Nous vous recommandons d'utiliser le AWS Launch Wizardcar il vous guide tout au long du dimensionnement, de la configuration et du déploiement d'une charge de travail Windows Server sur AWS laquelle sont exécutées des ressources IIS. Launch Wizard déploie une architecture hautement disponible qui couvre deux zones de disponibilité avec les composants de calcul, de réseau et de stockage requis pour un VPC récemment créé ou existant.

Hébergement d'applications de bureau sur AWS

De nombreux clients ont besoin d’accéder à des applications de client lourd basées sur Windows. Vous avez le choix entre trois plateformes différentes :

  • Amazon EC2 — Choisissez cette option si vous souhaitez que vos utilisateurs se connectent à un environnement Windows Server à l'aide de Microsoft Remote Desktop. Avec cette option, vous êtes responsable de l’application des correctifs et de la maintenance de votre système d’exploitation. Vous devez également acheter des licences d'accès client (RDS CALs) supplémentaires pour vos utilisateurs et une assurance logicielle (SA) active. Pour plus d'informations, consultez la section Microsoft Licensing AWS dans la AWS documentation.

  • Amazon WorkSpaces — Choisissez cette option si vous avez besoin d'une infrastructure de bureau virtuel (VDI) entièrement gérée pour vos utilisateurs. Vous pouvez l'utiliser WorkSpaces pour fournir une expérience Windows Desktop persistante à vos utilisateurs. Vous pouvez également personnaliser votre WorkSpaces environnement et installer des applications .NET à l'aide d'une image personnalisée ou AWS Systems Managerpour déployer vos applications .NET WorkSpaces dans vos environnements. Les utilisateurs peuvent se connecter à l'aide de leur navigateur ou du WorkSpacesclient Amazon.

  • Amazon AppStream 2.0 — Choisissez cette option pour fournir un accès sécurisé, fiable et évolutif aux applications et aux bureaux non persistants depuis n'importe quel endroit. Vous pouvez utiliser la AppStream version 2.0 pour permettre à vos utilisateurs d'accéder à vos applications .NET depuis le Web. Si vous disposez déjà d'un RDS CALs et d'une SA active, vous pouvez utiliser ces licences avec la AppStream version 2.0 en utilisant License Mobility.

Recréation de plateforme

La replateforme implique de modifier votre environnement d’hébergement avec peu ou pas de modifications de code. Choisissez cette stratégie pour réduire vos frais opérationnels et tirer parti des fonctionnalités et des services cloud.

AWS Elastic Beanstalk

Vous pouvez l'utiliser AWS Elastic Beanstalkpour reconfigurer vos charges de travail .NET Framework. Si vous empaquetez vos applications basées sur ASP.NET ou ASP.NET Core, vous pouvez rapidement déployer et gérer des applications AWS sans avoir à vous renseigner sur l'infrastructure qui exécute ces applications. Cela réduit la complexité sans pour autant sacrifier le choix ou le niveau de contrôle. Vous chargez simplement votre application, et Elastic Beanstalk gère automatiquement les détails du dimensionnement des capacités, de l’équilibrage de charge, de la mise à l’échelle et de la surveillance de l’état de l’application.

Pour en savoir plus, veuillez consulter les ressources suivantes :

Mise en conteneur des applications existantes

Vous pouvez utiliser Amazon ECS ou Amazon EKS pour héberger vos applications conteneurisées basées sur Docker. AWS gère les deux services. Le choix entre les deux dépend des connaissances et des préférences existantes. Les deux options peuvent exécuter des conteneurs basés sur Linux ou sur Windows.

Pour en savoir plus, veuillez consulter les ressources suivantes :

La conteneurisation des applications basées sur .NET dépend de l’environnement d’exécution .NET utilisé. Éléments à prendre en compte :

  • Les applications basées sur .NET Framework s’exécutent sur des conteneurs Windows : l’ajout de la prise en charge de Docker aux applications existantes se fait en créant un fichier Docker qui décrit la manière dont l’application doit être conteneurisée. Vous pouvez l'utiliser AWS App2Containerpour conteneuriser et migrer facilement des applications basées sur .NET Framework existantes vers. AWS App2Container analyse votre serveur IIS pour déterminer les fichiers requis et extrait l’application cible pour créer une image Docker. Vous pouvez également utiliser App2Container pour créer les artefacts de déploiement nécessaires pour héberger votre application dans le. AWS Cloud

  • .NET ou .NET Core : outre l'exécution de nouvelles applications Web basées sur .NET sur Amazon ECS ou Amazon EKS, vous pouvez également utiliser. AWS App Runner App Runner est une solution entièrement gérée sans serveur qui exécute votre code ou votre image de conteneur et qui gère l’équilibrage de charge, l’autoscaling, la journalisation, les certificats et le réseau.

Refactorisation/reconception du code existant

Choisissez cette option si votre entreprise a un fort besoin d'ajouter des fonctionnalités, de l'évolutivité ou des performances qui seraient autrement difficiles à atteindre dans l'environnement actuel de l'application. En fonction de la feuille de route de votre application, vous pouvez choisir de modifier votre code pour utiliser le dernier cadre, des services natifs cloud, ou de le reconcevoir pour mieux fonctionner dans le cloud.

La première option de refactorisation disponible consiste à migrer votre application .NET Framework existante vers .NET. La transition vers .NET vous offre l’avantage de s’exécuter sous Linux plutôt que sous Windows. Cela réduit le coût total des licences, vous fournit les derniers cadres et propose les dernières versions des langages de programmation .NET.

AWS SDK pour .NET

AWS SDK pour .NETsimplifie l'utilisation de Services AWS en fournissant un ensemble de bibliothèques cohérentes et familières aux développeurs .NET. Le AWS SDK offre un support multiplateforme et est distribué à l'aide de. NuGet Les développeurs peuvent utiliser le AWS SDK pour appeler facilement des services cloud à partir de leur code .NET, en respectant les exigences de stockage, de mise en file d'attente, d'authentification et de configuration de leur application.

Modernisation des applications .NET Framework

Vous pouvez migrer depuis .NET Framework à l’aide de l’Assistant de portage pour .NET, qui analyse vos fichiers de code et crée un rapport qui vous aide à planifier la feuille de route de migration de votre portefeuille d’applications. L'assistant de portage pour .NET peut également réduire votre charge de portage en identifiant .NET Core APIs et les packages incompatibles et en recherchant des remplacements connus. Le AWS kit d'outils pour le refactoring .NET est une extension de Visual Studio qui réduit le temps et les efforts nécessaires aux développeurs pour refactoriser les anciennes applications .NET vers des alternatives basées sur le cloud. AWS Il évalue le code source de l'application pour recommander des voies de modernisation possibles, telles que le portage vers .NET Core, identifie les configurations de dépendance IIS et Active Directory spécifiques à Windows, modifie le code dans la mesure du possible pour permettre la compatibilité avec Linux et aide à valider l'application refactorisée sur. Services AWS La migration des applications .NET Framework vers .NET permet de les exécuter sur des processeurs Graviton ARM64 basés sur des processeurs pour un meilleur rapport prix/performances. Pour plus d'informations, consultez .NET sur Graviton on et Graviton2 GitHub et les conteneurs dans Optimisation des coûts avec les services basés sur AWS Graviton dans la AWS documentation de Workshop Studio.

Du monolithe aux microservices

De nombreuses équipes de développement souhaitent reconcevoir leurs applications monolithiques existantes en microservices. En passant à des architectures basées sur des microservices, vos équipes de développement peuvent accroître l'agilité du développement, réduire les coûts de calcul, adapter les services individuellement et réduire leurs délais de déploiement. AWS Microservice Extractor for .NETsimplifie le processus de refactorisation d'anciennes applications monolithiques dans une architecture basée sur des microservices. En identifiant les composants et en groupant les fonctionnalités, les équipes de développement peuvent extraire progressivement les fonctionnalités des applications monolithiques .NET Framework vers les services .NET.

Refactorisation vers des applications sans serveur

AWS Lambdaest un service informatique sans serveur piloté par les événements qui vous permet d'exécuter du code pour pratiquement n'importe quel type d'application ou de service principal sans provisionner ni gérer de serveurs. Vous pouvez extraire la logique de votre application existante pour créer des flux de travail sans serveur basés sur des événements qui se mettent automatiquement à l’échelle en cas de besoin à l’aide de .NET et de Lambda. Les cas d’utilisation courants pour Lambda incluent les charges de travail pilotées par des événements qui s’exécutent pendant quelques secondes ou quelques minutes avec des besoins de mise à l’échelle variés, tels que le traitement de fichiers, l’analytique, les sites Web et les applications mobiles. Pour plus d'informations, consultez la section Création de fonctions Lambda avec C# dans la documentation Lambda.

Ressources supplémentaires