Serverless - La librairie indispensable pour vos applications serverless

Le 09/05/2022 Par Arthur COMBEazureaws

Vous avez toujours voulu vous lancer dans le serverless, mais la montagne semblait trop haute à gravir ?

Pas de panique, nous allons vous aider à y voir plus clair, et vous proposer une porte d'entrée qui vous permettra de commencer directement à créer des applications serverless simplement !

Serverless pour faire du serverless, kezako ?

Serverless (notez le S majuscule), est une librairie permettant de faire de l'IaC (Infratructure as Code).

L'IaC, qui veut littéralement dire "infrastructure en tant que code", est un ensemble de méchanisme permettant de gérer, par de simple fichiers compréhensible par l'homme, une infrastructure virtuelle.

Cette démarche est d'autant plus utile dans le cadre du developpement d'application serverless, car leur infrastructure est souvent plus complexe, du fait de la démultiplication des services.

Un des points forts de Serverless est que vous pourrez supprimer la totalité de l'infrastructure que vous aller créer avec la librairie, juste avec une commande. Serverless va créer une Stack, avec ces avantages qui vont avec.

Vous pourrez également la dupliquer ou changer de région très facilement, ce qui peut être long et fastidieux si vous créez votre infrastructure à la main depuis l'interface.

Qu'importe le Cloud pourvu qu'on ait l'appli

Une des grandes puissance de cette librairie est qu'elle fonctionne avec tous les grands fournisseur de Cloud. Que ça soit Azure, AWS ou GCP, en passant par les moins connus en Europe comme Tencent Cloud ou Alibaba Cloud.

Fournisseurs service cloud

Il en va de même pour les language. Serverless étant une librairie qui ne s'occupe que de l'infrastructure, les seules limitations au language que vous utilisez pour vos fonctions serverless seront celle que vous proposes votre fournisseur de cloud.

Il est important de noter que la librairie est officiellement partenaire d'AWS, ce qui fait qu'elle est axée principalement sur l'utilisation d'AWS. Certaines fonctionnalités ne sont disponibles qu'avec AWS, et la plupart des exemples et de la littérature disponible en ligne sera pour une utilisation avec AWS.

Des fonctionnalités plus que bienvenues

Tester et debuger est souvent plutôt compliqué pour une application serverless, et le framework nous donne des outils afin de faciliter ces étapes.

Invoquer les fonctions sur commande

La librairie vous permet de lancer directement n'importe laquelle de vos fonctions serverless simplement grace à une ligne de commande sls invoke --function myFunction.

Cela vous évite d'aller vous promener dans l'interface pour trouver la fonction et la lancer.

Vous avez également directement les logs d'executions qui vous sont remontés, ce qui n'est pas forcement le cas depuis l'interface.

En parlant de logs

Grâce à la commande sls logs --function myFunction -t, vous pouvez avoir en direct tous les logs d'invocation d'une fonction, au fur et à mesure qu'ils arrivent.

Si vous avez déjà développé des Lambda sur AWS, vous savez à quel point le simple fait d'avoir les logs d'excution de votre fonction peut être compliqué.

Déployer uniquement ce que vous modifiez

Par défaut, sls deploy vas essayer de déployer toute la stack, et donc passer sur tous les élements pour voir ce qui a été modifié. Même si cela est beaucoup plus rapide la deuxième fois car il passera tout ce qui n'a pas besoin d'être modifié, Serverless vous proposes d'être encore plus précis ! Grace à sls deploy --function myFonction, vous pouvez choisir précisement une fonction à déployer, ce qui se fait instantanément et vous permet de modifier et tester vos fonctions très rapidement sans aucun soucis.

Un dashboard complet

Serverless vous proposes également un tableau de bord, qui vous permet d'unifier vos application serverless.

Le tableau de bord vous permettra d'avoir une vue détaillée de votre application, avec pour chaque fonction des métriques tel que le nombre d'invocation, leur durée ou la mémoire utilisée.

Tableau de bord serverless librairie

Vous avez également la possibilité de connecter votre Github ainsi que votre compte AWS afin de lancer des déploiements directement depuis l'interface, et même de créer des scénarios afin de tester vos fonctions.

