Informatique serverless ou conteneurs | Comment choisir

L'informatique serverless et les conteneurs sont deux architectures qui réduisent les surcharges pour les applications web hébergées dans le cloud, mais elles diffèrent de plusieurs manières importantes. Les conteneurs sont plus légers que les machines virtuelles, mais les déploiements serverless sont encore plus légers et évoluent plus facilement que les architectures basées sur des conteneurs.

Objectifs d’apprentissage

Cet article s'articule autour des points suivants :

  • Comprendre ce que sont les conteneurs
  • Comprendre en quoi les conteneurs diffèrent des déploiements serverless

Copier le lien de l'article

Informatique serverless ou conteneurs

L'informatique serverless et les conteneurs permettent aux développeurs de créer des applications avec beaucoup moins de surcharge et plus de flexibilité que les applications hébergées sur des serveurs traditionnels ou des machines virtuelles. Le style d'architecture qu'un développeur doit utiliser dépend des besoins de l'application, mais les applications serverless sont plus évolutives et généralement plus économiques.

Que sont les conteneurs ?

Un conteneur « contient » à la fois une application et tous les éléments dont l'application a besoin pour fonctionner correctement, y compris les bibliothèques système, les paramètres système et d'autres dépendances. Comme une préparation de pâte à crêpes à laquelle il suffit d'ajouter de l'eau, les conteneurs n'ont besoin que d'une seule chose : être hébergés et exécutés pour remplir leur fonction.

Tout type d'application peut être exécuté dans un conteneur. Une application dans un conteneur s'exécutera de la même manière, peu importe où elle est hébergée. Les conteneurs peuvent facilement être déplacés et déployés partout où cela est nécessaire, tout comme les conteneurs d'expédition physiques, qui sont de taille standard et peuvent donc être expédiés n'importe où par le biais de différents moyens de transport (navires, camions, trains, etc.) quel que soit leur contenu.

Architecture des conteneurs

En termes techniques, les conteneurs constituent un moyen de partitionner une machine ou un serveur dans des environnements d'espace utilisateur distincts de sorte que chaque environnement exécute une seule application et n'interagit pas avec les autres sections partitionnées de la machine. Chaque conteneur partage le noyau de la machine avec d'autres conteneurs (le noyau est la base du système d'exploitation et interagit avec le matériel de l'ordinateur), mais fonctionne comme s'il s'agissait du seul système sur la machine.

Conteneurs et machines virtuelles

Une machine virtuelle est un logiciel qui imite un système informatique complet. La machine virtuelle est isolée du reste de la machine qui l'héberge et se comporte comme si elle était le seul système d'exploitation sur celle-ci, y compris en ayant son propre noyau. Les machines virtuelles sont un autre moyen courant d'héberger plusieurs environnements sur un même serveur, mais elles utilisent beaucoup plus de puissance de traitement que les conteneurs.

Qu'est-ce que l'informatique sans serveur?

Les applications sans serveur sont divisées en fonctions et hébergées par un fournisseur tiers qui facture le développeur d'applications uniquement en fonction de la durée d'exécution de chaque fonction. Pour en savoir plus sur l'informatique sans serveur, veuillez consulter Qu'est-ce que l'informatique sans serveur ?

Quelles sont les principales différences entre l'informatique serverless et les conteneurs ?

Machines physiques

L'informatique « sans serveur », ou serverless, fonctionne en réalité sur des serveurs, mais il appartient au fournisseur serverless de fournir l'espace serveur selon les besoins de l'application. Aucune machine spécifique n'est assignée à une fonction ou une application donnée. D'autre part, chaque conteneur est situé sur une machine à la fois et utilise le système d'exploitation de cette machine, bien qu'il puisse être facilement déplacé vers une autre machine au besoin.

Évolutivité

Dans une architecture à base de conteneurs, le nombre de conteneurs déployés est déterminé à l'avance par le développeur. En revanche, dans une architecture serverless, le backend évolue naturellement et automatiquement pour répondre à la demande.

Pour poursuivre la métaphore des conteneurs d'expédition, une compagnie maritime pourrait essayer de prévoir une augmentation de la demande pour un certain produit et expédier plus de conteneurs vers la destination pour répondre à cette demande, mais elle ne pourra pas produire plus de conteneurs pleins de marchandises d'un simple claquement de doigts si la demande devait dépasser les attentes.

C'est exactement ce que fait l'architecture serverless. En ce qui concerne la puissance de calcul, l'informatique serverless est comme l'approvisionnement en eau dans une maison moderne : en ouvrant le robinet, les consommateurs peuvent à tout moment disposer d'autant d'eau que nécessaire et ne paient que pour ce qu'ils utilisent. Ce système est beaucoup plus adaptable à la demande (d'où le terme évolutivité ou scalabilité en informatique) que d'essayer d'acheter de l'eau seau par seau ou un conteneur d'expédition à la fois dans notre exemple.

