đŸ“» RDO #9 - Jusqu’oĂč conteneuriser?

C’est exactement le mĂȘme souci avec une VM ou un serveur baremetal. Tu ne pourras plus mettre Ă  jour l’OS et donc tu vas le laisser en l’état. Un exemple trĂšs simple, les entreprises qui ont toujours de vieux OS pour faire tourner des appli compatibles PHP4.

Encore une fois, Docker n’est pas une rĂ©ponse Ă  ce genre de boites.

C’est le cadet de leur soucis dans le sens oĂč visiblement les boites qui en arrivent lĂ  ont un vrai problĂšme organisationnel et de vision. Et clairement, Docker n’a pas vocation Ă  rĂ©pondre aux besoins de ces boites lĂ . Pour ces boites il faut une rĂ©ponse autre que technologique.

En terme de performance le surcout reste tout Ă  fait acceptable et nĂ©gligeable, je parle ici des containers et de docker, la surconsommation liĂ© Ă  l’orchestrateur n’est pas imputable Ă  la conteneurisation.

La sĂ©curitĂ© c’est le mĂȘme problĂšme qu’avec du baremetal ou des VMs, il faut pouvoir dĂ©tecter les mises Ă  jour nĂ©cessaires et les appliquer, encore une fois, les images sont sensĂ©es avoir un cycle de vie court et donc ĂȘtre reconstruites souvent, on ne compte plus le nombre d’outils pour cela.

Le monitoring n’est plus complexe de nos jours, il y a de nombreux outils et services SaaS pour cela. Par contre, monitorer correctement une infra peut ĂȘtre compliquĂ© (docker ou pas).

Les images non maintenues et mal conçus, cela relÚve de la mauvaise utilisation de la technologie, de la mauvaise organisation.

Lorsqu’on intùgre une technologie à son infrastructure il faut la comprendre et la maitriser
 et surtout il faut en avoir le besoin.

Docker n’est pas une solution universelle magique qui rùgle tout les problùmes.

Je pense que le plus gros problĂšmes des boites est le manque de maitrise et d’organisation, je le vois bien avec nos clients, et je ne parle pas spĂ©cialement de Docker mais en gĂ©nĂ©ral.

Non, ce n’est pas le mĂȘme soucis. C’est ce que j’expliquais dans une prĂ©cĂ©dente rĂ©ponse. Dans une VM, le kernel et la libc resteront compatibles vu qu’ils ne seront pas mis Ă  jour.

Cela pose bien sûr un problÚme de sécurité à terme. Mais ça reste cohérent et stable dans le temps.

D’oĂč l’idĂ©e que les images de container qui sont buildĂ©es une fois et dĂ©ployĂ©es “partout” n’est pas idĂ©al. Si la version du kernel et/ou de la libc changent, il sera toujours plus prudent de recompiler. Ne pas le faire marche dans un certain nombre de cas. Mais c’est jouer Ă  l’apprenti sorcier, et au final on est en train de recrĂ©er le monstre de Frankenstein, pour donner une image.

Et donc, ce cĂŽtĂ© “au petit bonheur la chance” reste quand mĂȘme une hĂ©rĂ©sie lorsque l’on parle d’environnement de production.

Tout n’est jamais (ou rarement) tout blanc ou tout noir dans une organisation. Heureusement. Quand tu mets un projet en production à l’instant T sur K8s, tu ne sais pas quel sera le statut de ce projet à l’instant T+3 ans, par exemple. Et bien c’est exactement le problùme.

Pour le reste de ta rĂ©ponse, je ne vais pas commenter chaque point. Mais ce ne sont que des gĂ©nĂ©ralitĂ©s, et qui sont pour bon nombre erronĂ©es lorsque l’on s’attache Ă  regarder dans les dĂ©tails.

Il y a tout un tas de problÚmes qui peuvent survenir, et qui sont intrinsÚquement liés à Docker ou à la topologie de K8s. Et donc qui ne se retrouvent pas dans un environnement virtualisés ou bare-metal.

Je ne les connais pas tous, et loin de lĂ . Mais au fil des annĂ©es, j’en ai vu passer un certain nombre au hasard de ma veille technologique. Par exemple, pour les containers https://hackernoon.com/another-reason-why-your-docker-containers-may-be-slow-d37207dec27f

Et un autre exemple pour K8s, https://twitter.com/danielepolencic/status/1280087657968627713

En tout cas je regrette pas d’avoir dĂ©clenchĂ© la discussion :slight_smile:

Pour clarifier ma position, je pense (comme je l’ai dit Ă  plusieurs reprises sur diffĂ©rentes discussions) que les conteneurs et Kubernetes sont des technologies intĂ©ressantes et rĂ©pondent Ă  certains besoins (et comme toute techno, elles ont des avantages et des inconvĂ©nients).

Mais par contre je trouve qu’il y a trop de raccourcis entre “infra as code” et conteneurs, ou “microservice” et conteneurs/K8s
 Cela devient la seule façon de travailler. Et c’est ça qui gĂ©nĂ©ralement me gĂȘne sur les discussions sur les conteneurs/Kubernetes, c’est qu’il y a peu de discussions sur les alternatives. On oublie vite que:

  • La majoritĂ© des entreprises ne font pas des microservices (Ă  raison d’ailleurs, c’est pas forcĂ©ment le sujet ici mais le microservice est un d’architecture bien spĂ©cifique avec des avantages mais aussi beaucoup de dĂ©fauts, une architecture orientĂ©e service classique est bien suffisant surtout si on est pas Google ou Netflix).
  • La majoritĂ© des entreprises n’ont pas d’énormes besoins. Un Jetty sur une VM classique peut prendre sans problĂšme des centaines ou milliers de requĂȘtes/sec. Je vois trop de projets sur k8s/microservices oĂč quelques VMs avec un load balancer devant suffirait (j’ai mĂȘme vu un projet Ă  plusieurs millions Ă©chouer Ă  cause de ça).
  • Trop de boites partent sur ces technos pour de mauvaises raisons (mais lĂ  c’est pas de la faute de la techno :wink: ).
  • Il y a une course en avant sur cet Ă©cosystĂšme (1 million d’outils de dĂ©ploiements/monitoring/tracing/operators/network plugins
 beaucoup plus ou moins en alpha). Faudrait Ă  un moment ralentir et se demander de quoi on a vraiment besoin.

