ClickCease Passer de .NET 6 à 8

Table des matières

Rejoignez notre bulletin d'information

Rejoignez plus de 4 500 professionnels de Linux et de l'Open Source!

2 fois par mois. Pas de spam.

Les coûts cachés de la migration des frameworks : Passer de .NET 6 à 8

par Joao Correia

27 janvier 2025 - Évangéliste technique

Alors que .NET 6 arrive en fin de vie, de nombreuses équipes de développement sont confrontées à un scénario familier mais redouté : la migration forcée d'applications parfaitement fonctionnelles vers la prochaine version LTS (Long Term Support). Bien que .NET 8 apporte son lot d'améliorations et de nouvelles fonctionnalités, la réalité pour de nombreuses applications d'entreprise est que la migration devient un exercice de frustration, consommant de précieuses ressources de développement simplement pour maintenir le statu quo.

 

Le problème des paquets NuGet

 

L'un des défis les plus importants de la migration de .NET 6 à 8 ne se trouve même pas dans votre propre code, mais dans vos dépendances. L'écosystème NuGet, bien que robuste, devient une source de complications en cascade lors des mises à niveau du framework. De nombreuses applications d'entreprise reposent sur des dizaines, voire des centaines de paquets. Chacun d'entre eux doit être compatible avec .NET 8, et c'est là que les vrais problèmes commencent.

Prenons un scénario typique : Votre application utilise la version 2.x de PackageA, qui fonctionnait parfaitement dans .NET 6. Cependant, la seule version compatible avec .NET 8 est la 3.x, qui introduit des changements radicaux dans son API publique. Multipliez maintenant cette situation sur l'ensemble de votre graphe de dépendances. Il se peut que certains paquets ne soient même pas encore compatibles avec .NET 8, ce qui vous place devant des choix inconfortables : forker le paquet, trouver une alternative ou maintenir une solution hybride avec certains projets qui restent sous .NET 6 (ce qui introduit son propre lot de complications).

 

Le mythe des mises à niveau transparentes

 

L'outil Upgrade Assistant de Microsoft promet de faciliter la transition, et s'il est utile pour les applications plus simples, il n'est pas à la hauteur lorsqu'il s'agit de bases de code d'entreprise réelles. L'outil peut gérer des changements simples tels que la mise à jour des fichiers de projet et les modifications d'API de base, mais il a du mal à gérer les modifications d'API :

 

- Chaînes de dépendance complexes et conflits de versions

- Processus de construction personnalisés et tâches MSBuild

- Cadres internes et utilitaires construits sur des caractéristiques spécifiques au cadre

- Points d'intégration avec des systèmes existants ou des services tiers

- Optimisations spécifiques à un domaine qui s'appuient sur les éléments internes du cadre de travail

 

Le dilemme des applications d'entreprise

 

L'aspect le plus frustrant de cette migration forcée est peut-être son impact sur les applications d'entreprise stables et matures. Prenons l'exemple d'une application métier que votre équipe a maintenue et perfectionnée au fil des ans. Elle est stable, performante et répond à toutes les exigences de l'entreprise. La base de code n'est peut-être pas parfaite, mais elle est bien comprise et fiable.

Puis vient le mandat de mise à jour du cadre. Soudain, vous devez modifier un code qui n'a pas eu besoin d'être modifié depuis des années, non pas pour ajouter des fonctionnalités ou corriger des bogues, mais simplement pour s'adapter aux changements du cadre. Ces modifications introduisent un risque sans apporter de valeur ajoutée à l'entreprise - c'est la définition de la dette technique sans bénéfice correspondant.

 

Les défis de la migration dans le monde réel

 

Examinons quelques défis spécifiques que les outils de mise à niveau ne permettent pas de relever de manière adéquate :

 

  1. Modifications de l'authentification et de l'autorisation : De nombreuses applications d'entreprise ont des implémentations de sécurité complexes qui combinent des fournisseurs d'authentification standard avec une logique d'autorisation personnalisée. Les modifications apportées au cadre dans ces domaines nécessitent souvent un remaniement important du code critique pour la sécurité.
  2. Changements dans l'injection de dépendance : Bien que les concepts de base restent similaires, des changements subtils dans le comportement de l'injection de dépendance ou dans la gestion de la durée de vie peuvent entraîner des problèmes difficiles à diagnostiquer en production.
  3. Mises à jour de la configuration et du modèle d'hébergement : Les changements dans le modèle d'hébergement ou le système de configuration peuvent nécessiter des mises à jour des scripts de déploiement, des solutions de surveillance et des procédures opérationnelles.

 

