La nouvelle folie container

La technologie des containers arrive à maturité et devient la coqueluche des services informatiques. Pas si jeunes que cela, les containers impliquent de nouvelles contraintes et de nouvelles pratiques.

Les containers envahissent les infrastructures informatiques. Leur utilisation dans les entreprises explose. Selon un rapport de novembre dernier de la Cloud Native Computing Foundation (CNCF), 54% des entreprises utilisent des containers, principalement celles comptant plus de cent salariĂ©s : 92 % des rĂ©pondants utilisent cette technologie en production. Cela reprĂ©sente 300 % de croissance par rapport Ă  l’utilisation des containers en 2016 : 91 % orchestrent les containers avec Kubernetes dont 83 % en production ; 55 % font fonctionner des applications stateful dans les containers; 12 % Ă©valuent cette possibilitĂ© et la mĂȘme proportion pense le faire dans les douze mois Ă  venir. Les rĂ©pondants indiquent aussi qu’ils ont recours Ă  81 % Ă  plus de vingt machines virtuelles ou physiques pour leurs environnements en containers. À 41 %, la complexitĂ© et le changement sont mis en avant comme les principaux freins Ă  de plus larges dĂ©ploiements, ce qui peut ĂȘtre une explication Ă  un recours accru au Cloud public (64 %) en lĂ©gĂšre augmentation depuis l’annĂ©e prĂ©cĂ©dente.

Les différentes fonctions de Charm de Canonical, qui assure le contrÎle du déploiement et des mises à jour des composants de Kubernetes.

Une Ă©tude de Datadog, un Ă©diteur de solutions de monitoring et de supervision des environnements cloud natifs, confirme ces chiffres. Plus de la moitiĂ© des environnements en containers fonctionnent sous Kubernetes. Et plus de 90% des containers sont orchestrĂ©s par Kubernetes ou d’autres outils comme Amazon ECS, Nomad ou Mesos. Le marchĂ© global des containers applicatifs devrait frĂŽler les 5 milliards de dollars en 2023, avec une croissance moyenne pondĂ©rĂ©e annuelle de 39%.

Le schĂ©ma montre le dĂ©tail d’un dĂ©ploiement, simple, sur Kubernetes avec la gestion des pods, des services rĂ©seau. Notez l’utilisation de namespaces pour cloisonner les applications.

Une Ă©volution de la virtualisation?

Si on a longtemps opposĂ© les technologies de virtualisation et de containerisation, Christophe Jauffret, architecte solutions chez Nutanix, voit une complĂ©mentaritĂ© entre les deux technologies : « 90% des containers tournent sur des machines virtuelles, il n’y a pas de collision entre les deux. La virtualisation apportait une abstraction du matĂ©riel et le container celle du systĂšme d’exploitation. Mais si cela allĂšge au niveau du systĂšme d’exploitation il faut bien les faire tourner sur quelque chose !» StĂ©phane Berthaud, CTO de Veeam France, va dans le mĂȘme sens : « Est-ce la prochaine vague ? Pour l’instant c’est complĂ©mentaire et il n’y aura pas de remplacement total. Tout ce qui pourra ĂȘtre containerisĂ© le sera. C’est une Ă©volution, c’est de la virtualisation optimisĂ©e. Avec la virtualisation du systĂšme d’exploitation cela devient de la virtualisation au rĂ©gime minceur en supprimant tout ce qui ne sert Ă  rien mais cela implique des changements d’architecture et de maniĂšre de concevoir les applications.»

