Servir du contenu statique en mode Serverless (fonctions à la demande) dans Azure

Avec la mode actuelle autour des architectures Serverless initiées par AWS, on assiste à des transformations de ce type pour des applications web (surtout pour celles qui sont en mode SPA / Single Page Application) :

Image for post
Image for post

Dans cette expérience, je vais tenter de réaliser quelque chose de simple qui me permet de m’affranchir de la création de VM pour délivrer mon chatbot. Pour cela je vais utiliser Azure Functions Proxies en preview pour me lier à du stockage objet avec Azure Blob Storage :

Image for post
Image for post

Je pars donc de mon dépôt cloné localement du chatbot en PWA :

Image for post
Image for post

Je crée un compte de stockage avec Azure Blob Storage ayant ce container bot dans lequel je vais charger tout mon répertoire précedemment cloné :

Image for post
Image for post

J’utilise pour charger ce contenu, l’outil open source Azure Storage Explorer :

Image for post
Image for post

Je vérifie après configuration des droits sur le container que je dispose d’un accès à ma PWA avec le chatbot :

Image for post
Image for post

Je crée alors deux fonctions proxies Azure : une qui permet de pointer en backend sur ce blob storage et une autre qui permet la redirection vers le fichier par défaut index.html :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Dès lors je dispose via les Azure Functions, d’un nouveau endpoint d’accès au chatbot :

dont on voit la définition via le fichier proxies.json :

Image for post
Image for post

Et je peux vérifier que c’est OK !

Image for post
Image for post

Je peux également charger un nouvel endpoint personnalisé si je le souhaite depuis la console :

Image for post
Image for post

avec monitoring des process intégrés :

Image for post
Image for post

Mais j’ai également la possibilité pour accélérer la délivrance de ce contenu statique à d’éventuels utilisateurs d’un réseau de points de présence (CDN ou Content Delivery Network) :

Image for post
Image for post

En effet une association existe entre Azure et notamment Akamai pour mettre à disposition ces points de présence à travers le monde :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Avec ces tarifs :

Image for post
Image for post

Je crée donc un nouvel endpoint lié à ce CDN que me propose le réseau Akamai et pointant sur mon blob storage :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

et je n’ai qu’à changer les paramêtres de mes fonctions pour qu’elles pointent maintenant sur ce réseau CDN :

Image for post
Image for post

avec l’endpoint fourni je teste l’accès direct (azure CDN) et indirect via les Azure Functions Proxies :

Image for post
Image for post
Image for post
Image for post

J’ai donc permis la délivrance de mon applications uniquement via des fonctions à la demande (mode serverless) et du stockage de type objet …

A suivre ! …

Originally published at telegra.ph on October 16, 2017.

Above the clouds, the sky is always blue ...

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store