Blogue
Kubernetes ou serverless : quand l'utiliser et comment choisir ? — partie 2

Kubernetes ou serverless : quand l'utiliser et comment choisir ? — partie 2

Alex Ivanov
June 16, 2021

Kubernetes et serverless : avantages et inconvénients

Kubernetes — pros and cons

Tous les avantages et inconvénients de Kubernetes sont dus à sa nature de plate-forme multifonctionnelle offrant une multitude de possibilités que vous ne pouvez pas couvrir seul, ni même avec votre équipe sur une courte période de temps.

Vous avez besoin d'une paire de cerveaux supplémentaires, comme Dysnix.

Serverless — pros and cons

Les avantages de l'architecture sans serveur sont irremplaçables pour certains types de projets, mais vous devez bien réfléchir si votre application correspond à cette catégorie.

En quoi diffèrent-ils le plus ?

Kubernetes vs Serverless

Qu'est-ce qu'ils ont en commun ?

  • Les deux outils peuvent être appliqués à une approche de microservices.
  • Ils peuvent être lancés dans le cloud.
  • Les applications démarrent en une seule fois (cela prend quelques secondes).
  • Les deux systèmes fonctionnent via des outils tiers via des API.
  • Ces deux structures constituent des environnements isolés.

Vue d'ensemble des cas d'utilisation

D'accord, c'était énorme, mais nous ne faisons que nous rapprocher de la partie la plus intéressante de l'aperçu des cas d'utilisation, où vous pourrez trouver le cas de votre application et consulter nos recommandations.

Quand utiliser Kubernetes

L'utilisation de k8s est généralement due à un besoin de flexibilité et à l'absence de problèmes liés à la migration de projets existants comportant une myriade de connexions et de flux de données tiers vers l'exécution de toutes sortes d'applications, qu'il s'agisse d'une application distribuée moderne native du cloud ou d'un ensemble de sites Web simples avec une base de données MySQL.

Vos autres demandes possibles :

  • Si vous souhaitez constamment faire évoluer votre application à l'avenir et être toujours prêt pour les dernières innovations.
  • Si votre projet doit gérer différentes versions, anciennes et nouvelles, du logiciel sur différentes plateformes. Avec les conteneurs, vous obtiendrez le sol le plus adaptatif et le plus réactif pour créer toutes les exigences de votre application.
  • Si vous avez développé depuis longtemps des logiciels existants que vous souhaitez moderniser avec un environnement conteneurisé dans l'espoir d'améliorer la productivité, ou si vous avez une application monolithique que vous souhaitez reconstruire en microservices.
  • Vous souhaitez implémenter CI/CD pour votre projet.
  • Vous avez des exigences supplémentaires en matière de sécurité, d'allocation de ressources ou de politique d'administration.
  • Vos exigences en matière d'applications sont complexes : certains langages de programmation qui peuvent ne pas être pris en charge par un fournisseur de cloud ; des API de bas niveau telles que le contrôle des threads ; des composants avec état ou des tâches de longue durée ; une utilisation intensive de la JVM, en particulier la simultanéité ; des systèmes distribués en temps réel.
  • Si vous avez un projet de commerce électronique de grande envergure, tous les processus et fonctions peuvent être réemballés dans des conteneurs sans aucune modification de la logique métier.
  • Votre équipe dispose d'une partie DevOps et/ou d'ingénieurs k8s, vous n'avez donc pas besoin d'engager du personnel supplémentaire pour lancer k8s.
  • Vous exécutez actuellement votre application sur site, dans le cloud ou de manière hybride sur des serveurs dédiés ou des machines virtuelles et vous cherchez à moderniser et à optimiser votre environnement.
  • Il n'existe aucune option de verrouillage du fournisseur pour votre projet.
  • Vous êtes prêt à investir des ressources dans K8s pour réduire les coûts à l'avenir.