Je rejoins Ă©galement @jderrien sur le fait que le manque d’alternative est un problĂšme, je dis souvent que Kubernetes a “cannibalisĂ©â€ l’écosystĂšme DevOps et aujourd’hui tout (nouveaux outils de monitoring, dĂ©ploiements
) est centrĂ© sur lui.
Et c’est bien dommage, car ça empĂȘche selon moi d’autres solutions d’émerger (et de toute façon si on propose autre chose qu’une infra non basĂ©e sur Kubernetes on est limite plus pris au sĂ©rieux).

Mais certains projets se prĂȘtent trĂšs bien Ă  Kubernetes. Je prĂ©pare par exemple un talk sur un projet oĂč Kubernetes occupe une place assez importante, et oĂč son utilisation est intĂ©ressante car c’est un projet oĂč il fallait entre autre dĂ©ployer un grand nombre de fois le mĂȘme software (Ă  chaque demande cliente en fait), sur des hosts spĂ©cifiques. La partie scheduling/tolĂ©rance aux pannes de Kubernetes aide pas mal dans ce cas.
Comme @bat79a l’a Ă©galement montrĂ©, un Kubernetes managĂ© et s’intĂ©grant avec les services du Cloud Provider est Ă©galement plus simple Ă  gĂ©rer (mon expĂ©rience est peut ĂȘtre un peu biaisĂ©e par le fait que je l’ai toujours utilisĂ© en prod on premise, mais mon Ă©quipe travaille actuellement sur une offre Kubernetes managĂ© qui j’espĂšre arrivera bientĂŽt donc je suis Ă©galement en plein dans le sujet :wink: ).

En conclusion, j’aimerai qu’on parle moins des conteneurs/Kubernetes comme l’unique solution aux infras modernes d’aujourd’hui, qu’on se penche plus sur les alternatives et surtout qu’on sorte de la hype actuelle oĂč si l’on a pas Docker/Kubernete sur son CV c’est la fin du monde (et ça c’est un vrai problĂšme, les gens qui rentrent de 3 jours de confs tout inquiets car ils ne connaissent pas Kubernetes et se disent “OMG si je le mets pas en prod je suis has been” c’est une rĂ©alitĂ©).

1 « J'aime »

Effectivement tu as bien fait de lancer le sujet car c’est un sujet fort intĂ©ressant.

Oui Kubernetes n’est pas indispensable, comme on l’a dĂ©jĂ  dit, si tu n’as pas besoin d’orchestration, tu n’en as pas besoin. Tu peux dĂ©ployer des containers sans avoir recours Ă  Kubernetes, ni Ă  un orchestrateur.

Et oui toutes les entreprises n’ont pas besoin d’adopter une architecture microservices, la plus part des entreprises ont des besoins basiques.

Par contre, je pense aussi qu’il y a de rĂ©els facteurs qui font (Ă  tord ou Ă  raison) le succĂšs grandissent de Kubernetes, notamment :

  • L’approche multi-cloud/hybride-cloud favorise le recours Ă  Kubernetes comme vecteur commun.
  • L’échec dans une certaine mesure des solutions de private cloud comme Openstack.
  • L’adoption du DevOps (souvent mal compris et mal exĂ©cutĂ© mais c’est un autre sujet).

Je partage aujourd’hui ton constat sur le fait que malheureusement Kubernetes Ă©tant devenu le standard de facto, la majoritĂ© des outils sont uniquement compatibles avec cette plateforme.

J’ai commencĂ© Ă  utiliser Docker en 2015 en production avec AWS ECS puis Rancher sur du on-premise, l’orchestrateur Cattle suffisait largement Ă  nos besoins mais malheureusement on a finalement pas trop eu le choix que de migrer Ă  Kubernetes aprĂšs l’annonce de l’abandon de Cattle avec Rancher 2.

Aujourd’hui l’ensemble de nos dĂ©veloppements est dĂ©ployĂ© sous forme de containers mais on prĂ©fĂšre toujours utiliser des VMs pour les bases de donnĂ©es (et certains autres composants). On est entrain d’étudier le passage Ă  gVisor ou Kata afin de renforcer l’isolation, en attendant, on a des noeuds Kubernetes dĂ©diĂ©s par projets.

On a tout ce qu’il faut pour gĂ©rer le provisionnement de VMs : packer, terraform, ansible, les outils ne manquent pas pour faire de l’Infrastructure As Code avec des VMs et des technologies de virtualisation comme VMWare.

1 « J'aime »

Sur cette histoire de microservices, bcp oublient ce qu’ils ont permis de rĂ©soudre, Ă  savoir un pb organisationnel. Et Ă  part travailler dans une Ă©quipe de grande taille, on oublie vite qu’un bon monolithe fait le job pour 99% des besoins. MĂȘme Fowler s’est rendu compte du dĂ©sastre en Ă©crivant son anti-pattern “MonolithFirst”.