Comme le jardinage, le développement de logiciels nécessite une compréhension de la manière dont différents éléments fonctionnent ensemble pour créer un écosystème magnifique et productif. C’est ce qui a motivé notre choix d’un thème de jardinage pour le programme Microservices March de cette année. Comme c’est le cas dans tout jardin, une mauvaise herbe problématique continue de s’immiscer dans la conversation : quelle est la différence entre les microservices et Kubernetes ?
Les plantes sont les principaux éléments de l'écosystème d'un jardin. Ce sont les organismes vivants qui composent votre jardin et contribuent à sa beauté et à sa fonctionnalité. De même, les microservices sont les principaux éléments constitutifs des applications logicielles modernes . Ce sont des services individuels qui exécutent des fonctions spécifiques et fonctionnent ensemble pour créer une application plus grande et plus complexe.
Comme les plantes, les microservices varient en taille, en forme et en objectif. Certains sont petits et spécialisés, chargés d’une seule opération. D'autres sont plus grands, plus généralisés dans leurs opérations ou constitués d'un groupe de composants plus petits. Par exemple, un fraisier est petit et ne produit que des fraises. Cela s’apparente à un microservice qui traite uniquement les transactions par carte de crédit (petites et spécialisées). Une plante plus généralisée comme la coriandre produit non seulement les légumes-feuilles utilisés dans la salsa et le guacamole, mais aussi les graines de coriandre. Ce type d’installation s’apparente à un service qui gère l’authentification des utilisateurs (un processus plus vaste et plus général).
La plupart des plantes doivent être plantées dans le sol pour pouvoir puiser des nutriments et de l’humidité. Laissez-les à racines nues et elles mourront. Bien qu’il soit parfaitement acceptable de les planter directement dans le sol, de nombreux jardiniers optent pour la culture en pot, car cela leur permet de personnaliser le sol, de mieux se défendre contre les parasites et de déplacer les plantes dans le jardin (ou même à l’intérieur pour l’hiver). De même, vous disposez de plusieurs options pour placer les microservices, la plus courante étant dans un « conteneur ». Un microservice conteneurisé comprend tout ce dont vous avez besoin pour exécuter l’application et il est facilement portable entre les environnements d’exécution.
Nous avons donc nos microservices (plantes) dans nos conteneurs (pots), mais comment les déployons-nous, les entretenons-nous et les faisons-nous évoluer ? Avec des outils ! Entrez Kubernetes . Kubernetes fournit de nombreuses fonctionnalités et modules complémentaires qui facilitent la gestion et la maintenance des microservices, et il est considéré comme l'outil de facto pour l'orchestration des conteneurs. Par exemple, Kubernetes fournit des fonctionnalités automatisées d’équilibrage de charge, de découverte de services et d’auto-réparation (pour soulager vos développeurs d’une partie du travail de maintenance et de surveillance). Et quand tout le monde veut que vos microservices (plantes) produisent plus ? Kubernetes prend en charge la mise à l'échelle automatique et les mises à jour continues pour assurer le bon fonctionnement de vos applications de microservices.
Note: Les alternatives à Kubernetes, telles que Docker Swarm et HashiCorp Nomad , offrent à peu près les mêmes fonctionnalités.
Nous avons démontré l'intérêt d'utiliser Kubernetes pour gérer les microservices et empêcher les applications de se développer de manière incontrôlable. Mais Kubernetes et les conteneurs ne sont pas toujours nécessaires. En fonction de la complexité de votre application, vous pouvez également choisir d'utiliser une plate-forme de machine virtuelle (ou même physique) traditionnelle, qui peut toujours être déployée ou provisionnée à l'aide d'outils d'automatisation. Ces outils n’offrent pas le même niveau d’automatisation et d’évolutivité que Kubernetes, mais vous pourriez accepter ce compromis pour des applications moins complexes ou non critiques. Une autre option consiste à utiliser des plateformes informatiques sans serveur (telles qu'AWS Lambda ) qui vous permettent d'exécuter votre code de microservices en réponse à des événements sans vous soucier de l'infrastructure sous-jacente.
Les jardiniers avertis savent que la plantation associée – par exemple, des soucis à côté des tomates – permet une meilleure utilisation des ressources et contribue à un jardin plus sain. De même, Kubernetes fournit une large gamme de fonctionnalités et de modules complémentaires qui le rendent utile pour bien plus que la gestion des microservices. Kubernetes peut être utilisé pour des applications non-microservices (telles que des modèles d’apprentissage automatique ou des monolithes), par exemple. Nous voyons de nombreux clients utiliser Kubernetes pour gérer des microservices et d’autres applications, certains déployant même des machines virtuelles (VM) dans Kubernetes ! Cela peut être une excellente option pour les organisations qui effectuent la transition d’applications monolithiques héritées vers une architecture orientée microservices.
Nous espérons que vous retiendrez deux choses de cet article (outre l’envie de visiter votre pépinière locale) :
Consultez les ressources suivantes pour plus de détails sur les principes fondamentaux des microservices :
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."