Serverless đ„
Concept gĂ©nĂ©ralâ
Vous avez peut-ĂȘtre dĂ©jĂ entendu parler de serverless. C'est un terme qui peut ĂȘtre trompeur, car il ne signifie pas qu'il n'y a pas de serveur. En rĂ©alitĂ©, il signifie que :
- Ce n'est pas vous qui administrez le serveur.
- La mise Ă l'Ă©chelle automatique : c'est possible de passer de 100 requĂȘtes par jour Ă 1000 requĂȘtes par seconde sans rien toucher.
Vous n'avez plus à écrire de code serveur pour intéragir avec la base de données, comme c'était le cas dans vos cours de web et de développement mobile. Dans notre cas, le client (ex : application Flutter ou site web) communique directement avec le fournisseur de service serverless. Dans cette page, nous allons résumer à haut niveau différents services serverless possibles.
Cette session, nous allons utiliser Firebase de Google, qui regroupe plusieurs services Serverless.
Il existe d'autres fournisseurs de services serverless comme Supabase ou AWS Amplify.
Authentificationâ
Vous avez peut-ĂȘtre remarquĂ©s que le code serveur que vous Ă©crivez pour de l'authentification se ressemble toujours eu peu :
- Quand un utilisateur créer un compte, il doit fournir minimalement un identifiant (ex : courriel, nom d'utilisateur) et un mot de passe, qui respecte certains critÚres.
- Quand un utilisateur se connecte, on veut vérifier que les informations qui ont été entrées correspondent à la combinaison identifiant - mot de passe de l'utilisateur.
C'est du code assez ennuyeux à écrire puisqu'il est généralement redondant, mais critique pour la sécurité de votre application.
Des services comme Firebase Auth, Okta, auth0 et entra, pour vous offrent de faire cette gestion redondante. En toute franchise, leur code est probablement plus sécuritaire que celui d'étudiants au DEC en troisiÚme année!
Votre application cliente n'a donc qu'Ă envoyer les informations requises, et ĂȘtre capable d'obtenir une rĂ©ponse, et envoyer le token d'authentification que le service vous renvoie. Tout le reste est gĂ©rĂ©.
Plusieurs services aggrĂšgent mĂȘme diffĂ©rents services d'authentification. Par exemple, avec Firebase Aauth, c'est possible de d'offrir Ă vos utilisateurs de se connecter Ă partir de :
- Courriel + Mot de passe
- Google SignIn
- Apple
- GitHub
- Microsoft
- Numéro de téléphone
- Et quelques autres!
Base de donnĂ©esâ
On vous a souvent expliqué que ce n'est normalement pas une bonne idée pour un client de communiquer directement avec une base de données, pour des raisons de sécurité. C'est généralement encore vrai, mais dans certains cas, on arrive à exposer la base de données au client en incluant une couche de sécurité autour.
Avec Firebase Storage, vous allez intéragir directement avec la base de données. C'est un nouveau concept de base de données qui s'appelle "Orienté document", mais nous y renviendons en temps et lieu.
Fonctionsâ
Les Cloud functions sont, commee son nom l'indique, des fonctions, qui sont exécutées directement. Elles sont beaucoup plus simple que les framework avec lesquels vous avez intéragis, comme .NET Core ou SpringBoot. Ici il n'est pas question de contrÎleurs, de services, de Middleware, ou autre.
C'est simplement des fonctions qui peuvent ĂȘtre appelĂ©es depuis le client, qui peuvent ensuite interagir avec la base de donnĂ©es, et bien plus.
Nous allons voir que nous sommes capable d'accomplir beaucoup de choses sans avoir recours aux Cloud Functions, en intéragissant directement avec la base de donnnées de Firebase.
ĂcosystĂšmeâ
"L'écosystÚme" est un autre terme marketing souvent utilisé chez Apple, qui signifie que les différents produits sont faits pour fonctionner ensemble. C'est le cas de Firebase, et de la plupart des services serverless, qui misent sur l'intégration entre chacun des services qu'ils offrent. Par exemple, Firebase propose de valider le contrÎle d'accÚs en utilisant les données du service d'authentification.
En général, une fois qu'on a choisi un fournisseur de services serverless, il est difficile de changer pour un autre fournisseur. Il est donc important de bien choisir son fournisseur avant de commencer à développer son application. Autrement on est pris dans la jungle de l'écosystÚme.