Les deux grandes branches de l’informatique sont le développement et le déploiement d’une application. Ces deux branches regroupent des métiers très différents. Les développeurs (Dev) se concentrent sur l’écriture d’une application qui correspond au besoin émis par le client. Les opérationnels (Ops) ont en charge la mise en place et l’accès de l’application aux utilisateurs finaux.
Lors de mes articles sur la création d’applications, j’ai évoqué la démarche DevOps. Il s’agit du cycle de vie de l’application : de sa conception à son utilisation. La version 1.0 d’une application installée, elle évolue en fonction des retours des utilisateurs ou des fonctionnalités prévues. Le cycle DevOps est l’organisation mise en place pour que développeurs et opérationnels s’accordent pour permettre cela.
L’opérationnel a pour contrainte de s’assurer que la nouvelle version transmise par le développeur ne risque pas d’interrompre le service promis aux utilisateurs. Ainsi, il demande toujours plus de tests au développeur avant de déployer la version 1.1. De plus, il doit adapter les serveurs sur lesquels tournent l’application à l’audience. Plus il y a d’utilisateurs et plus il faut de serveurs pour rendre le même service.
On l’a vu précédemment, les conteneurs permettent de créer facilement des environnements de test et de déployer sur de nouveaux serveurs une application. Le travail des Ops est ainsi simplifié. Ils n’ont plus besoin d’installer et de mettre à jour les logiciels. Cette charge retombe au Dev. De plus, l’ajout de serveurs pour répondre à une forte demande est automatisée avec des outils comme Kubernetes.
Peut-on aller plus loin et se passer des Ops ? Au final, leur travail est devenu administratif : acheter ou louer des serveurs, déployer/mettre à jour des conteneurs, installer des mises à jour pour corriger les failles de sécurité des systèmes. Je caricature mais il est vrai que la part créative a quasiment disparu dans cette branche. Les grands acteurs d’Internet répondent : oui. Leur solution : le serverless.
Le terme est étrange. Une application informatique qui prend en compte les problématiques de sécurité nécessite une partie serveur (au minimum pour s’assurer de l’authenticité de l’application, des droits des utilisateurs, …). Il y a donc un serveur. Les géants du Net proposent d’exécuter les applications créées par les Dev sur leurs serveurs. Ils se chargent alors de l’activité opérationnelle.
Cette solution permet de se passer d’opérationnels. Les Devs n’ont plus à s’inquiéter de voir les mises à jour applicatives retardées par une contrainte technique ou sécuritaire imposée par les Ops. Google, Microsoft, Amazon s’assurent que l’application sera toujours disponible. En contrepartie, ils facturent aux ressources consommées sur leurs serveurs : réseaux, mémoire, stockage, temps d’exécution.
La promesse est belle. Même les comptables s’y retrouvent puisque cela économise des postes et des équipements informatiques. La pratique est plus nuancée. Le serverless ne s’adresse pas à toutes les applications. Celles-ci doivent proposer des services qui s’exécutent rapidement. Tout le monde veut avoir une réponse rapide. Mais certains domaines sont exclus : calcul scientifique, traitement d’image, …
Un autre problème de cette révolution est que les Devs doivent utiliser les technologies choisies par les plateformes serverless. La plupart des langages modernes sont présents. De plus, les plateformes proposent des services, souvent gratuits, qui simplifient des problématiques comme le stockage de données, l’authentification des utilisateurs, … gratuitement. Et le piège se referme.
Une application serverless déployée chez Amazon ne peut être migrée du jour au lendemain sur une autre plateforme. Il faut alors repasser par la case Dev pour la rendre compatible à la nouvelle plateforme, Azure par exemple. De plus, si les conditions de services changent, les Devs ou les comptables doivent suivre. Les Devs perdent la maîtrise des données utilisateurs et des traitements alors qu’avant, ils se retournaient vers les Ops prévoyants.
Cette technologie est donc pleine de promesses et attire de nombreux développeurs. Mais elle est encore incomplète. Le manque d’homogénéité entre les différents acteurs reste un frein à son adoption. Sur les aspects techniques, elle semble aussi loin d’être performante. Toutefois, il est probable que dans les années à venir, ses freins soient levés et qu’elle devienne la norme.
Si vous voulez approfondir les débats, je vous conseille cette vidéo Clash. Digne de la confrontation entre Fatal Bazooka et Chris Prolls, nos deux prétendants débattent sur la meilleure stratégie de déploiement d’une application.