Stéphane WOUTERS
https://stephanewouters.fr/
Cloud et Système Web
Quand la partie serveur d'une application est abstraite à son maximum.
Une manière de développer une application où on ne soucie plus du serveur
L'un des buzzworld du cloud
Nombre de recherches Google sur le mot "serverless"
Pourquoi un intérêt pour supprimer les serveurs ?
La gestion de serveur a un coût opérationnel :
La conception de l’infrastructure
La mise en place de l'infrastructure
La mise à jour logicielle des serveurs
Les interventions pour corriger les problèmes
L’astreinte nécessaire pour superviser l’infrastructure
Le serverless serait une suppression de ces coûts. Ça intéresse les entreprises...
On utilise des services en SAAS dans le cloud pour générer des API, stocker de la donnée, gérer l'authentification...
Le code métier est côté client.
CLIENT
LOURD
Fichiers
Authentification
Base de données
API publiques
<code métier>
On développe l'application côté serveur.
le code est cloisonné dans des fonctions qui seront exécutées dans des mini conteneurs
C'est du FAAS (Fonction As A Service)
Leur exécution est assurée par le prestataire.
CLIENT
<code métier>
Fonction 1
Authentification
Base de données
<code métier>
Fonction 2
<code métier>
Fonction 3
<code métier>
Fonction 4
Fichiers
<code métier>
Fonction 5
Vue graphique
FAAS revient à exécuter du code backend sans gérer ses propres serveurs
Contrairement au PAAS, l'utilisateur ne s'occupe même pas du dimensionnement
De manière générale, qu'est ce qu'une fonction ?
Fonction
Données
traitées
Données
entrantes
En programmation, une fonction est un bout de code qui prend des paramètres et qui retourne un résultat
Les fonctions peuvent être configurées pour être déclenchées de manières différentes :
Exemple avec un évènement "dépôt de fichier"
Pour redimensionner automatiquement des images
À une URL HTTP pour créer des webservices :
Ne nécessite pas de langage ou de framework particulier.
Par exemple, sur AWS Lambda on peut envoyer des fonctions en Javascript, Python, Go, Java...
La différence réside dans le découpage du code
Une fonction = Un code source indépendant
Le déploiement est différent car il n'y a pas de serveur applicatif.
Le code source est directement envoyé sur le FAAS
La mise à l'échelle est totalement automatique et gérée par le prestataire.
Afin de respecter ses engagements, l'opérateur définit souvent des quotas.
L'utilisateur n'a pas connaisance du nombre de machines utilisées
La facturation ne se fait pas au nombre de ressources consommées mais au nombre d'appels
C'est la différence principale avec un PAAS
Afin d'optimiser leurs côuts, les prestataires "endorment" les containers qui ne sont pas appelés souvent
Quand une fonction est appelée, il faut le temps que le conteneur se réveille
Les fonctions sont hébergées dans des mini-conteneurs
Peut impliquer des temps de réponse > 5 secondes pour une fonction, même simple
C'est le "Cold start"
Ecosystème AWS complet
(Multi-langages, Web services, Stockage de fichiers, événements, BDD...)
Plus limité mais
plus simple en utilisation
(Uniquement pour créer
des webservices en Javascript)
Deux exemples :
Webtask permet de créer des fonctions reliés à un endpoint HTTP
Webtask n'est compatible qu'avec un langage : NodeJS
(Javascript Côté serveur)
Sur Webtask, on peut écrire le code de deux manières :
Sur son poste local avec son éditeur de texte préféré, puis en uploadant le code avec une commande
Directement en ligne dans son navigateur avec l'éditeur de texte Webtask
OU
module.exports = function(context, cb) {
cb(null, 'Bonjour');
}
Cette fonction retourne "Bonjour" quand on l'appelle
module.exports = function(context, cb) {
cb(null, "Hello " + context.query.name);
};
Les paramètres d'entrées sont dans la variable "context".
Webtask intègre un système pour stocker des données et les réutiliser plus tard.
module.exports = function(ctx, cb) {
ctx.storage.set("Bonjour");
cb(null, "OK");
}
module.exports = function(ctx, cb) {
ctx.storage.get(function (error, data) {
cb(null, data);
});
}
Écrire
Lire
Un webservice pour créer
une TODO list avec Webtask