Dans l’article du mois dernier, je fais une brève introduction au serverless et à ses principes. Nous avons vu les avantages et inconvénients principaux du serverless, les considérations à prendre en compte avant de décider de faire du serverless ainsi que les résolutions de certains des principaux problèmes liés à cette architecture particulière.

Aujourd’hui je souhaite m’attarder sur un outil connu et utilisé d’entreprises de toutes tailles (comptant par exemple Nordstorm, Coca Cola, Expedia, EA, etc…) et dont j’avais déjà un peu parlé dans mon dernier article : Serverless.

 

Serveless est un framework permettant d’accélérer et grandement structurer le développement d’applications serverless ainsi que d’en faciliter les tests et le déploiement. Le projet en lui-même est open source, mais l’entreprise derrière Serverless propose une offre aux utilisateurs de service de déploiement cloud et de management des applications déployées. Nous nous concentrerons ici sur la partie framework open source.

Les langages supportés par le projet incluent NodeJS, Go, Python, Swift, Java, PHP et Ruby.

 

Comment se présente Serverless

C’est une application, disponible soit en binaire, soit via npm, soit via choco. L’outil s’installe dont en à peine quelques minutes sur n’importe quelle plateforme de développement quel que soit son OS.

Sa commande principale est `serverless` (ou `sls`). Elle est le point d’entrée pour toutes les fonctions de sls, tant en matière de génération de code, démarrage de serveur local, debug, mais également de déploiement dans le cloud.

En effet, comme dit précédemment, Serverless permet de gérer jusqu’au déploiement du code dans les plus grands providers cloud comme AWS, Azure ou GCP. Comme abordé dans le dernier article, les ressources nécessaires au bon fonctionnement de votre application (espace disque, bases de données, ressources réseau, etc…) sont, dans une architecture serverless, gérées par votre provider. C’est donc à lui de mettre à disposition de votre application les ressources dont elle a besoin pour fonctionner correctement. Seulement, ces ressources, il faut qu’il en ait connaissance, qu’il sache ce dont vous avez besoin et en quelle quantité. Serverless répond à cette problématique grâce au fichier `serverless.yml` (nous aborderons ce fichier plus bas).

 

Comment se compose un projet Serverless

Un projet serverless est composé d’un fichier `serverless.yml`, source du pouvoir, puis des fichiers composant votre application ainsi que de leurs dépendances. La structure du code est très libre, mais le modèle de modules Javascript doit être respecté.

Le contenu du fichier `serverless.yml` est trop dense pour être abordé dans cet article, mais notez que l’on y trouve pêle-mêle :

  • La liste des fonctions de notre application, avec les fichiers où elles se trouvent
  • Les définitions de ressources externes à l’application propres aux providers
    • Types de machines / instances (ex : machines EC2)
    • Bases de données (ex : instances DynamoDB / Aurora)
    • Réseau (ex : VPC / sécurité / ELB / Route53)
    • Espaces disque (ex : S3)
    • etc…
  • Des notes sur l’application
  • etc…

 

Debug local avec le plugin serverless-offline

Le plugin serverless-offline est l’un des plugins les plus importants de Serverless, permettant aux utilisateurs de démarrer un serveur sur leur poste local afin de tester leurs développements avant déploiement.

Pour être le plus clair possible, voici une simplification du fonctionnement de Serverless-offline :

  • Les fonctions du projet, ainsi que toutes les déclarations des ressources nécessaires à son fonctionnement sont définies dans le fichier `serverless.yml`. Les fonctions sont définies sous la forme `dossier/fichier.fonction` (module Javascript)
  • Au lancement, Serverless démarre un serveur local, teste et émule les ressources nécessaires à l’application (serveur web, rpc, websockets si nécessaire, etc…)
  • Lorsqu’un événement vient trigger une fonction, le fichier dans lequel se trouve la fonction est chargé, la fonction est exécutée puis le fichier est déchargé

 

Conclusion

Serverless est un projet intéressant, très utilisé, très apprécié, tant par des indépendants que des entreprises de toutes tailles. J’ai personnellement déjà eu l’occasion de travailler avec, et le gain de maintenabilité des applications développées avec sur celles développées sans est indéniable. C’est un projet que je conseille vraiment aux intéressés de serverless de regarder.

Concrètement, le projet est très vaste, beaucoup de fonctionnalités n’ont pas pu être abordées ici, lors n’hésitez pas à aller voir leur site internet. Leur base de tutoriaux est très fournie et leur communauté très ouverte à aider les novices.