15/04/2022

Modernisation des applications vers Azure – Le portage des applications legacy vers le Cloud Azure

La modernisation des applications vers Azure pose de nombreuses questions. Après un rapide aperçu des différents éléments de contexte, nous verrons les différents avantages du portage des applications legacy vers le cloud Azure. Nous vous présenterons ensuite les différentes étapes de la migration.

Le contexte technologique

Les possibilités offertes par l’Internet

L’ère de l’informatique a connu moult révolutions et sauts technologiques, dans un laps de temps assez court par rapport à d’autres domaines de progrès. Au départ réservée aux secteurs militaires et de la recherche, la démocratisation du hardware a propulsé le développement du software. Il s’est propagé dans le monde éducatif, les entreprises puis le grand public. L’avènement des solutions monolithiques (mainframes, etc.) a marqué les bases d’un usage des outils informatiques fondamental pour le bon fonctionnement de l’entreprise. Ils sont également importants dans le développement d’une certaine compétitivité.

Avec la démocratisation de l’Internet, les systèmes d’information des entreprises se sont peu à peu transformés pour tirer parti des capacités de communication démultipliées du Net. Les services « en ligne » ont commencé à apparaître et les vitrines digitales ont envahi la Toile. Cette effervescence autour de l’usage de l’Internet et en particulier du Web, en conjonction avec les progrès technologiques et les avancées dans les sciences de l’information, ont accéléré le développement d’infrastructures, qui ont dû répondre à des besoins de plus en plus complexes et gourmands en ressources.

De nouvelles opportunités IT pour les entreprises

En parallèle, l’usage de l’informatique est toujours plus exigeant. Il lui faut désormais répondre à des processus métier plus élaborés, nombreux, et interconnectés. Il est donc devenu nécessaire pour les entreprises de toujours s’équiper davantage. En conséquence, elles en arrivent à devoir gérer des patrimoines IT plus importants et gourmands. De tels patrimoines ont rapidement posé des problèmes de gestion optimale des coûts, d’obsolescence et de réurbanisation.

Enfin, avec des services en ligne de plus en plus variés, performants et intelligents, certaines sociétés ont changé l’approche de service. Au lieu de proposer un service en ligne, elles ont commencé à proposer leurs propres ressources en infrastructure IT. Ainsi sont nés les services que l’on connaît aujourd’hui sous les dénominations : IaaS, PaaS, SaaS, etc.

De tels services permettent les usages d’une infrastructure externalisée comme si elle nous était dédiée. Ces infrastructures externalisées composent ce qu’on appelle de nos jours le « Cloud » ou Nuage en français.

Les entreprises peuvent désormais changer leur approche d’investissement. En effet, au lieu de miser sur leur propre infrastructure IT et donc d’en gérer la maintenance et la modernisation, elles peuvent louer du « run » sur le « cloud ». A différents niveaux et pour différents besoins, elles bénéficient désormais de la souplesses de ces ressources IT à la demande.

La nécessité de la modernisation des applications

La nécessité de la modernisation des applications

L’informatique et le monde de l’IT. en général évoluent très vite. Les progrès technologiques repoussent les limites du hardware et ouvrent de nouveaux horizons. Les communautés open source et la multiplication des éditeurs de logiciel enrichissent également l’offre software.

Par ailleurs, le SI s’est peu à peu transformé en talon d’Achille pour bon nombre d’entreprises qui comptent dessus sans prendre la mesure des risques induits par de tels systèmes. En effet, la digitalisation des processus et des données de l’entreprise les exposent de facto aux attaques cyber. Ces dernières ont connu un essor très important en très peu de temps. L’Internet est une chose publique et transfrontalière par essence. La « libre » circulation des informations à l’échelle internationale a fait naître toutes sortes d’activités malveillantes. Elles peuvent aller, entre autres, de la simple nuisance technique à de l’espionnage industriel ou encore à la prise d’otage de systèmes.

La modernisation, nouveau défi de l’IT professionnel

Ainsi un double défi s’impose au monde IT professionnel. Il faut gagner, d’une part en compétitivité en misant sur les progrès de l’informatique et d’autre part en sécurité en maîtrisant la fiabilité des systèmes et leurs usages.

De fait, un parc IT, aussi bien sur le plan matériel que logiciel, ne peut ainsi rester statique et doit bénéficier de modifications, de refontes, de mises à jour régulièrement pour rester fiable et performant.

