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 (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.
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.
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.
Tester et debugger est souvent plutôt compliqué pour une application serverless, et le framework nous donne des outils afin de faciliter ces étapes.
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.
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é.
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.
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.
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.
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
.
Si vous décidez de créer cette application sans Serverless, il vous faudrait :
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.
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
.
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 serverlessIl 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 !
Vous devriez avoir l'URLUniform Ressource Locator de votre EndPoint dans le terminal où vous avez lancé le déploiement
Vous pouvez tester votre nouvelle application grace à curl :
curl https://08o4niiahl.execute-api.eu-west-1.amazonaws.com/dev/bonjour/arthur
Et Tadam !
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.
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.
API Gateway d’Amazon Web Service (AWS) est un service qu’on pourrait comparer à une sorte de **super proxy pour vos APIs.**
Comment rendre son site web ou son application web accessible en 2021 ?
Développement d’application mobile : développement natif ou cross-platform ? AXOPEN fait le comparatif !