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

Les développeurs passent d'innombrables heures à résoudre des problèmes commerciaux avec du code. Ensuite, c'est au tour de l'équipe des opérations de passer d'innombrables heures, d'abord à déterminer comment obtenir le code que les développeurs écrivent et à exécuter sur tous les ordinateurs disponibles, puis à s'assurer que ces ordinateurs fonctionnent correctement. La deuxième partie est vraiment une tâche sans fin. Pourquoi ne pas laisser cette partie à quelqu'un d'autre?

De nombreuses innovations informatiques au cours des deux dernières décennies - machines virtuelles, cloud computing, conteneurs - ont été axées sur le fait de ne pas avoir à penser beaucoup à la machine physique sous-jacente sur laquelle votre code s'exécute. L' informatique Serverless est un paradigme de plus en plus populaire qui prend ce désir à sa conclusion logique: Avec l' informatique de serveur, vous ne devez pas savoir quoi que ce soit sur le matériel ou OS exécute votre code sur, car il est tout le soin de vous prises par un fournisseur de services .

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

L'informatique sans serveur est un modèle d'exécution pour le cloud dans lequel un fournisseur de cloud alloue dynamiquement - puis facture à l'utilisateur - uniquement les ressources de calcul et le stockage nécessaires pour exécuter un morceau de code particulier. Naturellement, il y a encore des serveurs impliqués, mais leur approvisionnement et leur maintenance sont entièrement pris en charge par le fournisseur. Chris Munns, le défenseur d'Amazon pour le sans serveur, a déclaré lors d'une conférence de 2017 que, du point de vue de l'équipe qui rédige et déploie le code, «il n'y a aucun serveur à gérer ou à provisionner. Cela n'inclut rien qui serait bare metal, rien de virtuel, rien qui soit un conteneur. monde sans serveur. » 

Comme l'explique le développeur Mike Roberts, le terme était autrefois utilisé pour les scénarios dits back-end-as-a-service , où une application mobile se connectait à un serveur principal hébergé entièrement dans le cloud. Mais aujourd'hui , quand les gens parlent de l' informatique serverless, ou une architecture serveur, ils veulent dire la fonction-as-a-service des offres, dans lequel un client écrit code seulement plaquages logique métier et télécharge à un fournisseur. Ce fournisseur s'occupe de tout le provisionnement matériel, de la gestion des machines virtuelles et des conteneurs, et même des tâches telles que le multithreading qui sont souvent intégrées au code d'application.

Les fonctions sans serveur sont basées sur les événements, ce qui signifie que le code n'est appelé que lorsqu'il est déclenché par une demande. Le fournisseur ne facture que le temps de calcul utilisé par cette exécution, plutôt que des frais mensuels fixes pour la maintenance d'un serveur physique ou virtuel. Ces fonctions peuvent être connectées ensemble pour créer un pipeline de traitement, ou elles peuvent servir de composants d'une application plus grande, interagissant avec d'autres codes exécutés dans des conteneurs ou sur des serveurs conventionnels.

Avantages et inconvénients de l'informatique sans serveur

À partir de cette description, deux des plus grands avantages de l'informatique sans serveur devraient être clairs: les développeurs peuvent se concentrer sur les objectifs commerciaux du code qu'ils écrivent, plutôt que sur les questions d'infrastructure; et les organisations ne paient que pour les ressources de calcul qu'elles utilisent réellement de manière très granulaire, plutôt que d'acheter du matériel physique ou de louer des instances cloud qui restent pour la plupart inactives.

Comme le souligne Bernard Golden, ce dernier point présente un intérêt particulier pour les applications événementielles. Par exemple, vous pouvez avoir une application inactive la plupart du temps, mais dans certaines conditions, elle doit gérer plusieurs demandes d'événements à la fois. Ou vous pouvez avoir une application qui traite les données envoyées à partir d'appareils IoT avec une connectivité Internet limitée ou intermittente. Dans les deux cas, l'approche traditionnelle nécessiterait de provisionner un serveur robuste capable de gérer des capacités de travail de pointe, mais ce serveur serait sous-utilisé la plupart du temps. Avec une architecture sans serveur, vous ne payez que pour les ressources serveur que vous utilisez réellement. L'informatique sans serveur serait également utile pour des types spécifiques de traitement par lots.L'un des exemples canoniques d'un cas d'utilisation d'une architecture sans serveur est un service qui télécharge et traite une série de fichiers image individuels et les envoie à une autre partie de l'application.