L’époque actuelle n’a jamais connu autant d’effervescence autour des technologies de l’IT. Ce sont autant de nouvelles voies sur l’exploitabilité des ressources sur Internet. Les solutions portées par les entreprises sur leur patrimoine IT propre ont ainsi tendance à perdre en performance comparées aux solutions Cloud de plus en plus nombreuses.

L’époque où les entreprises « fermaient » leur infrastructure au monde extérieur pour préserver leurs acquis informatiques semble révolue au profit de vagues de modernisation des applications professionnelles pour s’inscrire dans des scénarios de conjugaison (i.e. scénarios hybrides) de solutions « legacy » interconnectées avec des services cloud, ou bien de migrations complètes de systèmes « On premise » avec des solutions 100% « en ligne ».

La modernisation des applicatifs pour tirer avantage des services à la demande du cloud devient alors une activité cruciale pour rester « à flot » dans le monde du digital.

Pourquoi migrer vers le Cloud Azure ?

Les avantages offerts par le Cloud Azure

D’une façon générale, le Cloud Azure apporte souplesse et réactivité. Une entreprise souple et réactive répondra bien mieux aux attentes business. Que ce soit donc en termes de volume de données, de capacité de traitement ou encore de vitesse d’adaptation, une entreprise moderne doit constamment faire évoluer ses capacités informatiques. Le Cloud Azure répond à ces exigences.

Plusieurs avantages se dégagent ainsi d’une stratégie de transformation digitale axée sur le Cloud Azure :

  • Charges d’exploitation : toute l’infrastructure IT nécessaire aux services consommés est gérée par le Cloud, ce qui permet de concentrer les efforts sur le cœur de business mais aussi de lisser les coûts d’exploitation ;
  • Dimensionnement : avec la flexibilité du Cloud, les pics de consommation ou les montées en charge peuvent être très facilement prises en compte par du scaling horizontal ou vertical des instances de traitement (serveurs, bases de données, conteneurs, etc.) ;
  • Sécurité des données : La redondance, les sauvegardes, le cryptage mais aussi les dispositions d’accès physique, la maintenance des conditions physiques adéquates ou encore la localisation des données sont autant de centres de coûts désormais portés par l’offre Cloud Azure, qui garantit un niveau opérationnel, choisi selon les services sollicités.
  • Automatisation : Les tâches de maintenance chronophages peuvent être automatisées grâce aux nombreux outils de l’offre Cloud Azure : constructions ou déconstructions d’infrastructures virtuelles, surveillance, habilitations, etc. ;
  • Exploitabilité : Tout le catalogue d’infrastructure virtuelle mis à portée de clic des administrateurs leur permet d’expérimenter de nouvelles solutions à moindre frais et ainsi créer des systèmes optimaux avec un investissement initial modéré.

Les différents niveaux de virtualisation des infrastructures

Selon les besoins, il convient de choisir le bon niveau de virtualisation d’infrastructure. En voici les principaux :

IaaS (Infrastructure-as-a-Service) : fournit des serveurs, du réseau et du stockage en s’affranchissant des contraintes matérielles 

PaaS (Platform-as-a-Service) : fournit des applications middleware sur des serveurs préconfigurés, comme des bases de données ou encore des serveurs web

On obtient un environnement de développement logiciel prêt à l’emploi.

SaaS (Software-as-a-Service) : fournit des couches applicatives centrées sur des usages spécifiques

Cela fournit directement un progiciel sans les contraintes de sa maintenance.

Les autres niveaux de virtualisation

  • CaaS (Container-as-a-Service) : fournit des conteneurs applicatifs et en simplifie le déploiement et la gestion ;
  • DaaS (Data-as-a-Service) : fournit un dépôt de donnée sans se soucier de son stockage ;
  • FaaS (Function-as-a-Service) : fournit un environnement d’exécution pour un développement propriétaire sans se soucier de comment il est hébergé (concept du Serverless).

La migration complète d’une application vers le Cloud n’est pas toujours possible ou souhaitable. Dans ce cas, des scénarios hybrides sont envisagés. Cela suppose d’ouvrir des flux réseau entre l’infrastructure On Premises et le Cloud Azure pour rendre visibles les systèmes propres à l’entreprise aux services Azure et inversement.

Vous avez dit cloud ready ?

Les conditions de portage d’une application vers le Cloud

Toute application peut être portée vers le Cloud mais nécessitera des travaux différents en fonction de son architecture et des gains visés.