Cela amĂšne plusieurs avantages. Le premier est d’ĂȘtre beaucoup plus efficace que les hyperviseurs et d’optimiser les ressources utilisĂ©es. DeuxiĂšme force du container, la portabilitĂ©. Le conteneur crĂ©Ă© est cohĂ©rent et ne souffrira pas d’ĂȘtre exĂ©cutĂ© sur un autre environnement. TroisiĂšmement, la conteneurisation permet aux dĂ©veloppeurs de crĂ©er et de dĂ©ployer des applications plus rapidement et de maniĂšre plus sĂ©curisĂ©e. Avec les mĂ©thodes traditionnelles, le code est dĂ©veloppĂ© dans un environnement informatique spĂ©cifique. Lorsqu’il est transfĂ©rĂ© vers un nouvel emplacement, cet environnement entraĂźne souvent des bogues et des erreurs. La conteneurisation Ă©limine ce problĂšme en regroupant le code de l’application avec les fichiers de configuration, les bibliothĂšques et les dĂ©pendances associĂ©s nĂ©cessaires Ă  son exĂ©cution. En consĂ©quence, le dĂ©ploiement des mises Ă  jour et des correctifs ne devra ĂȘtre effectuĂ© qu’une seule fois puisque le noyau du systĂšme d’exploitation est dĂ©sormais commun.

Pour les applications cloud natives

« La prioritĂ© a changĂ© et l’application dicte tout et les mĂ©tiers imposent leur rythme et leurs besoins », constate StĂ©phane Berthaud. Pour y rĂ©pondre les entreprises se tournent vers les micro-services. PlutĂŽt qu’une application monolithique comme nous la connaissions jusqu’à prĂ©sent, elle se dĂ©compose en diffĂ©rents services ou fonctions. Ils structurent ainsi l’application entre diffĂ©rents modules faiblement couplĂ©s, un hĂ©ritage des temps hĂ©roĂŻques de la Service Oriented Architecture (SOA) du dĂ©but des annĂ©es 80 du siĂšcle dernier. Ces services communiquent entre eux par une API, REST (Representational State Transfer) le plus souvent. Avec un tel niveau de modularitĂ©, les services individuels peuvent ĂȘtre dĂ©veloppĂ©s plus rapidement et ils sont beaucoup plus faciles Ă  comprendre et Ă  maintenir. Cela s’accompagne de nouvelles mĂ©thodes de travail Ă  la fois pour les dĂ©veloppeurs et les Ă©quipes de production. Selon StĂ©phane Berthaud, pour les dĂ©veloppeurs c’est « un peu magique et ce qui va ĂȘtre compliquĂ© va ĂȘtre le dimensionnement et la gestion de l’infrastructure derriĂšre, surtout si on veut le faire sur site. Dans le Cloud les capacitĂ©s sont quasiment infinies ».

Stateless vs stateful

Au moment de leur Ă©mergence, les containers Ă©taient stateless. Dans ce cas un processus ou une application est indĂ©pendant. Il ne stocke pas de donnĂ©es et ne fait rĂ©fĂ©rence Ă  aucune transaction passĂ©e. Chaque transaction est effectuĂ©e Ă  partir de rien, comme si c’était la premiĂšre fois. Au fil du temps, certains ont pensĂ© intĂ©ressant de les rendre stateful. Les applications et processus stateful, quant Ă  eux, peuvent ĂȘtre rĂ©utilisĂ©s indĂ©finiment.