La liste officielle des ruptures dans .NET 8 (et ce n'est même pas la liste complète si votre point de départ est .NET 6) comprend les éléments suivants des changements de comportement et des espaces de noms obsolètes un peu partout. De ASP.NET à la cryptographie, des composants de dessin à Entity Frameworkvous devrez adapter votre code pour contourner les problèmes.

 

Le véritable coût de la migration

 

Le coût réel n'est pas seulement lié au travail de mise à niveau initial, mais aussi aux effets d'entraînement :

 

- Temps de développement détourné du développement de fonctionnalités et d'améliorations réelles

- Des tests supplémentaires sont nécessaires pour tous les chemins d'accès aux applications

- Problèmes potentiels liés à l'exécution qui n'apparaissent qu'en production

- Mise à jour de la documentation et formation de l'équipe

- Changements opérationnels dans les processus de surveillance et de déploiement

 

Stratégies pour minimiser la douleur

 

Bien que la migration soit inévitable, il existe des moyens d'en réduire l'impact :

 

  1. Commencez par un audit complet des dépendances. Identifiez les paquets susceptibles de poser des problèmes et recherchez rapidement des solutions de remplacement.
  2. Envisagez de maintenir temporairement une solution hybride, dans laquelle les composants critiques restent sur .NET 6 tandis que les parties moins complexes passent à .NET 8.
  3. Profitez-en pour mettre en place de meilleures couches d'abstraction autour du code dépendant du cadre, ce qui facilitera les migrations futures.
  4. Documentez les changements importants et leurs solutions pour votre base de code spécifique - cela sera très utile pour les mises à jour futures.

 

Regarder vers l'avenir

 

En tant qu'équipes de développement, nous devons mieux faire connaître les coûts réels de ces migrations. Bien que l'évolution du cadre soit nécessaire, l'approche actuelle qui consiste à forcer les migrations à travers les dates de fin de vie, en particulier pour les versions LTS, crée un fardeau important pour les applications d'entreprise.

L'écosystème .NET a besoin de meilleurs outils pour gérer ces transitions, en particulier pour les scénarios d'entreprise complexes. En attendant, les équipes doivent soigneusement peser les coûts et les avantages d'une migration immédiate par rapport au maintien des applications sur les frameworks EOL avec des mesures de sécurité appropriées.

L'engagement de Microsoft en faveur de l'innovation dans l'écosystème .NET est louable, mais il est peut-être temps d'engager une discussion plus large sur l'impact des migrations forcées sur les applications d'entreprise. Après tout, la stabilité et la fiabilité sont également des caractéristiques qui ne devraient pas être sacrifiées sur l'autel des mises à jour du cadre. Si, comme la plupart d'entre nous dans le monde réel, vous souhaitez éviter tous ces maux de tête, sachez qu'il est possible de repousser simplement la date de fin de vie à une date plus favorable de votre choix grâce à Support du cycle de vie sans fin pour .NETqui vous permet de continuer à recevoir des mises à jour permanentes sur les problèmes de sécurité de .NET 6 pendant des années, ce qui vous permet de migrer dès que vous êtes prêt, même si c'est bien au-delà de la date de fin de vie.

Résumé
Les coûts cachés de la migration des frameworks : Passer de .NET 6 à 8
Nom de l'article
Les coûts cachés de la migration des frameworks : Passer de .NET 6 à 8
Description
Alors que .NET 6 arrive en fin de vie, de nombreuses équipes de développement sont confrontées à un scénario familier mais redouté : la migration forcée... En savoir plus
Auteur
Nom de l'éditeur
de TuxCare
Logo de l'éditeur

Vous cherchez à automatiser la correction des vulnérabilités sans redémarrage du noyau, sans interruption du système ou sans fenêtres de maintenance programmées ?