L'inconvénient peut-être le plus évident des fonctions sans serveur est qu'elles sont intentionnellement éphémères et, comme le dit AlexSoft, «ne conviennent pas aux tâches à long terme». La plupart des fournisseurs sans serveur ne laisseront pas votre code s'exécuter pendant plus de quelques minutes, et lorsque vous lancez une fonction, il ne conserve aucune donnée avec état des instances précédemment exécutées. Un problème connexe est que le code sans serveur peut prendre jusqu'à plusieurs secondes pour démarrer. Ce n'est pas un problème dans de nombreux cas d'utilisation, mais si votre application nécessite une faible latence, soyez averti.

Bon nombre des autres inconvénients, comme l'ont souligné Rohit Akiwatkar et Gary Arora, sont liés au verrouillage des fournisseurs. Bien qu'il existe des options open source disponibles, le marché sans serveur est dominé par les grands fournisseurs de cloud commerciaux, comme nous le verrons dans un instant. Cela signifie que les développeurs finissent souvent par utiliser les outils de leurs fournisseurs, ce qui rend difficile le changement s'ils sont insatisfaits. Et comme une grande partie de l'informatique sans serveur a lieu, par définition, sur l'infrastructure du fournisseur, il peut être difficile d'intégrer du code sans serveur dans les pipelines de développement et de test en interne.

Fournisseurs sans serveur: AWS Lambda, Azure Functions et Google Cloud Functions

L'ère moderne de l'informatique sans serveur a commencé avec le lancement d'AWS Lambda, une plate-forme basée sur le service cloud d'Amazon, en 2014. Microsoft a emboîté le pas avec Azure Functions en 2016. Google Cloud Functions, qui était en version bêta depuis 2017, a finalement atteint le statut de production en juillet 2018. Les trois services présentent des limites, des avantages, des langues prises en charge et des façons de faire légèrement différentes. Rohit Akiwatkar a un bon aperçu détaillé des distinctions entre les trois. IBM Cloud Functions, basé sur la plate-forme open source Apache OpenWhisk, est également en cours d'exécution.

Parmi toutes les plates-formes informatiques sans serveur, AWS Lambda est la plus importante et a évidemment eu le plus de temps pour évoluer et mûrir. a une couverture des mises à jour et des nouvelles fonctionnalités ajoutées à AWS Lambda au cours de l'année écoulée.

Piles sans serveur

Comme c'est le cas dans de nombreux domaines logiciels, le monde sans serveur a vu l'évolution des piles de logiciels, qui rassemblent différents composants nécessaires pour créer une application sans serveur. Chaque pile se compose d'un langage de programmation dans lequel vous allez écrire le code, d'un cadre d'application qui fournit une structure pour votre code et d'un ensemble de déclencheurs que la plate-forme comprendra et utilisera pour lancer l'exécution de code.

Bien que vous puissiez mélanger et assortir différentes offres spécifiques dans chacune de ces catégories, il existe des limitations en fonction du fournisseur que vous utilisez, avec quelques chevauchements. Par exemple, pour les langages, vous pouvez utiliser Node.js, Java, Go, C # et Python sur AWS Lambda, mais seuls JavaScript, C # et F # fonctionnent de manière native sur les fonctions Azure. En ce qui concerne les déclencheurs, AWS Lambda a la liste la plus longue, mais beaucoup d'entre eux sont spécifiques à la plate-forme AWS, comme Amazon Simple Email Service et AWS CodeCommit; Google Cloud Functions, quant à lui, peut être déclenché par des requêtes HTTP génériques. Paul Jaworski examine en profondeur les piles de chacune des trois grandes offres.

