Combell & Kubernetes : passé le phénomène, une nouvelle génération d’applications Cloud

Containers, Docker, Kubernetes… Tous ces concepts sont aujourd'hui très à la mode, et tout le monde les utilise ou souhaite les utiliser. Et il n'en va pas autrement chez Combell. Cela fait déjà plus de cinq ans que cette technologie fait parler d'elle, et cela fait déjà un certain temps que nous l'exploitons en interne. Le moment serait-il donc venu de faire une offre à nos clients ? C’est ce que nous allons voir au cours de notre entretien avec Wesley, Thijs, Jachim et Maarten.

L'évolution de la virtualisation vers les conteneurs a changé la technologie. Mais a-t-elle aussi changé la façon de penser dans le monde de l'informatique ?

Des serveurs dédiés est née la virtualisation, et de cette dernière est apparu le Cloud. Les développeurs veulent pouvoir travailler plus rapidement sans se soucier de l'infrastructure sous-jacente. Le développement des conteneurs et l'arrivée de technologies telles que Docker et Kubernetes sont donc une aubaine dans ce contexte.

Tout s'inscrit dans l'évolution que le Cloud a connue au cours de ces dix dernières années. Le business nous oblige à être rapides, non seulement pour pouvoir gérer des sites et applications rapides, mais aussi pour pouvoir accéder au marché plus rapidement.

DevOpsLa mentalité Agile a beaucoup changé. Les administrateurs système et les Operation engineers sont conscients qu'ils doivent également être agiles et travailler rapidement et de manière cyclique – ce qui a donné naissance au mouvement ‘DevOps’. Et la virtualisation a joué un rôle moteur. De là sont apparues les grandes plateformes de Cloud Public : on fait abstraction complète des plateformes physiques et l'utilisateur dispose d'un ensemble d'API conviviales, ce qui lui permet de travailler en automatisant toutes sortes de tâches – des choses qui évoluent, qui changent constamment, qui sont capables de faire face aux changements, sous la pression du temps et de la forte concurrence.

Depuis lors, nous avons accumulé énormément d'expérience. Kubernetes était au départ un enjeu complexe. On commence avec l'installation d'un labo, et on apprend ainsi à se servir de l'outil. Trois itérations plus tard, on finit par comprendre les concepts et on constate aussi que ces concepts sont là pour de très bonnes raisons. Et aujourd'hui, nous sommes nous-mêmes en train de l'utiliser comme plateforme pour des microservices en interne.

Beaucoup d'entre nous comprennent que Kubernetes est si différent de tout ce que nous avons connu jusque-là. Parce qu'il s'agit d'une plateforme d'abstraction, qui permet de réduire les charges de travail, de sorte que vous ne soyez plus dépendant d'un acteur sous-jacent !

« Il n'y en a plus que pour Kubernetes. Jusqu'à ce que vous posiez la question : combien en avez-vous en production ? Et là, c'est souvent le silence total. »

Kubernetes a une approche très différente de l'infrastructure. Mais sa popularité n'est-elle pas d'abord venue du développement ?

Il y a un peu d'histoire derrière tout cela. En tant que développeur, vous voulez coder sur votre propre ordinateur. Vous travaillez généralement sur différents projets en parallèle. Au fil des ans, divers outils de virtualisation ont été développés : ceux-ci vous permettent de démarrer un environnement sur votre ordinateur en un temps record. Avec un outil comme Vagrant, vous pouvez travailler sur le code d'un projet, le décomposer à nouveau et faire quelque chose d'autre – qui peut ne pas avoir les mêmes exigences de version... Une autre version de PHP, etc.

DockerEt tout d'un coup, lorsque les développeurs utilisent Docker, ils constatent qu'il ne faut pas deux ou trois minutes – pour que cette machine virtuelle soit créée – mais à peine trois secondes. Et ils s'habituent rapidement à ce flux de travaux, parce que cela fonctionne très facilement. Car vous pouvez aussi très simplement faire tourner un grand nombre de conteneurs sur un seul et même ordinateur. Vous devriez essayer de faire tourner 10 ou 20 machines virtuelles sur votre ordinateur portable... Ça n'ira certainement pas vite, et ce sera très laborieux. Avec Docker, tout cela se fait soudainement sans efforts, et la technologie est à la mode.

Maintenant, vous voyez qu'ils ont découvert une certaine façon de travailler, qu'ils veulent faire passer à l'acceptation et à la production. Et ils vont en parler à leur manager : « C'est amusant de travailler de cette manière. Nous pouvons ainsi normaliser. Cela nous facilite la vie. Nous voulons que cela soit aussi possible en production. »

En tant que développeur, vous n'avez en quelque sorte plus besoin d'attendre deux jours pour qu'un collègue configure un serveur pour vous. Il s'agit d'une infrastructure en tant que code. C'est plus simple pour tout le monde. Au fur et à mesure que vous déployez le code, vous indiquez à quoi l'infrastructure sur laquelle le code est exécuté doit ressembler. Celle-ci est livrée de manière dynamique. Le top, c'est que tout devient plus simple pour tout le monde – pour le fournisseur comme pour l'utilisateur. Cela rappelle le concept ‘pets’ versus ‘cattle’. Votre serveur n'est qu'un environnement stupide, qui est entièrement géré par l'automatisation offerte par Kubernetes.

« Où cela a-t-il commencé ? Comme pour tout le monde – dans la cour de récréation ! C'est une technologie super cool ! »

Comment mener à bien les projets Kubernetes ?