Sur des architectures N Tiers classiques, il pourrait être tentant de reproduire à l’identique les composants en IaaS. Par exemple, un serveur web, un serveur de base de données et un serveur d’authentification. En réalité, sauf contraintes particulières, il convient de profiter au maximum de l’abstraction offerte par le Cloud. Ainsi le serveur de base de données peut être remplacé par un service de bases de données en PaaS. Il en sera de même pour le serveur Web et le serveur d’authentification. En conséquence, la nouvelle application ne repose plus sur des serveurs mais sur des usages de serveur.

Une application dite « Cloud Ready » repose donc sur les postulats suivants :

  • Aucune mise en production (au sens traditionnel) n’est véritablement nécessaire car elle repose sur une infrastructure prête à l’emploi ;
  • Elle ne tombe jamais car l’infrastructure qui la sous-tend ne tombe jamais.

Une application externalisée sécurisante?

Cette approche, en totale contradiction avec la « culture » informatique traditionnelle, se voit souvent mal interprétée par les professionnels. Ils estiment souvent qu’une application externalisée, l’est dans un environnement dangereux. En réalité, l’application est sécurisée dans son fonctionnement et son intégrité, dans un environnement maîtrisé par un tierce partenaire.

On ne pense plus l’application en termes de performances d’un système. Sa conception se focalise sur l’expérience utilisateur sur et la plus-value métier apportée. En s’affranchissant des conditions matérielles, les efforts de développement peuvent se concentrer sur plusieurs éléments:

  • la satisfaction des utilisateurs finaux,
  • leur adhérence à l’outil et donc leur productivité,
  • l’attractivité de l’application pour les clients, et donc sa réussite commerciale.

En se concentrant sur l’intelligence de leur fonctionnement en dehors de toute considération de limites matérielles, les applications « Cloud Ready » répondent mieux aux attentes et capitalisent sur le savoir-faire de design d’architectures efficaces.

Les méthodes de migration vers le Cloud

Toute migration d’application passe par l’investissement dans des outils, des ressources et du temps. Plusieurs aspects doivent être étudiés :

  • Quel est le motif principal de la migration ? Quelle finalité métier pour l’entreprise ?
  • A quel point cette migration sera prioritaire par rapport aux autres sujets ?
  • Quelle complexité va-t-on devoir gérer pour réussir la migration ?
  • L’application doit-elle être repensée, voire scindée ?

La liste des « 6 R » (méthodes de migrations d’une application vers le Cloud)

Au-delà de ces considérations, il existe principalement trois méthodes de migration d’une application vers le Cloud :

Rehosting ou Lift-and-Shift

Il s’agit de la transposition à l’identique de l’infrastructure « On Premises » vers une infrastructure équivalente dans le Cloud. Les serveurs physiques sont remplacés par des VMs, les connexions réseau par des brins virtuels, les boîtiers firewall par des règles de flux, etc. En apparence simple et rapide, cette méthode comporte néanmoins des écueils non perceptibles au départ. En effet, bien que des efforts soient économisés sur la refonte de l’application, la mise en place d’une IaaS ne sera jamais strictement équivalente. De plus, les particularités des VMs et des interconnexions virtuelles devront être prises en compte.

Replatforming

Ici il s’agit de remodeler la couche système de l’application pour la rendre compatible avec les services managés du Cloud. Pourquoi une telle approche ? Elle permet de bénéficier d’un nouvel environnement d’exécution qui profite des avantages d’automatisation et de scaling du Cloud sans avoir à changer l’architecture de l’application. Le Rehosting s’appuie sur des ressources fortement sollicitées et donc onéreuses. Le Replatforming, lui, est un premier pas vers l’usage « Pay-as-you-go » offert par le Cloud : l’environnement d’exécution, et donc son coût, s’adapte à l’usage de l’application.

Refactoring

Lorsque l’on souhaite tirer pleinement parti de l’élasticité et de la richesse des fonctionnalités du Cloud Azure, l’application doit être transformée. Son architecture doit être adaptée sans toutefois être complètement sacrifiée. Cette approche longue et complexe doit trouver le subtil équilibre entre l’exploitation optimisée des ressources Azure et la préservation du cœur historique de l’application.

Les trois autres méthodes n’impliquent pas de migration en tant que telle.

Repurchasing 

On remplace l’application existante par une solutions SaaS.

Retire

On considère que l’application n’a plus cours et qu’il faut la décommissionner.

Retain

On juge que les efforts requis sont trop importants et on garde l’application en l’état.

Deux autres approches

Deux autres approches méritent d’être mentionnées car elles vont avoir tendance à devenir la « norme » avec la disparition progressive du « legacy » :

Rearchitecturing

Est-il finalement, sensé de vouloir une application traditionnellement monolithique vers le Cloud ?

