La portabilité dans le cloud a un jour semblé être une avancée révolutionnaire. Les attentes étaient élevées lors du lancement d'Amazon S3 en 2006 et d'autres services similaires. Les fournisseurs promettaient la possibilité de migrer les applications entre différents services de manière transparente. Oh, quel monde merveilleux ce serait !
Et de brosser un avenir dans lequel les entreprises pourraient sans effort passer à des fournisseurs offrant de meilleurs prix ou capacités. Malgré l'enthousiasme initial entourant le modèle de cloud public, l'informatique « en tant que service » et « à la demande », la promesse de portabilité s'est avérée insaisissable et coûteuse.
Dès 2017, j'avais souligné que la portabilité des applications cloud relevait de la science-fiction. Aujourd'hui, elle reste complexe et coûteuse pour, essentiellement, les mêmes raisons qu'à l'époque. Bien sûr, tout est possible dans l'informatique pour peu que votre entreprise ait les poches profondes et soit prête à dépenser sans compter. Mais peu de DSI disposent d'un chéquier ouvert, de sorte que le principal problème est que la portabilité des applications d'un cloud à l'autre demande beaucoup plus de travail que ce que les fournisseurs avaient laissé espérer.
La voie du conteneur et ses limites
Le défi fondamental réside dans les différences inhérentes entre les cloud. Chaque fournisseur fonctionne avec des API, des protocoles et des ensembles de fonctionnalités uniques, ce qui crée des obstacles techniques importants à une migration. Ce qui, finalement, classe les services cloud parmi les fournisseurs IT traditionnels. Comme le souligne Roy Illsley, analyste en chef d'Omdia, les environnements cloud et sur site nécessitent tous deux différents travaux d'adaptation des applications aux nouvelles plateformes. Ces efforts peuvent aller d'ajustements mineurs à des réécritures presque complètes du code de l'application, en fonction des systèmes d'exploitation et des langages de programmation. Ce constat ne devrait pas être surprenant, il l'est pourtant pour de nombreuses personnes qui migrent vers l'informatique dématérialisée.
Bien que le transfert d'applications fonctionnant dans des VM puisse sembler gérable, il diminue certains avantages du cloud, notamment la flexibilité des mises à l'échelle. En ce qui concerne les applications « cloud-native », conçues spécifiquement pour les environnements cloud, la réalité est tout aussi complexe. Bien que Kubernetes soit un standard utilisé par tous les fournisseurs, grands et petits, déplacer des applications construites sur cette technologie d'un cloud à l'autre nécessite souvent de prendre en compte les variations dans les configurations.
En réalité, ces migrations ne sont jamais aussi faciles que le laissent entendre les promoteurs des conteneurs et de Kubernetes. J'ai moi-même été impliqué dans plusieurs projets de développement basés sur des conteneurs qui ont déraillé parce que les responsables informatiques n'avaient pas compris cette évidence.
Faut-il encore chasser le mirage de la portabilité ?
Certains experts préconisent toujours la recherche de la portabilité du cloud en raison de ses avantages stratégiques. Selon Sid Nag, de Gartner, une certaine portabilité permet aux entreprises d'atténuer les risques de verrouillage à l'offre de tel ou tel fournisseur. Toutefois, en la matière, d'autres leviers sont entre les mains des entreprises, comme leur pouvoir de négociation lors des renouvellements de contrats et les choix stratégiques permettent de se protéger d'une dépendance excessive à l'égard d'un unique fournisseur.
La portabilité exige une planification minutieuse et une anticipation dans les choix d'architecture afin de minimiser les dépendances qui lient les applications à des services cloud spécifiques. Cela implique généralement d'adopter l'approche du plus petit dénominateur commun : exécuter partout, c'est aussi n'exécuter nulle part correctement. Des problèmes de performance et d'optimisation se posent souvent, rendant ces applications « portables » trop coûteuses à exploiter, même dans le cloud.
L'absence de normes formelles en matière de cloud place les questions de compatibilité et de garantie de fonctionnement sur différents environnements entre les mains des entreprises. Les services spécifiques aux fournisseurs poussent souvent les développeurs à concevoir des applications optimisées pour des écosystèmes comme AWS ou Azure. La migration des données ajoute une autre couche de complexité. La portabilité des données implique souvent de déplacer les données en même temps que les applications, ce qui peut s'avérer techniquement difficile et coûteux.
Quelques pistes pour les entreprises
Face à ce tableau, quelles sont les leviers dont disposent, malgré tout, les entreprises ? Ces dernières ont plusieurs options pour minimiser les coûts associés aux difficultés de la portabilité dans le cloud.
Déployer des applications chez plusieurs fournisseurs. Les entreprises peuvent déployer une application chez plusieurs fournisseurs de cloud afin de répartir les risques et de réduire la dépendance à l'égard d'un seul acteur. Cette stratégie offre également un avantage lors de la négociation des conditions contractuelles ou de la migration des services. Elle permet d'éviter de se retrouver pieds et poings liés à un fournisseur et d'optimiser les coûts en tirant parti des services les plus rentables proposés ici ou là.
Cela dit, vous auriez tort de penser que le multicloud est la réponse au manque de portabilité. Vous devrez attacher votre application à des fonctions natives afin de les optimiser pour un fournisseur de cloud spécifique. Comme je l'ai déjà dit, la portabilité a déraillé et vous n'avez pas réellement de bonnes cartes. L'approche « fournisseurs multiples » minimise l'impact négatif, mais ne résout en rien le problème de la portabilité.
Construire des applications avec la portabilité à l'esprit. Cette approche implique des technologies de conteneurisation, telles que Docker, et des plateformes d'orchestration, telles que Kubernetes. Le fait d'abstraire les applications de l'infrastructure sous-jacente garantit leur compatibilité avec de multiples environnements. En outre, le fait d'éviter les services propriétaires et d'opter pour des outils open source peut améliorer la portabilité et réduire les coûts associés aux reconfigurations ou aux migrations. Malgré tout, et encore une fois, la plupart des entreprises ne peuvent pas éviter d'utiliser les services natifs d'un fournisseur, nécessaires pour permettre au conteneur de fonctionner efficacement et à l'application de répondre aux exigences de l'entreprise.
Utiliser une gestion efficace des données pour minimiser les coûts de transition. Les entreprises devraient envisager de structurer leurs données pour faciliter le passage d'un cloud à l'autre tout en tenant compte des frais de sortie des données. L'utilisation d'un cloud hybride ou d'une solution de transfert de cloud à cloud peut également contribuer à maintenir un accès transparent aux données et à réduire les coûts associés. Designer l'architecture de données en gardant la portabilité à l'esprit évite également des processus de migration de données coûteux et compliqués.
Voici un conseil que je donne souvent : ne tenez pas compte de la portabilité des applications cloud lorsque vous les créez. Cela ne fait qu'ajouter des coûts et des risques, et la plupart des applications ne quitteront jamais la plateforme cloud qui les a accueillies initialement.
J'entends souvent dire que les entreprises veulent pouvoir déménager si le fournisseur fait faillite, n'est plus fiable ou augmente ses prix. Ces risques sont réels, mais peu probables. Toutes les applications peuvent être déplacées si l'on y consacre suffisamment d'argent. Vous constaterez que le coût du risque d'un déménagement d'applications est bien moindre que celui de la portabilité dans le cloud.
Relever le défi de la portabilité des applications cloud
La portabilité des applications entre fournisseurs de cloud public n'est ni facile, ni bon marché. Voici quelques approches pour essayer de contourner ces difficultés.