Migration de plateforme
Kubernetes, un simple mot à la mode ?
Après des années passées à étudier notre plateforme, à examiner les pratiques de Site Reliability Engineering de Google et à expérimenter leurs outils, nous avons conclu que Kubernetes, basé sur l'architecture de distribution Borg de Google, était la solution la mieux adaptée à la prochaine itération de notre plateforme Lighthouse.
Qu'est-ce que Kubernetes ?
Kubernetes est une technologie open source basée sur l'architecture interne Borg de Google, qu'elle a utilisée en interne pendant de nombreuses années avant de la rendre publique. Il s'agit d'une technologie de pointe qui exploite toute la puissance de l'orchestration de conteneurs.
L'orchestration de conteneurs est un terme chargé de sens mais, s'il est complexe, il n'est pas compliqué à comprendre.
Commençons par les éléments de base :
Un conteneur ne contient que le logiciel et les dépendances nécessaires au fonctionnement de votre application. Cela signifie que votre logiciel s'exécute dans son propre environnement, sans avoir besoin de télécharger ou d'importer des dépendances externes. Cela ressemble à une machine virtuelle, à ceci près qu'il ne contient que ce dont il a besoin, ce qui le rend léger et simple.
En résumé, si cela fonctionne sur votre ordinateur, cela fonctionnera également sur le vôtre, car le conteneur fournit de manière autonome tout ce qui est nécessaire.
Où faisons-nous fonctionner nos conteneurs ?
En général, les conteneurs ont besoin de leur propre environnement pour fonctionner. Si vous développez sur une seule machine, l'application s'exécutera généralement dans un outil tel que Docker. Si en revanche vous souhaitez faire fonctionner plusieurs images sur plusieurs nœuds ou un cluster, Kubernetes est l'option privilégiée.
Kubernetes est l'option la plus flexible, car toute la configuration (pas seulement celle des conteneurs), l'environnement, les configurations des applications et les configurations réseau peuvent tous être définis sous forme de code.
Pourquoi est-ce un avantage ?
En stockant nos configurations sous forme de code, nous disposons d'une source unique de vérité et pouvons conserver nos configurations dans Git. Cela nous permet de déployer des changements de manière plus simple, plus sûre, plus rapide et plus efficace.
Cela nous procure de nombreux avantages :
Évolutivité : nous pouvons facilement monter en charge, et notre charge peut être répartie entre de nombreux nœuds, ce qui améliore les performances
Disponibilité : ceci est également lié à la fiabilité, car si un pod ou un conteneur ne fonctionne plus, ou si le nœud tombe en panne, d'autres conteneurs restent en mesure de prendre le relais
Simplicité : cela s'inscrit parfaitement dans notre modèle de travail fondé sur l'extreme programming et la livraison continue, qui privilégie de petits changements itératifs
Contrôle : le fait d'avoir tout sous forme de code facilite le contrôle de la manière et du lieu d'exécution
Observabilité : nous disposons d'une meilleure visibilité sur la façon dont le système fonctionne et où il s'exécute, et comme notre métier consiste précisément à fournir des informations, les données que nous recueillons sont transmises à notre produit et enrichissent les informations que nous proposons
Technologie : grâce à un meilleur accès et à une simplification globale, il nous sera plus facile de nous intégrer à de nouvelles technologies de rupture telles que l'apprentissage automatique, le big data, l'IA et tout ce qui suivra.
Cette liste n'est pas exhaustive, mais elle illustre modestement la puissance qui deviendra accessible grâce à l'adoption de cette technologie, alors que nous progressons ensemble vers un avenir plus fiable.