Qu'est-ce que Serverless?


42

Tous les fournisseurs de cloud vendent leurs solutions "sans serveur". La promesse est que sans serveur va remplacer la façon dont les développeurs développent actuellement leurs logiciels et que les opérations les gèrent en production.

Qu'est-ce que "sans serveur"? Où peut-on en apprendre plus à ce sujet et comment l'utiliser aujourd'hui?


l'informatique sans serveur est "serveur moins" comme un "burger de poulet" est végétalien car vous n'avez pas rencontré personnellement le poulet
Sai Addanki

Réponses:


43

L'article de Wikipedia sur l' informatique sans serveur fournit une introduction décente au sujet:

L'informatique sans serveur, également appelée fonction en tant que service (FaaS), est un modèle d'exécution du code de l'informatique en nuage dans lequel le fournisseur d'informatique en nuage gère entièrement le démarrage et l'arrêt de la plate-forme de conteneur d'une fonction en tant que service (PaaS) afin de répondre aux demandes et aux demandes. sont facturés par une mesure abstraite des ressources nécessaires pour satisfaire la demande, plutôt que par machine virtuelle, par heure.

L'idée est qu'un développeur ne devrait pas du tout avoir à se soucier de l'infrastructure du serveur . Le fournisseur de cloud gère les serveurs physiques, le système d'exploitation utilisé et toutes les difficultés traditionnelles liées à l'exécution d'un serveur.

L'informatique sans serveur change votre architecture et vous empêche de penser à ce que font les machines à quelles fonctions . AWS Lambda est l'exemple qui vous vient à l'esprit: vous payez et exécutez des fonctions , sans aucune mention du type d'infrastructure physique en cours d'exécution ci-dessous. Il existe également des hôtes sans serveur concurrents tels que Azure Functions (ou vous pouvez simplement rechercher si cela ne vous intéresse pas).

