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.
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%.
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Ă©.
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.