Les plates-formes bancaires en ligne et les messageries en sont deux exemples. Les transactions prĂ©cĂ©dentes sont prises en compte et peuvent affecter la transaction actuelle. C’est pour cela que les applications stateful utilisent les mĂȘmes serveurs chaque fois qu’elles traitent une requĂȘte d’un utilisateur. Les applications ont ainsi profitĂ© de la flexibilitĂ© et de la rapiditĂ© des conteneurs, sans cesser de stocker des informations et du contexte. Selon le sondage prĂ©citĂ© rĂ©alisĂ© auprĂšs des utilisateurs de Datadog, 55% des personnes interrogĂ©es indiquent utiliser des applications stateful dans des containers en production ; 12% Ă©valuent cette possibilitĂ© et 11% indiquent vouloir le faire dans les douze prochains mois. GaĂ«tan Parisse, architecte cloud et DevSecOps chez Fabernovel, parle de ce qu’il constate chez ses clients : « Cela dĂ©bute souvent par un test qui continue Ă  vivre dans son coin et qui devient parfois critique, sans que cela fonctionne comme vraiment en production mais la demande est lĂ . On a mĂȘme vu des essais avec des bases Oracle ou Postgres. On se retrouve alors avec des plates-formes Ă  la criticitĂ© forte oĂč les donnĂ©es sont hypersensibles. Cela est souvent gĂ©rĂ© avec un peu tout et n’importe quoi et soit on perd en agilitĂ© soit on rencontre des problĂšmes de performance. Par ailleurs on a vu la containerisation de tout et n’importe quoi comme application oĂč le container remplaçait la machine virtuelle. Il faut reconnaĂźtre les limites dans certains cas et chercher oĂč sont les contraintes. En production cela reste dangereux.» Pour Christophe Auffret, chez Nutanix, d’un monde oĂč tout Ă©tait Ă©phĂ©mĂšre, on est passĂ© « Ă  un monde de la gestion applicative nĂ©cessitant de la persistance. Les Ă©diteurs de containers ont essayĂ© de s’adapter Ă  ce concept comme avec Docker Persistent Volume, puis cela a crĂ©Ă© la nĂ©cessitĂ© de stocker et de sauvegarder les donnĂ©es le plus souvent Ă  l’extĂ©rieur des containers et le besoin d’orchestrer tout cela. Il a fallu crĂ©er des outils et divers instruments pour le monitoring entre autres questions ».

Tout cela ne manque pas de crĂ©er des problĂšmes complexes autour principalement du dimensionnement de la solution, de l’architecture. Pour Christophe Jauffret, il y a beaucoup de travail Ă  faire « avec le choix de la bonne distribution. Il faut repenser l’infrastructure et toute la partie business pour obtenir la continuitĂ©, la haute disponibilitĂ©, la reprise aprĂšs incident, la sauvegarde. On assiste Ă  une course sur le marchĂ© pour les Ă©diteurs spĂ©cialisĂ©s dans la sauvegarde pour les containers. Les spĂ©cificitĂ©s de chaque plateforme fait que les choix pour les outils de sĂ©curitĂ© et de monitoring sont diffĂ©rents. Tout cela demande une approche diffĂ©rente.» GaĂ«tan Parisse, chez Fabernovel, a constatĂ©, lui, chez certains clients des applications littĂ©ralement tronçonnĂ©es sans gagner en efficacitĂ© avec des services effectuant les mĂȘmes choses. Ces entreprises se retrouvent avec les mĂȘmes problĂšmes que dans les dĂ©buts des machines virtuelles avec un contexte complĂštement Ă©clatĂ©.

La plate-forme Kubernetes chez Nutanix.

Le roi Kubernetes

En quelques annĂ©es l’orchestrateur nĂ© dans le giron de Google est devenue le standard de fait pour l’orchestration des environnements en containers. Pourtant l’outil ne partait pas favori face Ă  ses concurrents, comme Mesos ou Swarm. S’il Ă©tait rĂ©putĂ© puissant, il Ă©tait connu pour sa complexitĂ© et une courbe d’apprentissage plutĂŽt longue. Il a cependant fini par s’imposer. Christophe Jauffret explique : « Kubernetes est un orchestrateur qui gĂšre les entrĂ©es/sorties vers le matĂ©riel. Il est devenu une plaque tournante et connaĂźt un effet de mode pour ĂȘtre le standard de fait. D’ailleurs l’aspect complexe ne s’amĂ©liore pas avec la derniĂšre version et l’outil s’installe aussi faute de rĂ©elle compĂ©tition. Les principales alternatives s’appuient sur Kubernetes. Ce sont Rancher, Swarm, les balbutiements de Hashicorp Nomad. Les versions plus lĂ©gĂšres, comme K3S de Rancher ou MicroK8s de Canonical, sont intĂ©ressantes car elles enlĂšvent toutes les fonctions un peu lourdes en Ă©tant donc plus lĂ©gĂšres mais en respectant un grand nombre d’API.»

Plusieurs autres personnes interrogées pour cet article mettent en avant le rÎle primordial de Google dans cette montée en puissance avec maintenant une communauté large et trÚs active avec un écosystÚme trÚs vaste.