Cette approche prône une véritable refonte, pour bénéficier des architectures modernes, distribuées et orientées en micro-services. Les efforts sont importants et les risques accrus pour obtenir une application « future-proof ». En effet, une fois transposée de la sorte, l’application tire pleinement parti des avantages du Cloud. Elle devient résiliente, évolutive et ne coûte que ce qu’elle consomme.

Rebuild

Dans certains cas, la refonte peut s’avérer inappropriée si la dette technique est trop importante ou si les compétences sur les langages et systèmes utilisés se raréfient. Dans de tels contextes, mieux vaut repartir du périmètre fonctionnel initialement prévu. On recréera des spécifications techniques en profitant des langages et outils modernes. Cette méthode qui peut paraître la plus coûteuse peut, in fine, s’avérer la plus efficace et la plus maintenable. Le résultat ce sont des compétences reconnues, des outils fiables et pérennes et un socle applicatif résilient.

Une migration d’application vers le Cloud revêt tous les aspects de la gestion du changement et de sa conduite. Il est primordial d’adopter une approche holistique pour prendre les changements organisationnels portant sur les équipes, les processus et les technologies.

Les étapes d’une migration réussie

Définir une stratégie

Comme pour n’importe quel projet, la première étape consiste à définir clairement la stratégie du changement. Est-ce que l’on envisage de « porter » l’application telle qu’elle est vers le Cloud Azure? Est-il plus important de la moderniser?

Les enjeux métiers portés par l’application doivent guider les priorités et les efforts pour ce changement.

Par ailleurs, une telle migration impacte et implique différents services et différentes équipes. L’équipe projet doit donc être pluridisciplinaire de préférence. Plus sa composition reflètera les parties prenantes, plus les orientations prises couvriront les risques inhérents à la migration.

Enfin, une migration vers le Cloud Azure nécessite une bonne compréhension des capacités et contraintes des services en ligne. Un partenaire de migration apporte un réel soutien et une expertise garante de sécuriser le processus de migration tout le long du projet.

Planifier la migration

Une bonne planification passe par une bonne vision de l’existant. Il existe des outils d’analyse de migration cloud qui inventorient les infrastructures et environnements en propre pour dégager des métriques de dimensionnement, de performances et, in fine, des estimations de coûts. De telles métriques permettent de se projeter sur le TCO du déploiement Azure, comparé au TCO d’un déploiement local classique.

Calculateur de TCO Azure : https://azure.microsoft.com/fr-fr/pricing/tco/calculator/ 

En outre, une feuille de route doit être mise sur pied et affinée pour cerner clairement les jalons, les chronologies ainsi que les ressources et le financement nécessaire au bon déroulement de la migration.

Le besoin constant d’évolutivité

Une fois la migration menée à bien, la nouvelle application porte ses fruits (pour ne citer que quelques-uns) :

  • Coûts optimisés : seules les ressources strictement nécessaires sont sollicitées ;
  • Fiabilité : la garantie de MCO et l’élasticité offerte par les services Azure assure que l’application garde sa continuité de service en toute circonstance et reste performante en cas de pic de charge ;
  • Administration simplifiée : toutes les ressources sont désormais gérées dans l’écosystème Azure qui offre un outillage riche pour la surveillance et l’administration des infrastructures ;
  • Adaptabilité : si l’application a également été repensée pour adopter les patterns d’architecture modernes (découplage interfaces/services métier, configuration distribuée, micro services, communication asynchrone, etc.), souvent liés aux scénarios Cloud, elle est en capacité de s’adapter facilement aux besoins d’évolution.

Une application moderne, migrée sur le Cloud Azure, apporte donc un certain nombre d’avantages immédiatement perceptibles. Mais cet état se suffit-il pour autant ? Bien sûr que non. Toute application doit tôt ou tard évoluer car elle sert dans un contexte irrémédiablement changeant :

  • Les processus métier
  • Les équipes utilisatrices
  • Le business de l’entreprise
  • Les technologies

Le Cloud Azure s’enrichit et se transforme continuellement justement pour offrir les meilleurs services en ligne au monde professionnel et ainsi rester un levier important de compétitivité.

Pour ce faire, l’expertise d’un partenaire Cloud Azure demeure essentielle pour orienter sur des choix pertinents et garantir de tirer le meilleur parti de l’approche « As A Service ».

Un projet? Des questions? N’hésitez pas à nous contacter à l’adresse contact@neos-sdi.com.

Grégoire Blanc – Architecte technique chez Neos-SDI