Introduction au Serverless
Introduction
Le serverless est un paradigme très différent de l’approche traditionnelle basée sur une infrastructure matérielle physique ou virtuelle. Ce nouveau paradigme, apparu depuis quelques années, est le résultat des évolutions extrêmement significatives enregistrées dans le domaine de la technologie de l’information, notamment dans l’implémentation des microservices et des services web en général. Le serverless permet à des organisations de toutes tailles de développer des applications puissantes et évolutives, qui peuvent avoir un effet disruptif dans leurs industries respectives, tout comme Dropbox a révolutionné le stockage digital ou Spotify l’accès à la musique et sa consommation.
Ainsi, ce livre est né d’une certitude inébranlable que AWS Lambda et, plus généralement, le serverless, sera un nouveau game changer pour les développeurs et architectes logiciels. Ce premier chapitre est une introduction au serverless et à AWS Lambda, ce qui nous permettra par la suite de plonger dans Java et ses méandres ; ce livre est donc aussi un livre sur Java.
Avant de commencer, il faut préciser que le mot serverless porte en quelque sorte bien mal son nom. Car, en effet, interagir avec une API (Application Program Integration) déployée...
Le serverless : le stade suprême du Cloud ?
Dans un intervalle de deux décades, à compter des années 90, une librairie virtuelle basée à Seattle et appelée Amazon.com a réussi à grandir au point de devenir le plus important détaillant mondial en ligne. Comment cela a-t-il été possible ? Qu’est ce qui a pu faire qu’un simple site web puisse devenir un géant du commerce électronique, sans même avoir à ouvrir le moindre point de vente ? Aujourd’hui, la réponse nous paraît évidente : le digital, et Internet, en multipliant les canaux de distribution ont complètement transformé le commerce mondial.
1. Comment en est-on arrivé là ?
En 2006, Amazon était déjà devenu une librairie virtuelle extrêmement efficace et prospère lorsque Werner Vogels, son CTO (Chief Technical Officer), a eu cette vision exceptionnelle qui a permis à la compagnie de se transformer en une des organisations technologiques les plus cotées sur le plan mondial.
Dans une interview accordée au magasin américain ACM Queue en juin 2006, Vogels expliquait les principes catalyseurs d’une telle transformation :
« A large part of Amazon.com technology evolution has been driven to enable this continuing growth, to be ultra-scalable while maintaining availability and performance » (Une grande partie de la technologie Amazon.com a été menée pour permettre à cette croissance continue d’être ultra-évolutive, tout en maintenant sa disponibilité et performance).
Pour obtenir cette évolutivité accrue (ultra-scalability) il est nécessaire, explique Vogels, non seulement d’adopter une nouvelle démarche d’architecture, mais surtout de nouvelles mentalités. Ainsi, s’exprimant sur le thème classique des relations entre développement (dev) et opérations (ops), Vogels dit :
« The traditional model is that you take your software to the wall that separates development and operations and throw it over and then forget about it. Not at Amazon ! Here you build it, you run it » (Le modèle traditionnel veut qu’on balance...
La "serverless attitude"
L’architecture serverless n’est pas à 100 % homogène et, par conséquent, elle comporte un certain polymorphisme. En raison de ce polymorphisme, on parle des types de services suivants :
-
Services à la demande
-
Services légers
-
Services lourds
-
Services événementiels
-
Services tiers
Cette classification est en fait très indicative et plutôt vague, car il apparaît difficile de classer des services donnés dans une seule catégorie, le plus souvent, ils correspondent à plusieurs types. De plus, il faut noter que la terminologie utilisée est variable et sui generis.
1. Services à la demande
Comme nous venons de le voir précédemment, le serverless est le descendant spirituel de la SOA. Une des conséquences est que le code est structuré dans des unités isolées et indépendantes à granularité fine, appelées « fonctions », qui sont exécutées à la demande par un service public et sans état tel que AWS Lambda. Ces fonctions, qui peuvent accomplir des traitements des plus généraux comme, par exemple, enregistrer des données, effectuer des calculs ou appeler d’autres fonctions, sont invoquées ponctuellement, explicitement et de manière synchrone.
Dans des cas plus complexes, des fonctions serverless peuvent être composées dans des pipelines plus élaborés ou orchestrées par un service externe, mais ces cas-là sont loin d’être typiques et, en tant que développeur, vous devriez éviter de rendre trop complexes vos fonctions, car ce serait une démarche allant à l’encontre des principes mêmes du serverless.
2. Services légers
Il y a un autre principe fondamental de l’architecture logicielle, connu sous le nom de SRP (Single Responsibility Principle), selon...