Alexandre Legris, directeur des services managĂ©s dans le Cloud et hĂ©bergement chez BSO, explique encore plus simplement cette hĂ©gĂ©monie actuelle : « Sous le nom de Borg, l’outil Ă©tait utilisĂ© depuis des annĂ©es en interne chez Google, quand il est passĂ© dans le domaine public, il avait simplement dix ans d’avance sur ses concurrents.»

De nombreuses distributions

Kubernetes connaĂźt maintenant de nombreuses distributions. La plupart se construisent autour du noyau open source de la solution complĂ©tĂ© par des add-ons avec pour objectif de simplifier et de faciliter les dĂ©ploiements des clusters Kubernetes. Vincent Barbelin, CTO chez Dell France, renchĂ©rit : « Avec PĂŻvotal, nous avons commencĂ© Ă  industrialiser la partie sur le dĂ©ploiement. Aujourd’hui nous poussons cette industrialisation Ă  l’extrĂȘme jusqu’au centre de donnĂ©es. Avec le projet Pacific nous proposons la gestion de cette industrialisation sur l’ensemble de la pile et les outils de tĂ©lĂ©mĂ©trie.» Cette multitude rend parfois difficile le choix d’une distribution pour rĂ©ellement trouver celle qui correspond le mieux aux besoins.

Sécurité = visibilité

La sĂ©curitĂ© est un point central des interrogations autour des environnements en containers. Vincent Barbelin situe le problĂšme Ă  plusieurs niveaux : « Le premier est dans le cycle de dĂ©veloppement avec le DevSecOps : 90% des failles sont prĂ©sentes dĂšs la crĂ©ation du code. Il faut tester aussi les mĂ©canismes du container et l’architecture. Un exemple intĂ©ressant mais pas pour tous est celui de Netflix avec sa stratĂ©gie Crazy Monkey qui simule tout type de pannes en pleine production. Il convient de vĂ©rifier que l’on n’ouvre pas de nouvelles failles avec les nouvelles versions du code qui peuvent ĂȘtre frĂ©quentes. Il convient d’ajouter en Est-Ouest de la micro-segmentation et du micro-firewalling.» Christophe Jauffret relĂšve qu’il est nĂ©cessaire de vĂ©rifier d’oĂč viennent les images des containers et comment elles sont maintenues. « Plus largement comme Ă  une Ă©poque de la virtualisation, on manque de visibilitĂ© et avoir beaucoup d’applications sur un seul OS entraĂźne cette perte de visibilitĂ©. Il faut donc ĂȘtre rigoureux afin de regagner en visibilitĂ© sur ces environnements complexes par le contrĂŽle des logs, du monitoring, du filtrage de flux, de la dĂ©tection d’intrusion avec de la granularitĂ© pour les firewalls pour savoir quel container parle Ă  tel container et appliquer de la micro-segmentation.» La question et les bonnes pratiques sont tellement larges qu’il faudrait y consacrer un article en soi. GaĂ«tan Parisse regrette quant Ă  lui que la problĂ©matique vient souvent bien aprĂšs le lancement des projets autour des containers et du dĂ©veloppement d’applications qui seront containerisĂ©es.

Serverless, la prochaine Ă©tape

Selon le rapport de la CNCF que nous avons dĂ©jĂ  citĂ©, 30% des entreprises utilisent dĂ©jĂ  la technologie serverless en production. Le serverless fait rĂ©fĂ©rence aux applications dont l’allocation et la gestion des ressources sont entiĂšrement gĂ©rĂ©es par le fournisseur de services cloud : 21 % l’évaluent et 12% veulent se lancer dans l’annĂ©e; 60% des utilisateurs le font sur une plate-forme hĂ©bergĂ©e; 13% utilisent des logiciels d’installation; 22% se servent des deux. La plate-forme dominante est AWS Lambda (57%) devant Google Cloud Functions (27%) et Azure Functions (24%). Pour les solutions installables, Knative prend la premiĂšre place, largement devant OpenFaaS et KubeLess.

