On vous avait dit que Kubernetes serait la clé pour entrer dans le nirvana du multicloud ? Vous pensiez que Kubernetes vous offrirait la portabilité nécessaire pour déplacer des applications de manière transparente entre les clouds, qu'elles soient exécutées dans votre datacenter ou dans un cloud public ? Malheureusement, il faut se rendre à la réalité : les fournisseurs ont promis toutes sortes de choses magiques sur Kubernetes et la portabilité, et Gartner vient justement de clarifier le sujet. Comme l'écrit son analyste Marco Meinardi, à la question de savoir si les entreprises devraient adopter « Kubernetes pour rendre leurs applications portables… la réponse est : non ». La raison n’est pas que Kubernetes ne peut pas être utilisé pour rendre les applications portables. Oui, la plate-forme en est capable. Mais la nature de cette portabilité ne s’accorde pas avec la conception générale qu’ont les entreprises de cette portabilité. Alors comment faut-il comprendre la portabilité de Kubernetes ?

Les bonnes et les mauvaises raisons

D’une certaine façon, l'idée même de multicloud n’est pas bonne. Certes, comme il le reconnaît, on pourrait le taxer de partialité puisqu’il travaille lui-même pour un fournisseur de services clouds (AWS). Cependant, il se plaît à penser que son préjugé contre le multicloud, la pensée magique de portabilité des applications, résulte du fait que c'est une très mauvaise idée. Comme il l’a écrit bien avant de rejoindre AWS, « la promotion du multicloud par les fournisseurs n’est que de la poudre aux yeux, alors que les clients restent bloqués dans des stratégies clouds du plus petit dénominateur commun, stratégies pour lesquelles ils ont dépensé des sommes astronomiques ». Et il n’est pas le seul à défendre ce point de vue. Corey Quinn, du Duckbill Group, qui a fait de la dénonciation des mauvaises pratiques IT sa spécialité, estime que le multicloud est « la pire des pratiques » pour une multitude de raisons. Comme il l'a écrit : « L'idée de créer des charges de travail qui peuvent être exécutées de façon transparente par n'importe quel fournisseur de cloud ou par ses propres datacenters avec la même facilité... est convaincante et je serais le premier à m’en réjouir. Cependant, c'est aussi pratique que de demander à ses développeurs « d’écrire du code sans bogues » - ou d'essayer de trouver la vache sphérique promise par les modèles scientifiques très simplistes, alors qu’en fait, c’est beaucoup plus compliqué qu'il n'y paraît ».

Mais revenons à Gartner. Comme le dit Marco Meinardi, « les bonnes raisons d'utiliser Kubernetes sont nombreuses ». Sauf que la portabilité n’en fait pas partie : « Les enquêtes montrent que la probabilité de transférer les applications entre les fournisseurs de services en ligne est très faible. Une fois déployées chez un fournisseur, les applications ont tendance à y rester. Cela est dû au fait qu’il est difficile - et coûteux - de déplacer les data lakes qui finissent donc par agir comme des centres de gravité ». L'analyste de Gartner, Kurt Marko, fournit quelques indices sur ces difficultés, expliquant que « le déplacement transparent et inconscient de la charge de travail n'est possible que sur des plates-formes de type « Vanilla container » pour les applications les plus simples ». Il énumère ensuite une série d'obstacles qui entravent la portabilité basée sur Kubernetes, notamment la dépendance vis-à-vis des fonctionnalités natives du cloud (bases de données managées, fonctions serverless, etc.), la difficulté de fédérer les politiques d'identité et de sécurité des utilisateurs sur les différentes plates-formes, et bien d'autres choses encore. Donc, si, d’après Corey Quinn, le multi-cloud n'est pas nécessairement la meilleure des idées, et si Kubernetes n’est pas la bonne approche pour cela, même si c'était une très bonne idée, de l’avis de Kurt Marko, alors quel type de portabilité pourrait offrir Kubernetes ?

La portabilité, une affaire de personnes

L’idée n’est pas de dire que l’on ne peut pas architecturer une application de manière à la rendre portable à travers plusieurs clouds. Comme le fait remarquer Peter Benjamin, un ingénieur logiciel InfoSec, c'est possible, et cette portabilité est plus logique si l'on considère les échéances en termes d'années plutôt que de jours ou de semaines, comme l'affirme pour sa part le technologue Paul Nash. Miles Ward, CTO du consultant cloud SADA, est du même avis : « Nos clients ne veulent pas réévaluer leur stratégie toutes les semaines. Ils veulent juste que ce soit facile si le paysage change. Ils ne disent pas que ce n'est pas courant (pour les raisons identifiées ci-dessus), ni que ce n'est pas non plus aussi important que d'autres aspects de la portabilité ». Mais c’est peut-être Alexis Richardson, CEO de Weaveworks, qui a exprimé le mieux la façon de considérer la portabilité : « La vraie question est celle de la « portabilité des compétences » liée à l'utilisation d'un modèle d'exploitation et d'une chaîne d'outils standard. Les grandes entreprises veulent que les développeurs utilisent des méthodes de travail standard, car cela réduit les coûts de formation et permet de faire travailler le personnel sur différents projets sans heurt. Il est également plus facile et moins coûteux d'appliquer une politique si votre ou vos « plates-formes » sont basées sur le même set d'outils natifs du cloud ».

Ce point de vue est partagé par le co-fondateur de Knative, Matt Moore qui pense que « le véritable avantage de la solution se trouve dans la portabilité des concepts et des outils ». Ou, comme le résume joliment EJ Campbell, vice-président de Engineering, Sports and Production, « c'est une bonne chose d'avoir des compétences transférables ». Il est important de noter que ces compétences aident à la fois les employeurs et les employés. Kubernetes ne facilite peut-être pas le transfert d'applications d'un environnement à l'autre (sur site ou dans le cloud), mais il permet de fixer un niveau déterminé de compétences et de concepts qu'un développeur peut utiliser dans chacun de ces environnements. Ou, comme le dit Darren Shepherd, CTO et co-fondateur de Rancher Labs, « la portabilité, c’est le fait que la même approche peut être utilisée indépendamment du cloud, du datacenter, de la périphérie, de la machine portable, du stateless, du stateful, de l’IA/ML, etc. Vu ainsi, Kubernetes est incroyablement important, car il permet une « portabilité des personnes », bénéfique pour les individus et les entreprises. Il ne s’agit plus de vanter ici la portabilité magique des applications. C'est quelque chose de bien mieux.