Il n'y a pas beaucoup d'avantages à utiliser sans serveur (bien que vous ayez besoin d'écrire d'une manière légèrement différente de celle à laquelle vous êtes habitué dans certains cas, car c'est une architecture totalement différente):

  • L’évolutivité est essentiellement gratuite: comme vous ne payez que pour exécuter une fonction, le fournisseur de cloud peut facilement dédier davantage de matériel au besoin pour exécuter votre code. Vous pouvez également potentiellement évoluer à mesure que la demande augmente, plutôt que de payer un taux fixe, que votre application soit utilisée une fois ou des millions de fois.

  • Le logiciel et le matériel du serveur ne doivent plus être gérés par un développeur - le fournisseur de cloud le gère. Si vous avez déjà utilisé quelque chose comme Arch sur un serveur, vous saurez à quel point il est facile d’effacer un paquet critique et de tout casser!

  • Cela permet aux développeurs de se concentrer sur leurs points forts: le code . La plupart des développeurs ne seront probablement pas excellents à la fois en infrastructure de serveur et en programmation - sans serveur élimine simplement un problème de l'équation.


"ne devrait pas avoir besoin de se soucier de l'infrastructure du serveur du tout". C’est vraiment une bonne chose car, selon mon expérience, beaucoup d’entre eux ont déjà des conséquences désastreuses!
Phill W.

15

Martin Fowler a un bon aperçu:
https://martinfowler.com/articles/serverless.html

TL; DR
"Serverless" décrit le développement d’applications et l’architecture qui conçoit des applications dans lesquelles l’infrastructure est éphémère , ce qui signifie qu’elles tendent à être basées sur des conteneurs et peuvent «aller et venir» selon un mécanisme d’échelle dynamique. Cela prescrit l'utilisation d'architectures sans état qui dépendent de technologies distribuées (telles que les magasins de clés / valeurs).


2
Non seulement éphémère, mais complètement abstraite. Dans de nombreuses configurations modernes sans serveur (telles que AWS EC2 ASG), l'infrastructure est également éphémère. une instance EC2 dans un groupe ASG peut être terminée à tout moment.
Adrian

14

'Serverless', comme beaucoup de choses dans notre espace, est en train de devenir un terme surchargé. Mais généralement, cela signifie: "Fonctionnellement, notre architecture ne dépend pas du provisionnement ou de la maintenance en cours d'un serveur".

La première instance qui nous vient à l’esprit est une application javascript à une seule page, qui utilise un stockage local et qui est stockée sur un site comme Amazon S # ou Github Pages (ou tout autre site statique - c’est là des exemples courants). Imaginez quelque chose comme une application de type «faire» ou «faire avancer les choses» qui fonctionne entièrement dans votre navigateur. Votre navigateur utilise un service tel que S3 pour télécharger le code. Les éléments que vous stockez sont tous stockés dans la mémoire de stockage locale de votre navigateur. Il n'y a pas de serveur que vous maintenez pour cela.

La seconde instance, plus compliquée (et celle qui a popularisé le terme 'sans serveur'), ​​utilise un service comme AWS Lambda. Permettez-moi de vous expliquer ceci en présentant le problème qu'il résout:

À plusieurs reprises au cours de ma carrière, j'ai résolu un problème commercial pour un client avec un peu plus que du code ruby ​​qui effectuait un extrait, une transformation et un chargement périodiques (généralement écrit sous forme de tâche de travail). Une fois résolu, je l’automatiserais typiquement avec cron. Ensuite, le problème devient «Où dois-je héberger cette chose qui fonctionne une fois par heure? Pour certains clients, nous configurions un serveur dans leur infrastructure existante. Pour d'autres, nous avions configuré une instance EC2, même si celle-ci était inactive 99% du temps. Dans l'un ou l'autre de ces cas, il existe un serveur nécessitant un provisionnement, des correctifs, une surveillance, une mise à jour, etc.

Avec Amazon Lambda, je peux prendre cette tâche de rake et l'exécuter sur leur service en tant que pure fonction. Je peux même le programmer. Ce client n'aurait plus besoin d'une infrastructure pour une chose aussi simple, une fois par heure.

Avec 'serverless', il y a toujours un serveur, tout comme avec 'cloud', il y a toujours un ordinateur. Il y a juste un niveau d'abstraction qui prend certaines responsabilités environnementales pour vous.


Mon vote vers le haut pour l’exemple concret du travail une fois par heure qui nécessitait généralement un EC2. Maintenant, vous avez juste besoin d'une fonction Lambda!
HopeKing

10

Toutes les bonnes réponses déjà. Je passais en revue le blog « Penser sans serveur - Comment les nouvelles approches répondent aux besoins modernes en traitement de données dans HighScalability», où je suis tombé sur cette excellente explication de ce que signifie sans serveur:

L'expression «sans serveur» ne signifie pas que les serveurs ne sont plus impliqués. Cela signifie simplement que les développeurs n'ont plus besoin de trop penser à eux. Les ressources informatiques sont utilisées comme des services sans avoir à gérer des capacités ou des limites physiques. Les fournisseurs de services assument de plus en plus la responsabilité de la gestion des serveurs, des magasins de données et d’autres ressources d’infrastructure… Le fait de ne pas utiliser de serveur permet aux développeurs de se concentrer davantage sur le niveau serveur au niveau tâche. Les solutions sans serveur permettent aux développeurs de se concentrer sur ce que leur application ou leur système doit faire en supprimant la complexité de l'infrastructure principale.

Et, une expérience supplémentaire de mon expérience personnelle dans la création d’une infrastructure sans serveur est la suivante:

  • Les pipelines de données sans serveur n'ont pas vraiment besoin d'être en temps réel. Il est possible de créer des pipelines sans serveur de traitement par lots efficaces via les mécanismes d'alerte CloudWatch d'AWS, ce qui permet de surveiller les outils et de générer des alertes pour (AWS) Lambda à calculer.

Comme par exemple: stockez les fichiers dans une file d'attente AWS SQS. Une fois que le nombre de messages dans la file d'attente atteint 10, déclenchez un événement vers Lambda.


6

En plus d’expliquer simplement la définition du terme sans serveur, les origines du terme et son histoire donnent également un aperçu de sa signification. Le concept est né avec le JAWS cadre par Austen Collins , qui a obtenu plus tard rebaptisé comme Serverless . Je l'ai d'abord appris lors de la session AWS re: Invent 2015 , qui peut aider à dater le concept. C'est ce qui a en fait été appelé Serverless, qui s'est ensuite rapidement étendu à d'autres systèmes de cloud computing:

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.