Quand un client dit qu'il veut créer des applications ‘cloud native’, que sous-entend-il au juste ? Souvent, cela signifie qu'il veut faire tourner des conteneurs. Nous lui demandons alors s'il a une architecture de microservices... Est-ce que ça vaudra le coup si on a une seule base de code monolithique ?

Cela affecte votre façon de travailler. Votre approche des projets. Nous ne devons pas nous laisser berner par les tendances que l'on retrouve souvent dans le monde de l'informatique, et nous pensons que tout le monde le fait déjà. En Belgique, nombreux sont ceux qui se laissent tenter. Il n'y en a plus que pour Kubernetes. Jusqu'à ce que vous posiez la question : combien en avez-vous en production ? Et là, c'est souvent le silence total.

Si vous examinez les choses de façon abstraite, vous voulez que les ressources soient utilisées de manière efficace. Vous créez davantage de frais généraux. Il existe p. ex. un plan de contrôle sur lequel vous ne faites tourner aucune charge utile. Il est juste là pour faire tourner l'ensemble.

Microservices

En fin de compte, tout cela revient souvent à la question fondamentale : microservices ou non ? Si vous n'avez qu'un seul Pod à faire tourner sous Kubernetes, vous devez sérieusement vous interroger sur ce choix. Si vous êtes une entreprise qui conçoit continuellement des API, Kubernetes est un choix logique. Si vous êtes une entreprise qui conçoit des sites Drupal (qui se résument à un seul bloc, une base de données et du code PHP), vous pouvez bien sûr utiliser Kubernetes, mais ses avantages seront alors limités.

Où en est Combell aujourd'hui avec Kubernetes ? Quel chemin avez-vous parcouru ?

Où cela a-t-il commencé ? Comme pour tout le monde – dans la cour de récréation ! C'est une technologie super cool ! On apprend d’abord à la connaître, et petit à petit les choses deviennent plus sérieuses.

Kubernetes est pour l'instant en quelque sorte le point final dans l'évolution des conteneurs. Le lancement de Docker a été la première étape vers la démocratisation de la technologie des conteneurs. Vous entendez parler de la technologie et voyez le battage publicitaire qui l'entoure, ce qui finit par vous enthousiasmer et par vous donner envie de la tester. Mais vous rencontrez alors aussi ses limites, par exemple sur le plan du stockage et de la mise en réseau. L'étape suivante a été l'orchestration de plusieurs conteneurs avec Docker Compose. Mais ce dernier a lui aussi ses propres limites, puisque l'hôte finit à un moment donné par être plein de conteneurs. Et pour rendre ces services disponibles au public, vous devez toujours configurer Nginx, par exemple.

Actuellement, nous utilisons toujours Docker et Docker Compose en production, mais Kubernetes est l'étape logique suivante, car il fait abstraction des hôtes sur lesquels les services tournent. Kubernetes nous permet d'orchestrer une collection de services sur différents serveurs, sans avoir à nous soucier de la mise en grappe, de l'extensibilité et du déploiement.

Orchestration with Kubernetes

Aujourd'hui, nous avons enfin franchi le pas vers la production, même si pour l'instant ce n'est que pour des services internes. Comme p. ex. un Slack-bot, un robot 'Chatops' interne. D’ici peu, nous allons aussi lancer notre premier ‘customer facing service’ sur Kubernetes.

Les clients de Combell peuvent-ils eux aussi en profiter ?

Nous avons eu pendant quelques années des doutes à ce sujet. Nous estimions que le niveau d'adoption n'était pas encore suffisant parmi les spécialistes de notre réseau. Mais cette question est à présent réglée. Nous pensons qu'il s'agit de la technologie de l'avenir. Et nous sommes donc convaincus que nous devons miser dessus.

Ce qui nous préoccupe maintenant, c'est de savoir où Combell peut le mieux apporter sa valeur ajoutée. Jusqu'où devons-nous aller pour guider le client ? C'est là que réside la difficulté. Je pense que nous sommes maintenant prêts sur le plan technique. C'est aussi l'occasion de nous démarquer au niveau commercial. Mais nous voulons aller plus loin, et mettre en place un Kubernetes « nu » ne suffit donc pas. Tout un ensemble de services et de conseils complémentaires est nécessaire pour aider le client dans sa recherche d'une méthode de travail efficace.

Les trois piliers fondamentaux de Combell sont la stabilité pour le client, la sécurité et la rapidité. C'est pourquoi nous avons aussi étudié la technologie pendant longtemps et réfléchi soigneusement à ce que pourrait être notre valeur ajoutée. Nous pensons que nous sommes prêts et que nous pouvons accomplir beaucoup de choses en collaboration avec nos clients.

Nous pouvons p. ex. aider les développeurs à rester dans leur zone de confort et à continuer à utiliser les mêmes outils. Notre mission consiste à éliminer la complexité de Kubernetes et à intégrer l'API de Kubernetes dans les outils CI/CD que nos clients utilisent déjà à l'heure actuelle.

Avez-vous besoin d'aide pour la prochaine étape de votre projet impliquant des conteneurs ? Contactez-nous par e-mail à l'adresse k8s@combell.dev et nous serons ravis de vous aider avec nos solutions.

Contactez-nous

Dans les mois à venir, nous nous pencherons plus en profondeur sur les aspects techniques de Kubernetes et répondrons à des questions telles que :

  • Pourquoi est-ce si avantageux pour les développeurs ? Et pour quelles charges de travail en particulier ?
  • Comment gérer la surveillance des services de Kubernetes ?
  • Comment organiser un flux de travaux CI/CD facile à utiliser avec Kubernetes et Gitlab ?

Stay tuned!