SĂ©bastien Stormacq prĂȘche pour sa chapelle. Il est Ă©vangĂ©liste chez AWS (Principal Developer Advocate) et voit le serverless comme une Ă©volution vers une abstraction complĂšte oĂč l’on ne voit plus l’infrastructure sousjacente. Avec la possibilitĂ© de gĂ©rer un continuum dans les environnements containers Ă  travers des environnements hybrides ou de Cloud public tout en ayant un mĂȘme niveau de contrĂŽle et les mĂȘmes API. Avec cela les entreprises se dĂ©lestent de la complexitĂ© des environnements containers dont la plupart n’ont pas le besoin. D’autres interviewĂ©s de l’enquĂȘte distinguent aussi cette tendance et voient le serverless comme l’étape suivante de l’évolution des environnements en containers.

SĂ©bastien Stormacq observe que les utilisateurs les plus avancĂ©s dĂ©ploient des applications en «service mesh», mĂȘme s’il faut ĂȘtre pragmatique dans ce choix. Le rapport de la CNCF prĂ©voit une accĂ©lĂ©ration de l’adoption de cette technologie qui profitera probablement le plus aux outils Istio et Linkerd, qui suscitent l’intĂ©rĂȘt le plus marquĂ© au stade de l’évaluation. Contrairement Ă  d’autres systĂšmes de gestion des communications, un service mesh est une couche d’infrastructure dĂ©diĂ©e, crĂ©Ă©e dans l’application. Cette couche visible peut indiquer la maniĂšre dont les diffĂ©rents Ă©lĂ©ments d’une application interagissent entre eux. Il devient dĂšs lors plus facile d’optimiser les communications et d’éviter les temps d’arrĂȘt lorsque l’application Ă©volue. Selon la CNCF, 18% des entreprises utilisatrices d’environnements en container se sont converties au service mesh, soit plus de 50% en un an et une hausse en production de 27%; 47% Ă©valuent la technologie. Ce qui conduit Ă  anticiper une large progression potentielle. Au bilan, les entreprises utilisatrices des environnements en containers en production mettent en avant les possibilitĂ©s d’évolution horizontales amĂ©liorĂ©es et la rĂ©duction des temps de dĂ©ploiement des applications et des environnements. La maturitĂ© viendra plus tard !


Une technologie qui Ă©merge sur le tard

S’ils sont aujourd’hui Ă  la mode, les containers existent en fait depuis la fin des annĂ©es 70
 du siĂšcle dernier. Ils sont apparus prĂ©cisĂ©ment en 1979 avec la version 7 d’Unix et le systĂšme «chroot» qui permet de changer le rĂ©pertoire racine d’un processus de la machine hĂŽte. Le point est rapidement adoptĂ© et devient intĂ©grĂ© Ă  BSD en 1982. Ils connaissent ensuite une longue pĂ©riode de dormance pour se rĂ©veiller au dĂ©but de ce siĂšcle avec l’introduction des partitions «jails» dans Free BSD. Cet outil est ensuite amĂ©liorĂ© tout d’abord avec Linux vServer qui permettait le partitionnement des ressources puis avec OpenVZ en 2005. L’annĂ©e prĂ©cĂ©dente, les jails ont Ă©tĂ© combinĂ©s avec des sĂ©parations de flux dans les containers de Solaris de Sun Microsystems. En 2006 s’y sont ajoutĂ©s les groupes de contrĂŽles qui autorisent la prise en charge et l’isolation de l’usage des ressources comme le processeur et la mĂ©moire.

 Les containers prennent en grande partie leur forme actuelle en 2008 avec les LXC, premiĂšre mouture stable et complĂšte de containers pouvant fonctionner sur le kernel Linux sans patch. Sur ces containers se sont dĂ©veloppĂ©s en 2011 les containers de Warden, puis en 2013, ceux de Docker. L’apparition de Docker a changĂ© la destinĂ©e des containers en apportant un nouveau souffle Ă  cette technologie. Docker se fonde sur deux piliers : les containers LXC et les «libcontainers». Les libcontainers sont une Ă©volution du systĂšme lmctfy (Let me contain that for you), une version open source des containers de Google, oĂč les applications crĂ©ent et gĂšrent directement les sous-containers. Docker y ajoutait une interface utilisateur agrĂ©able et plus facile d’accĂšs. Docker a connu alors un dĂ©veloppement record avec 100 millions de tĂ©lĂ©chargement en une annĂ©e. À cĂŽtĂ© de Docker, d’autres technologies sont apparues pour amĂ©liorer les containers comme rkt qui essayait de rĂ©soudre des problĂšmes de la technologie Docker avec l’implĂ©mentation d’une sĂ©curitĂ© plus rigoureuse et des prĂ©requis de production. La crĂ©ation de la CNCF (Cloud Native Computing Foundation) a donnĂ© un cadre encore plus large pour le dĂ©veloppement de la technologie avec son rassemblement de dĂ©veloppeurs, d’industriels et d’entreprises.