Quand ne pas utiliser Kubernetes ou considérer que le processus peut nécessiter des efforts supplémentaires en raison des risques possibles suivants :

  • Même si vous configurez le contrôle automatique de la mise à l'échelle pour les changements de trafic à deux niveaux (pods et nœuds), le processus de réaction à de brusques pics peut prendre un temps considérable pour activer la réserve suffisante d'instances. Pour certains projets, chaque seconde compte, il convient donc de mentionner ce point. D'ailleurs, la mise à l'échelle sans serveur, par exemple Lambda et Google Function, peut également prendre du temps.
  • Les coûts d'exécution sont inévitables.
  • L'arrêt complet lorsqu'il n'y a pas de trafic est impossible.

Kubernetes est l'une des meilleures solutions pour un large éventail d'applications et de services : des sites Web dotés de petites bases de données aux grandes applications existantes. Et même si la gestion de l'infrastructure k8s nécessite une équipe plus importante et que sa configuration et sa maintenance prennent plus de temps, la variété des solutions open source simplifiera considérablement vos tâches quotidiennes. Ainsi, avec Kubernetes, vous payez pour bénéficier d'un meilleur contrôle et d'options permettant de réduire les coûts dans un environnement flexible mais stable.

Quand utiliser le mode sans serveur

En résumé, utilisez Serverless si vous devez « aller vite, pas loin » : développement et déploiement rapides, mise à l'échelle automatique et réduction des coûts d'exécution minimaux possibles.

Plus de détails sur les cas d'utilisation permettant d'utiliser l'architecture sans serveur :

  • Si votre équipe est principalement composée de développeurs sans expérience opérationnelle (réseau, stockage, surveillance, etc.), mais que vous souhaitez tester rapidement votre idée d'application. Et si cela fonctionne pour le client, vous devez procéder à une mise à l'échelle en un clin d'œil.
  • Vous n'avez pas l'intention de migrer ou d'utiliser le même code entre les fournisseurs de cloud ou vous n'en avez pas besoin.
  • Votre équipe réagit parfaitement aux restrictions relatives aux langages de programmation et aux outils de votre fournisseur.
  • Vous êtes en situation de pics et de baisses de trafic, et vous voulez en tirer le meilleur parti en réduisant les coûts d'exécution aux points de trafic nul ou faible.
  • Votre équipe ne souhaite pas ou ne peut administrer aucune infrastructure pour votre application, mais se concentre sur la fourniture de valeur au client final.
  • Vous pouvez faire face à des pics soudains de vos factures mensuelles. Cela peut être un problème pour les startups, où une grosse facture cloud pourrait leur causer des problèmes.
  • Votre budget ne comporte aucune dépense sur l'infrastructure principale.
  • Si votre application (ou une partie de celle-ci) est de nature événementielle et ne sera pas exécutée pendant tout le temps.

Quand ne pas utiliser Serverless et prendre en compte la spécificité et les risques possibles :

  • Le verrouillage du fournisseur. C'est une excellente question de crédibilité. Et lorsque vous comparez Kubernetes à AWS Lambda, vous pourriez obtenir un niveau de confiance différent à leur égard, ce qui influencera votre décision... Mais chaque fournisseur de cloud limitera tout de même vos sources d'événements, vos langages de programmation et votre appétit d'exécution. Tu devrais y être prête. Et si vous êtes déterminé à faire appel à un fournisseur, il serait très difficile de migrer vers un autre ou de revenir à une solution sur site.