Coûts

Les conteneurs sont constamment en cours d'exécution, et les fournisseurs de cloud doivent donc facturer l'espace serveur même si personne n'utilise l'application à un moment.

Il n'existe a pas de dépenses continues dans une architecture serverless, car le code d'application ne s'exécute que s'il est utilisé. Les développeurs ne sont facturés que pour la capacité du serveur que leur application utilise effectivement.

Entretien

Les conteneurs sont hébergés dans le cloud, mais les fournisseurs de cloud ne les mettent pas à jour. Les développeurs doivent gérer et mettre à jour chaque conteneur qu'ils déploient.

En ce qui concerne le développeur, une architecture serverless n'a pas de backend à gérer. Le fournisseur prend en charge toutes les mises à jour de gestion et de logiciel pour les serveurs qui exécutent le code.

Moment du déploiement

La configuration initiale des conteneurs prend plus de temps que les fonctions serverless car il est nécessaire de configurer les paramètres système, les bibliothèques, etc. Une fois configurés, les conteneurs ne prennent que quelques secondes à être déployés. Mais comme les fonctions serverless sont plus petites que les microservices de conteneur et ne sont pas fournies avec les dépendances du système, elles ne prennent que quelques millisecondes pour être déployées. Les applications serverless peuvent être actives dès que le code est chargé.

Vitesse de déploiement sans serveur par rapport aux conteneurs

Test

Il est difficile de tester des applications web serverless car l'environnement backend est difficile à reproduire sur un environnement local. En revanche, les conteneurs s'exécutent de la même manière, peu importe où ils sont déployés, ce qui rend relativement simple le test d'une application basée sur des conteneurs avant de la déployer en production.

Pour Cloudflare Workers, qui permet des architectures sans serveur, nous avons créé un environnement de test virtuel pour aider à améliorer le processus de développement.

Quelles sont les similarités entre l'informatique serverless et les conteneurs ?

Les deux sont basés sur le cloud et réduisent considérablement la surcharge des infrastructures, l'informatique serverless plus que les conteneurs. Dans les deux types d'architectures, les applications sont décomposées et déployées sous forme de composants plus petits. Dans une architecture basée sur un conteneur, chaque conteneur exécutera un microservice.

Que sont les microservices ?

Les microservices sont des segments d'une application. Chaque microservice exécute un service et plusieurs microservices intégrés se combinent pour constituer l'application. Bien que le nom semble indiquer que les microservices sont minuscules, ils ne doivent pas l'être.

L'un des avantages liés au développement d'une application en tant que collection de microservices tient au fait que les développeurs peuvent mettre à jour un microservice à la fois au lieu de mettre à jour l'application entière lorsqu'ils ont besoin d'apporter des modifications. Construire une application en tant qu'ensemble de fonctions, comme dans une architecture serverless, offre le même avantage mais à un niveau plus granulaire.

Comment les développeurs devraient-ils choisir entre l'architecture serverless et les conteneurs ?

Les développeurs qui choisissent une architecture serverless pourront publier et exécuter rapidement de nouvelles applications, sans avoir à se soucier de savoir si l'application peut ou non passer à l'échelle. De plus, si une application ne fait pas l'objet d'un trafic ou une utilisation cohérente, l'informatique serverless sera plus rentable que les conteneurs, car le code n'a pas besoin d'être constamment exécuté.

Les conteneurs donnent aux développeurs plus de contrôle sur l'environnement dans lequel l'application s'exécute (bien que cela implique également plus de maintenance) et sur les langues ainsi que les bibliothèques utilisées. De ce fait, les conteneurs sont extrêmement utiles pour la migration des applications héritées vers le cloud, car il est possible de reproduire plus étroitement l'environnement d'exécution d'origine de l'application.

Enfin, il est possible d'utiliser une architecture hybride, avec certaines fonctions serverless et certaines fonctions déployées dans des conteneurs. Par exemple, si une fonction d'application nécessite plus de mémoire que celle allouée par le fournisseur serverless, si une fonction est trop volumineuse ou si certaines fonctions mais pas d'autres doivent être exécutées longuement, une architecture hybride permet aux développeurs de profiter des avantages liés au manque de serveur tout en utilisant de conteneurs pour les fonctions qui ne peuvent pas être prises en charge serverless.

Quel est le type d'architecture que Cloudflare favorise ?

Cloudflare permet aux développeurs de créer des applications sans serveur hautes performances via Cloudflare Workers.