Des fonctions simples isolées facilitent le développement, tandis que l’exécution déclenchée par les événements rend les opérations moins chères. Dans les prochains paragraphes, nous allons découvrir l’informatique sans serveur ou Serverless.
Les développeurs passent beaucoup d’heures à résoudre les problèmes de l’entreprise avec du code. C’est ensuite au tour de l’équipe des opérations de passer des heures à comprendre comment obtenir le code écrit par les développeurs et à l’utiliser sur tous les ordinateurs disponibles. Ils doivent aussi veiller au bon fonctionnement de ces ordinateurs.
La deuxième partie est vraiment une tâche interminable. Pourquoi ne pas laisser cette partie à quelqu’un d’autre ?
Au cours des deux dernières décennies, l’innovation informatique (machines virtuelles, cloud computing, conteneurs) s’est concentrée sur la nécessité de ne pas trop penser à la machine physique sous-jacente sur laquelle votre code est exécuté.
L’informatique sans serveur est un paradigme de plus en plus populaire. Avec l’informatique sans serveur, vous ne devez rien savoir du matériel ou du système d’exploitation sur lequel votre code s’exécute. En effet, un fournisseur de services prend tout en charge.
Qu’est-ce que l’informatique Serverless ?
L’informatique Serverless est un modèle d’exécution pour le cloud dans lequel un fournisseur de cloud alloue de manière dynamique et facture à l’utilisateur, uniquement les ressources de calcul et le stockage nécessaires à l’exécution d’une partie de code particulier.
Bien entendu, cela implique toujours des serveurs. Cependant, le fournisseur prend entièrement en charge leur provisionnement et leur maintenance.
Chris Munns, l’avocat d’Amazon pour l’informatique sans serveur, a déclaré lors d’une conférence en 2017 que, du point de vue de l’équipe qui écrivait et déployait le code:
Il n’y a pas de serveurs à gérer ou à mettre en service. Il n’y a rien qui soit de type « bare metal », virtuel ou conteneur. Cela ne demande pas de gérer un hébergeur, de le corriger ou de traiter quoi que ce soit au niveau du système d’exploitation.
Les back-end-as-a-service
Comme l’explique le développeur Mike Roberts, les scénarios dits « back-end-as-a-service » ont autrefois utilisé ce terme.
Dans les ” back-end-as-a-service”, une application mobile se connectait à un serveur principal hébergé entièrement dans le cloud. Cependant, aujourd’hui, lorsque les gens parlent d’informatique sans serveur ou d’une architecture sans serveur, il s’agit des offres des fonctions en tant que service.
Dans ces offres, un client écrit un code qui n’aborde que la logique métier et le télécharge chez un fournisseur. Ce fournisseur s’occupe de tout le provisionnement du matériel et de la gestion des machines virtuelles et des conteneurs. Il se charge même de tâches telles que le multithreading, souvent intégrées au code de l’application.
Les fonctions sans serveur sont gérées par événement.
Cela signifie que le code n’est appelé que lorsqu’il est déclenché par une requête.
Le fournisseur facture uniquement 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 entre elles pour créer un pipeline de traitement. Elles peuvent aussi servir de composants d’une application plus grande, interagissant avec un autre code. Ce dernier s’exécute dans des conteneurs ou sur des serveurs classiques.
Les avantages et inconvénients de l’informatique Serverless
Les avantages
D’après cette description, il y a deux principaux avantages de l’informatique sans serveur.
Les développeurs peuvent se concentrer sur les objectifs commerciaux du code qu’ils écrivent, plutôt que sur des questions d’infrastructure.
Puis, les entreprises paient uniquement les ressources de calcul qu’elles utilisent réellement de façon très détaillée, au lieu d’acheter du matériel physique ou de louer des instances de cloud qui sont généralement inactives.
Comme Bernard Golden l’a souligné, ce dernier point présente un intérêt particulier pour les applications déclenchées par les événements.
A titre d’exemple, vous pourriez avoir une application inactive dans la plupart du temps. Cependant, dans certaines conditions, elle doit gérer plusieurs requêtes sur des événements à la fois.
Vous pouvez aussi avoir une application qui traite les données envoyées par des appareils IoT avec une connectivité Internet limitée ou intermittente.
Dans les deux cas, l’approche traditionnelle nécessiterait de fournir un serveur robuste capable de gérer les pics de travail. Cependant, ce serveur serait sous-utilisé dans la plupart du temps. Avec une architecture sans serveur, vous ne payez que pour les ressources du 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. Ensuite, il les envoie à une autre partie de l’application.
Les inconvénients de l’informatique sans serveur
L’inconvénient le plus évident des fonctions sans serveur est peut-être qu’elles sont intentionnellement éphémères.
Comme AlexSoft le dit :
Le Serverless est inapproprié pour des tâches à long terme
La plupart des fournisseurs sans serveur ne laissent pas votre code s’exécuter plus de quelques minutes.
Vous lancez une fonction, elle ne conserve aucune donnée avec état à partir des instances exécutées précédemment. Un problème connexe est que le code sans serveur peut prendre jusqu’à plusieurs secondes pour lancer. Ceci n’est pas vraiment un problème pour de nombreux cas d’utilisation, mais si votre application nécessite une faible latence, soyez averti !
Comme le soulignent Rohit Akiwatkar et Gary Arora, de nombreux autres inconvénients ont rapport avec le blocage des fournisseurs.
Bien que des options open source soient disponibles, les grands fournisseurs de cloud professionnel domine le marché de l’informatique sans serveur. Cela signifie que les développeurs finissent souvent par utiliser les outils de leurs fournisseurs.
Ce qui ne facilite pas leur basculement s’ils deviennent 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 à des pipelines de développement et de test internes.
Les fournisseurs sans serveur : AWS Lambda, Azure Functions et Google Cloud Functions
L’ère de l’informatique sans serveur a commencé avec le lancement d’AWS Lambda, une plateforme basée sur le service cloud d’Amazon, en 2014.
Microsoft a suivi avec Azure Functions en 2016. Google Cloud Functions, en version bêta depuis 2017, a finalement atteint le statut de production en juillet 2018.
Ces trois services ont des limitations, des avantages, des langages pris en charge et leurs façons de faire légèrement différents.
Rohit Akiwatkar a fait un bon aperçu détaillé de leurs différences. IBM Cloud Functions, qui repose sur la plateforme open source Apache OpenWhisk, est également en cours d’exécution.
Parmi toutes les plateformes informatiques sans serveur, AWS Lambda est la plus importante et a évidemment eu le plus de temps pour évoluer et développer.
Les piles de l’informatique sans serveur
Comme dans de nombreux domaines logiciels, le monde sans serveur a vu l’évolution des piles de logiciels.
Elles contiennent différents composants nécessaires à la création d’une application sans serveur. Chaque pile comprend un langage de programmation dans lequel vous allez écrire le code et un framework d’application fournissant une structure à votre code. Elle dispose également d’un ensemble de déclencheurs que la plateforme comprendra et utilisera pour lancer l’exécution du code.
Bien qu’il soit possible de combiner différentes offres spécifiques dans chacune de ces catégories, il existe des limitations et des chevauchements selon le fournisseur que vous choisissez.
A titre d’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 Azure Functions. AWS Lambda possède la liste la plus longue en termes de déclencheurs. Cependant, la plupart d’entre eux sont spécifiques à la plateforme AWS, tels que Amazon Simple Email Service et AWS CodeCommit.
Quant à Google Cloud Functions, elles peuvent être déclenchées par des requêtes HTTP génériques. Paul Jaworski examine en détail les piles de chacune de ces trois grandes offres.
Le framework de l’informatique sans serveur
C’est important de parler un peu de la partie framework. Cela déterminera beaucoup la façon dont vous construirez votre application.
Amazon propose sa propre offre native, le modèle SAM (Serverless Application Model) open source. Il en existe également d’autres, dont la plupart sont multi-plateformes et à code source ouvert.
L’un des plus populaires s’appelle, de manière générique, Serverless. Il souligne le fait qu’il offre la même expérience sur chaque plateforme prise en charge, à savoir AWS Lambda, Azure Functions, Google Cloud Functions et IBM OpenWhisk. Une autre offre intéressante est Apex. Elle peut vous aider avec certains langages qui ne sont pas disponibles chez certains fournisseurs.
Les bases de données de l’informatique Serverless
Comme nous l’avons déjà mentionné ci-dessus, le fait de travailler avec du code sans serveur réside dans le fait qu’il n’y a pas d’état persistant.
Cela signifie que les valeurs des variables locales ne persistent pas entre les instanciations. Toutes les données persistantes auxquelles votre code doit accéder doivent être stockées ailleurs. Puis, tous les déclencheurs disponibles dans les piles pour les principaux fournisseurs incluent 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. En d’autres termes, elles se comportent comme les autres fonctions sans serveur décrites dans cet article, à l’exception évidente du fait que les données sont stockées indéfiniment.
Quoi qu’il en soit, l’utilisateur économisera une grande partie des frais de gestion liés au provisionnement et à la maintenance d’une base de données. Comme l’explique le développeur Jeremy Daly :
Il suffit de configurer un cluster, puis toute la maintenance, les correctifs, les sauvegardes, la réplication et la mise à l’échelle sont gérés automatiquement pour vous
Comme pour les offres des fonctions en tant que services, vous ne payez que pour le temps de calcul que vous utilisez réellement. Les ressources sont réparties en fonction des besoins pour répondre à la demande.
Les trois grands fournisseurs de l’informatique sans serveur proposent chacun leur propre base de données. Amazon avec Aurora Serverless et DynamoDB,
Microsoft avec Azure Cosmos DB et Google avec Cloud Firestore. Toutefois, ce ne sont pas les seules bases de données disponibles.
L’informatique sans serveur et Kubernetes
Les conteneurs aident à propulser la technologie sans serveur sous le capot.
Toutefois, le fournisseur prend en charge les frais liés à leur gestion. En effet, ces derniers n’existent donc pas pour l’utilisateur. De nombreux utilisateurs considèrent l’informatique sans serveur comme un moyen d’obtenir de nombreux avantages des microservices conteneurisés sans avoir à gérer leur complexité. Ils commencent même à parler d’un monde post-conteneur.
En réalité, les conteneurs et l’informatique sans serveur coexisteront presque certainement pendant encore de nombreuses années. De fait, les fonctions sans serveur peuvent exister dans la même application que les microservices conteneurisés.
Kubernetes, la plateforme 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 même cluster.
L’informatique sans serveur hors ligne
Débuter avec l’informatique sans serveur peut paraître un peu intimidant, car vous devez vous abonner à un fournisseur pour vous amuser et voir comment cela fonctionne.
Mais, rassurez-vous ! 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é Local qui vous permet de tester le code Lambda hors connexion.
Et si vous utilisez le framework d’application de l’informatique sans serveur, jetez un œil au plugin sans serveur hors ligne. Cela vous permet d’exécuter du code localement. Alors, à vous d’expérimenter !