Informatique sans serveur ou conteneurs | Comment choisir

L'informatique sans serveur 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 sans serveur sont encore plus légers et évoluent plus facilement que les architectures basées sur des conteneurs.

Share facebook icon linkedin icon twitter icon email icon

Informatique sans serveur ou conteneurs

Objectifs d’apprentissage

Après avoir lu cet article, vous pourrez :

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

Informatique sans serveur ou conteneurs

L'informatique sans serveur 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 sans serveur 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.

Container Architecture

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 ou machines virtuelles

Une machine virtuelle est un logiciel qui imite un système informatique complet. Elle 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, voir Qu'est-ce que l'informatique sans serveur ?

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

Machines physiques

L'informatique « sans serveur », ou serverless, fonctionne en réalité sur des serveurs, mais il appartient au fournisseur sans serveur 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 sans serveur, 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 sans serveur. En ce qui concerne la puissance de calcul, l'informatique sans serveur 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ût

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 sans serveur, 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 sans serveur 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 sans serveur 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 sans serveur 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 sans serveur peuvent être actives dès que le code est chargé.

Serverless Vs Containers Deploy Speeds

Test

Il est difficile de tester des applications web sans serveur 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 sans serveur et les conteneurs ?

Les deux sont basés sur le cloud et réduisent considérablement la surcharge des infrastructures, l'informatique sans serveur 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é 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 sans serveur, offre le même avantage mais à un niveau plus granulaire.

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

Les développeurs qui choisissent une architecture sans serveur 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 sans serveur 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 sans serveur 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 sans serveur, 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 sans serveur.

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.