Une application serverless en quelques lignes

Afin de vous montrer la puissance de la librairie, nous allons créer une application serverless très simple sur AWS avec la librairie Serverless : un endpoint REST qui renverra bonjour.

Sans Serverless

Si vous décidez de créer cette application sans Serverless, il vous faudrait :

  • Créer et configurer l'API Gateway
  • Créer un rôle IAM afin d'authoriser l'API à appeler la Lambda
  • Créer la Lambda
  • Upload le code
  • Ajouter le trigger de l'API Gateway sur la Lambda

Pour toutes ces étapes vous devez savoir où trouver les services en question, savoir comment les configurers, gérer les droits, les régions.

De plus, si vous souhaitez ne plus utiliser l'application et donc supprimer tous les services, il vous faudra retrouver tout vos petits pour les supprimer 1 à 1.

Cela peut devenir vite un cauchemar pour les plus grosses applications, et encore plus si cela fait lontemps qu'elles ont été créées.

Même constat si vous souhaitez migrer votre application sur un autre compte ou région.

Avec Serverless

Créer un compte robot

Avant de commencer à développer votre application, il faut commencer par créer un compte robot qui vous serviras à utiliser AWS CLI depuis un terminal.

Pour cela, il vous suffit d'aller dans Ie service IAM, créer un nouvel utilisateur avec la stratégie AdministratorAccess. Vous aurez vos identifiants, il vous reste juste à configurer votre CLI avec la commande aws configure.

Le code

Afin de créer une application Serverless, il nous faut un fichier serverless.yml.

service: bonjour  
  
provider:  
  name: aws  
  runtime: nodejs16.x  
  memorySize: 256  
  region: eu-west-1  
  
functions:  
  bonjour:  
    handler: handler.bonjour  
    events:  
      - http:  
          method: GET  
          path: /bonjour/{user}

Nous avons ici 2 parties importantes :

  • provider, qui définit des options pour Serverless, comme le runtime ou la mémoire qu'utiliseront vos Lambda.
  • functions, qui fera les définitions de vos fonctions serverless

Il vous manque juste un fichier handler.js qui contient le code de votre Lambda

module.exports.bonjour = async (event) => {  
    const {user} = event.pathParameters;  
    return {  
        statusCode: 200,  
        body: JSON.stringify(`Bonjour ${user}`),  
    };  
}

Il ne vous reste plus qu'à lancer sls deploy dans un terminal de commande, et tout va se créer automatiquement sur votre compte AWS !

Le résultat

Vous devriez avoir l'URL de votre EndPoint dans le terminal où vous avez lancé le déploiement

Déploiement serverless librairie

Vous pouvez tester votre nouveau application grace à curl : curl https://08o4niiahl.execute-api.eu-west-1.amazonaws.com/dev/bonjour/arthur Et Tadam !

Test application serverless curl

Si vous être interessé par ce qui a été vraiment créé par Serverless en termes de ressource AWS, vous pouvez aller voir le service CloudFormation dans AWS, puis la stack bonjour-dev. Dans Ressources vous avez tout ce qui a été créé, et dans Sorties l'URL de votre EndPoint.

C'est fini !

Il vous suffit maintenant de lancer sls remove afin de supprimer votre application d'AWS sans qu'il n'en reste une seule trace.

Le serverless est un sujet qui nous passionne ! On en fait un podcast où l'équipe démystifie cette thématique pendant un peu moins d'un heure.

  • Pour l'écouter, c'est par ici
  • Pour en discuter avec nous, n'hésitez pas à nous contacter, par là !

Sommaire

  • fleche vers la droite Serverless pour faire du serverless, kezako ?
  •         fleche vers la droite Qu'importe le Cloud pourvu qu'on ait l'appli
  •         fleche vers la droite Des fonctionnalités plus que bienvenues
  •         fleche vers la droite Un dashboard complet
  • fleche vers la droite Une application serverless en quelques lignes
  •         fleche vers la droite Sans Serverless
  •         fleche vers la droite Avec Serverless

podcasts

À voir aussi

Tous les articles