D'ailleurs, faites-nous savoir si lambda vs kubernetes est un thème intéressant pour vous.

  • Ne peut pas être appliqué aux applications distribuées en temps réel, aux tâches ou processus de longue durée, au traitement du streaming avec état, etc. Les événements déclenchent les fonctions et tout doit être aussi simple que possible pour une réponse rapide. Avec une application Serverless, vous ne pouvez pas avoir de contrôle explicite sur votre infrastructure pour optimiser vos performances d'une autre manière.
  • Parfois, même une solution sans serveur peut être coûteuse. Et si le nombre d'événements ou de processus d'exécution dépassait vos attentes ? Et même si tout est assez contrôlable et que vous fixez les limites des coûts d'exécution, une partie des bénéfices peut disparaître. Ou si vous prenez en compte les prix des intégrations et leurs politiques de paiement, la vérification finale peut être terrifiante.
  • Obligation de stocker des informations persistantes sur disque.
  • Prise en charge de protocoles spécifiques (mqtt pour l'IoT, par exemple) qui ne sont pas pris en charge par la plateforme Serverless.

Le serverless et les conteneurs peuvent-ils coexister et créer une architecture hybride fiable ?

Nous ne vivrons pas au 21e siècle si quelqu'un ne l'a pas encore essayé ou s'il n'est pas allé au-delà de la comparaison typique entre Kubernetes et Lambda. La pratique courante consiste à diviser votre application en parties de conteneurs basées sur des microservices et en fonctions basées sur le cloud. Dans ces combinaisons, il est possible de compléter les points faibles de chaque pièce.

AWS Fargate vous donne la liberté d'expérimenter des solutions hybrides en vous permettant de travailler avec des conteneurs sans vous soucier des serveurs et des clusters. Knative est un autre exemple utilisé pour k8s, en appliquant l'approche sans serveur et en désactivant les conteneurs inactifs.

Faites-nous savoir dans les commentaires si vous souhaitez en savoir plus sur les outils hybrides et l'approche qui les sous-tend.

En résumé

Nous avons passé en revue la forêt noire des défauts et des avantages de l'architecture Serverless, examiné les avantages et les inconvénients de k8s et sommes parvenus à un certain nombre de résumés. Même si les sujets de nos recherches étaient totalement nouveaux pour vous, nous espérons avoir clarifié certaines choses pour vous, notamment en ce qui concerne les avantages de l'architecture Serverless et de Kubernetes en comparaison. Ce serait également une autre comparaison si nous examinions AWS Lambda par rapport à Kubernetes. Quoi qu'il en soit, tout dépend de la structure, des préférences de développement et des ressources de votre entreprise. Et pour faire le bon choix, vous devez vous renseigner auprès de véritables spécialistes en k8s et en Serverless, et peut-être même auprès d'un tiers qui affirme que vous n'en avez pas besoin, et voir comment cela fonctionnera pour vous.

Si vous avez une voiture à transmission manuelle bien adaptée à votre style de conduite, vous vous habituerez à changer de vitesse et vous n'aurez pas peur de l'embrayage. Ainsi, elle vous emmènera où vous voulez jusqu'à ce que la voiture soit en panne de carburant.

Mais si vous avez besoin d'une voiture dans laquelle vous pouvez simplement sauter et conduire, peut-être qu'une transmission automatique est ce qui vous convient maintenant.

Merci de votre attention. Restons en contact pour nos prochains articles. Si nous avons encore quelque chose à clarifier, n'hésitez pas à nous faire part de vos commentaires.

  1. FaaS ou conteneurs : quand choisir lequel ?
  2. Serverless ou conteneurs : que choisir ?
  3. Scaling My App : sans serveur ou Kubernetes | par Javier Ramos
Alex Ivanov
Senior DevOps at Dysnix
Specialized in Kubernetes, infrastructure optimization, traveling, and compliments.
Table des matières
Articles connexes
Abonnez-vous au blog
La meilleure source d'informations pour le service client, les conseils de vente, les guides et les meilleures pratiques du secteur. Joignez-vous à nous.
Merci de votre inscription au blog Dysnix
Vous serez désormais le premier à savoir quand nous publierons un nouvel article
J'ai compris
Oups ! Une erreur s'est produite lors de l'envoi du formulaire.
Copié dans le presse-papiers
Collez-le où vous voulez