Serverless - La librairie indispensable pour vos applications serverless

Serverless (notez le S majuscule), est une librairie permettant de faire de l'IaC (Infratructure as Code). Nous vous proposons un Tuto pour créer une application serverless en un tour de main !
Arthur.jpg
Arthur COMBE, JavaScript loverMis à jour le 9 Mai 2022
Librairie framework serverless

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 (Infrastructure as Code).

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

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

Un des points forts de ServerlessLe terme serverless se dit d'un traitement qui ne nécessite pas de serveur (à comprendre ici : dont on ne s'occupe pas du serveur) est que vous pourrez supprimer la totalité de l'infrastructure que vous allez 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 fournisseurs de CloudLe Cloud consiste à accéder à des ressources informatiques, à partir d'internet, via un fournisseur.. 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 langages. Serverless étant une librairie qui ne s'occupe que de l'infrastructure, les seules limitations au langage que vous utilisez pour vos fonctions serverless seront celles que vous propose 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'AWSLe Cloud AWS (Amazon WebServices) est une plateforme de services cloud développée par le géant américain Amazon.. 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 debugger 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 grâce à 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 forcément 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 va 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 propose 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 propose également un tableau de bord, qui vous permet d'unifier vos applications 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 RESTREST (REpresentational State Transfer) est un style d'architecture logicielle qui fonctionne sous un certain nombre de contraintes. 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 configurer, 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 longtemps 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 servira à 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'URLUniform Ressource Locator de votre EndPoint dans le terminal où vous avez lancé le déploiement 

Déploiement serverless librairie

Vous pouvez tester votre nouvelle 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à !