"Adapt or die", comment migrer vers le cloud?
"Adapt or die" (adapter ou mourir) est une expression que l'on retrouve régulièrement dans les articles de presse anglosaxone traitant des problématiques de passage d'applications traditionnelles à la sauce "Cloud". Un exemple frappant, utilisé pour la promotion de la plate-forme Cloud Foundry, est celui de Netflix qui a su dépasser et provoquer la faillite de son concurrent direct Blockbuster, leader sur le marché de la location de vidéo depuis des années, en seulement... 2 ans.
En effet, le monde change. Il change vite. Le changement s'accélère. Les entreprises ont besoin d'évoluer pour répondre aux demandes permanentes de leurs clients. Ceux-ci veulent des réponses à leurs besoins en un claquement de doigts. L'industrie du logiciel n'échappe bien entendu pas à cette tendance forte de la société aux envies instantanées. D'autant plus que toute entreprise est vouée à devenir une entreprise logicielle si l'on en croit le directeur général de Microsoft.
Mais alors, est-ce simple d'adapter un logiciel traditionnel pour que celui-ci fonctionne dans la cloud ? Voici quelques conseils qui devraient permettre de maximiser les chances de réussite :
Acquérir de nouvelles compétences
Avant de débuter un projet de migration d'un logiciel vers le cloud. Il peut être nécessaire de se former à de nouvelles technologies ou mettre à jour ses connaissances. Par exemple, un PaaS (c'est à dire une plateforme) comme Cloud Foundry demande un investissement en temps si l'on souhaite bien comprendre ses principes fondamentaux et comment l'utiliser efficacement. Il est possible de vous familiariser car de multiples fournisseurs vous permettent d'essayer gratuitement leur plateforme. Pour en citer quelques unes:
Il est aussi indispensable d'enrichir sa culture du monde cloud en passant par exemple par l'incontournable recueil des meilleurs pratiques de développement d'applications cloud, "The 12-Factor App". Si vous êtes développeur Java, la découverte du travail fait par les équipes du framework Spring peut vous ouvrir de nouvelles portes quant à l'implémentation rapide d'application.
Avancer par étapes
Lorsque l'on débute un projet de portage de logiciel vers le cloud, on peut très vite être submergé par une floppée de concepts et problématiques nouvelles. Il n'est alors pas rare d'être perdu et de ne pas savoir par où commencer. Il est aussi facile de foncer tête baissée sur un aspect particulier en oubliant l'objectif global. Aussi, une recommandation à suivre serait de ne pas adopter une approche de type "Big-bang" en voulant tout changer en même temps. Par exemple, l'architecte Martin Flower n'hésite pas à préconiser de débuter un projet en gardant une approche monolithique, puis de réfléchir à la transition vers une architecture microservices en fonction des besoins, du retour d'expérience et des demandes clientes.
Il est important de garder à l'esprit que le développement d'application dans le cloud doit passer par le cycle: construction, exécution, apprentissage. A chaque fin de cycle, on peut alors rectifier ce qui ne va pas et répondre à de nouveaux besoins. Les techniques liées à l'architecture évolutive permettent de faire face à ces défis en réagissant rapidement et de manière incrémentale.
Embrasser le changement
Les changements, voire les bouleversements, sont multiples et de nature différente lorsque l'on travaille sur une application cloud. D'un point de vue organisationnel déjà, la ou les équipes doivent être préparées a travaillé avec agilité avec un objectif à atteindre: être en capacité de pouvoir déployer de manière continue, via un pipeline d'intégration par exemple. Le cycle de release ne sera plus de l'ordre du mois ou même d'années. On parlera désormais de jours ou de minutes (chez Amazon, on parle de secondes).
Au niveau technique, une application ne pourra pas être déployée telle quelle dans un environnement cloud si elle ne respecte pas un minimum de critères, sous peine d'aller à la catastrophe. Pour nous aider, il existe un modèle de maturité permettant de débuter un projet de migration, puis de l'optimiser petit à petit jusqu'à en faire éventuellement une application dîte "cloud-native". La première étape nécessite par exemple de vérifier qu'il n'y a pas d'accès permanent au système de fichiers, que l'application ne repose pas sur des dépendances implicites ou encore que l'adhésion à l'environnement de déploiement est respectée.
J'espère que ces quelques informations et conseils vous auront permis de mieux appréhender la stratégie à adopter pour vous préparer et emprunter un chemin sûr vers le déploiement d'une application saine et robuste.
Références:
Satya Nadella: Every business will be a software business
How Can I Try Out Cloud Foundry?
12-Factor App-Style Configuration with Spring
Microservices as an Evolutionary Architecture