En 2016, Microsoft se rallie, lui aussi, aux containers Linux et autorise les containers sur Windows qui aboutira aux Process et Hyper-v Container. Il est Ă  noter que Microsoft, dĂšs lors, a gagnĂ© en influence dans l’écosystĂšme des containers.

Depuis, la technologie des containers a connu diffĂ©rents ajouts importants comme Kubernetes, issu du projet Borg de chez Google, Flannel, une couche de virtualisation des rĂ©seaux dans les environnements containers d’OpenShift de RedHat, ou Calico.

La technologie Ă©volue encore trĂšs rapidement avec des changements notables comme l’apparition de nouveaux runtimes Ă  la place de celui de Docker comme containerd ou CRI-O ou ouvrant la voie vers le serverless avec la plate-forme de Knative ou celle de Fauna (base de donnĂ©es NoSQL serverless). On se dirige aussi vers une nouvelle couche d’abstraction pour distribuer la gestion des tĂąches sur diffĂ©rents nƓuds du cluster pouvant ĂȘtre distribuĂ©s sur plusieurs infrastructures. Loft Labs propose maintenant une technologie de virtualisation des clusters Kubernetes, les vClusters qui permettent de partager les ressources Ă  partir d’un seul cluster Kubernetes et de consolider ainsi les tĂąches.


Hardis, ça CaaS mais ça passe !

Hardis, Ă©diteur de solutions pour la logistique mais aussi prestataire de services pour la transformation numĂ©rique des entreprises, a renouvelĂ© son offre en passant au CaaS (Container as a service). GrĂ©gory Grimonprez explique : « Nous ne proposons plus une infrastructure ou des machines virtuelles mais une plate-forme qui fournit des applications containerisĂ©es sur une plate-forme d’hĂ©bergement sans avoir Ă  passer par notre service. » Il ajoute : « c’est pour nous une façon diffĂ©rente de livrer nos services mais pas vraiment une rĂ©volution. » Pour l’instant Hardis travaille Ă  rendre sa solution disponible pour les environnements en cloud hybride et sur les opĂ©rations d’orchestration. La solution fonctionne sur la base de la distribution Karbon de Nutanix.


BSO accompagne les entreprises dans leurs déploiements

Kubernetes Alexandre Legris, directeur de l’offre de services managĂ©s en Cloud et hĂ©bergement chez BSO, le voit bien avec les retours de ses prospects et clients. Beaucoup achĂštent la promesse de Kubernetes mais ne sont pas vraiment conscients de la complexitĂ© et de la difficultĂ© de l’opĂ©ration. BSO a donc mis au point un framework, une mĂ©thodologie pour accompagner les clients dans cette pĂ©riode dĂ©licate. La dĂ©marche dĂ©marre par un audit pour se rendre compte du niveau technique et de l’apprĂ©hension par rapport au niveau de maturitĂ© sur les dĂ©ploiements. BSO accompagne ses clients ensuite dans leur transformation des applications avec une orientation des choix pour augmenter «la citoyennetĂ© des applications» pour les environnements en containers. «Nous les orientons vers des choix que l’on sait fonctionnels», prĂ©cise le directeur de BSO.