Aller au contenu principal

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 :

  1. Ce n'est pas vous qui administrez le serveur.
  2. 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.

astuce

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
  • Facebook
  • 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.

attention

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.