Exemple d’application : un programme de webscraping d’articles de presse avec analyse de sentiments.
Imaginez : Votre projet de webscraping est enfin terminé! ou presque… Vous avez maintenant une application capable d’extraire des articles de presse en ligne puis d’effectuer une analyse de sentiment sur leur contenu. Vous avez réglé tous les problèmes de compatibilité entre librairies NLP dans votre environnement virtuel. Votre approche de parsing est robuste, l’analyse de sentiment tient la route et vous êtes satisfait du rendu visuel.
Comment faire profiter le monde de votre invention? par le web bien sûr!
Entre un programme développé sur une machine locale et un service web sécurisé et accessible au monde entier, il existe un certain nombre d’étapes à considérer. Le terme « déploiement » désigne le processus nécessaire à la mise en service d’une application également appelé service web. Les approches pour déployer un service web sont multiples.
Dans cette série d’articles, nous présenterons 3 scénarios :
Scénario 1: Approche from scratch
Scénario 2: Approche Docker
Scénario 3: Approche serverless
Qu’est-ce que l’informatique serverless ?
Serverless signifie déployer et maintenir une application sans avoir à gérer les serveurs de l’application. Le lancement, la maintenance et le redimensionnement (scaling) des serveurs sont pris en charge par un fournisseur de services infonuagiques (cloud service provider ou CSP).
“There is no such thing as the cloud, it's just someone else's computer”
L'infonuagique n’est qu’une expression pour désigner des services informatiques fournis à distance via l’internet. Derrière un service situé dans le cloud, il y a toujours un ordinateur, des processeurs, des réseaux et d’autres équipements quelque part dans une salle de serveur à travers le monde. À titre d’exemple, Azure dispose de centaines de salles de serveurs (data centers) indépendants répartis dans plus de soixante “régions”, elles-mêmes divisées en différentes zones de disponibilité.
De plus, une application basée sur un outil serverless ne signifie pas que l’application fonctionne sans serveur, mais plutôt que les utilisateurs n’ont pas à gérer les serveurs en question.
L’informatique serverless se rapproche de ce qu’on appelle les services PaaS ou “platform as a service”. Dans le modèle PaaS, la responsabilité du fournisseur infonuagique (ou CSP pour Cloud Service Provider) ne se limite pas uniquement à la maintenance et à la sécurité de l’infrastructure. Il prend aussi en charge la gestion du système d’exploitation, les intergiciels (middleware), la sécurité et d’autres aspects dépendamment du type de service.
Le PaaS se distingue ainsi du modèle IaaS ou “infrastructure as a service” dans lequel l’utilisateur loue un équipement (hardware) et est responsable de tous les aspects logiciels. Le CSP se contente de garantir la sécurité et le bon fonctionnement de l’équipement. Une machine virtuelle (VM) est un exemple de service IaaS.
Pourquoi utiliser l'informatique serverless ?
Le premier avantage du serverless est plus généralement celui du PaaS : la simplicité. L’utilisateur n’a qu’à fournir le code d’application et une configuration pour ensuite déployer une application. Déployer un service sur une machine virtuelle (VM) demande au contraire plus de maintenance de la part de l’utilisateur.
Le deuxième avantage et celui qui différencie l’informatique serverless du PaaS est l’élasticité. L’élasticité consiste pour un service à adapter sa capacité à la demande de façon automatique et rapide. Un outil serverless est élastique dans la mesure où il augmente sa capacité computationnelle quand le trafic augmente et sans intervention humaine. Par ailleurs, le coût du serverless est plus facile à anticiper car il est en général strictement proportionnel à l’utilisation.
Les différents outils serverless
AWS lambda
Azure Functions
Google Cloud Functions
Scénario de déploiement
Outil serverless : Azure Function
Éditeur : VSCode
Système d’exploitation : Ubuntu
Langage : Python
Installer l’extension Azure ou bien l’extension Azure Function dans VSCode
En résumé, l’approche serverless permet de déployer une application web sans avoir à gérer les serveurs sur lesquels roule l’application. La gestion des serveurs est confiée au fournisseur de services infonuagiques. Les solutions serverless se caractérisent par leur simplicité d’utilisation et leur élasticité : la capacité à adapter ses ressources computationnelles en fonction du trafic entrant.
Cet article conclut la série d’articles sur le déploiement.