Framework sans serveur

Cela vaut la peine de s'attarder un peu sur la partie cadre de l'équation, car cela définira beaucoup sur la façon dont vous finirez par créer votre application. Amazon a sa propre offre native, le modèle d'application sans serveur (SAM) open source, mais il en existe d'autres également, dont la plupart sont multiplateformes et également open source. L'un des plus populaires est appelé, de manière plutôt générique, Serverless, et souligne qu'il offre la même expérience sur chaque plate-forme prise en charge, à savoir AWS Lambda, Azure Functions, Google Cloud Functions et IBM OpenWhisk. Une autre offre populaire est Apex, qui peut aider à faire entrer dans la mêlée certaines langues non disponibles sur certains fournisseurs.

Bases de données sans serveur

Comme nous l'avons noté ci-dessus, l'un des inconvénients du travail avec du code sans serveur est qu'il n'a pas d'état persistant, ce qui signifie que les valeurs des variables locales ne persistent pas à travers les instanciations. Toutes les données persistantes auxquelles votre code doit accéder doivent être stockées ailleurs, et les déclencheurs disponibles dans les piles pour les principaux fournisseurs incluent tous des bases de données avec lesquelles vos fonctions peuvent interagir.

Certaines de ces bases de données sont elles-mêmes appelées sans serveur. Cela signifie qu'elles se comportent comme les autres fonctions sans serveur dont nous avons parlé dans cet article, à l'exception évidente du fait que les données sont stockées indéfiniment. Mais une grande partie de la surcharge de gestion impliquée dans l'approvisionnement et la maintenance d'une base de données est mise de côté. Comme le dit le développeur Jeremy Daly: «Tout ce que vous avez à faire est de configurer un cluster, puis toute la maintenance, les correctifs, les sauvegardes, la réplication et la mise à l'échelle sont gérées automatiquement pour vous. Comme pour les offres de fonction en tant que service, vous ne payez que pour le temps de calcul que vous utilisez réellement, et les ressources sont augmentées et réduites au besoin pour répondre à la demande.

Les trois grands fournisseurs sans serveur proposent chacun leurs propres bases de données sans serveur: Amazon a Aurora Serverless et DynamoDB, Microsoft a Azure Cosmos DB et Google a Cloud Firestore. Ce ne sont cependant pas les seules bases de données disponibles. Nemanja Novkovic a des informations sur plus d'offres.

Informatique sans serveur et Kubernetes

Les conteneurs aident à propulser la technologie sans serveur sous le capot, mais les frais généraux liés à leur gestion sont pris en charge par le fournisseur et donc invisibles pour l'utilisateur. Beaucoup considèrent l'informatique sans serveur comme un moyen d'obtenir de nombreux avantages des microservices conteneurisés sans avoir à gérer leur complexité, et commencent même à parler d'un monde post-conteneur.

En vérité, les conteneurs et l'informatique sans serveur coexisteront presque certainement pendant de nombreuses années, et en fait, les fonctions sans serveur peuvent exister dans la même application que les microservices conteneurisés. Kubernetes, la plate-forme d'orchestration de conteneurs la plus populaire, peut également gérer une infrastructure sans serveur. En effet, avec Kubernetes, vous pouvez intégrer différents types de services sur un seul cluster.  

Hors ligne sans serveur

Vous pourriez trouver la perspective de vous lancer dans l'informatique sans serveur un peu intimidante, car il semble que vous deviez vous inscrire auprès d'un fournisseur pour jouer et voir comment cela fonctionne. Mais n'ayez crainte: il existe des moyens d'exécuter du code sans serveur hors ligne sur votre propre matériel local. Par exemple, AWS SAM fournit une fonctionnalité locale qui vous permet de tester le code Lambda hors ligne. Et si vous utilisez le framework d'application sans serveur, consultez sans serveur hors ligne, un plug-in qui vous permet d'exécuter du code localement. Bonne expérience!