Les Azures Functions sont étroitement liées à l’architecture Serverless. Dans une architecture de ce type, vous n’avez plus besoin de gérer les serveurs sous-jacents, c’est le fournisseur Cloud responsable de l’exécution du code hébergé qui s’en occupe. Cela implique de structurer votre application sous forme de fonctions exécutées à la demande. Les Azure Functions, c’est donc une implémentation de la notion de Serverless par Microsoft sur la plateforme Azure.

Azure Functions permet d’exécuter des petits bouts de code ‘fonctions’ sans se soucier de l’infrastructure de l’application : le fournisseur Cloud fournit toutes les ressources serveurs nécessaires pour que l’application s’exécute, même à grande échelle : Function as a Service (FaaS).

Une fonction est « déclenchée » par un type d’événement spécifique : requête http, événement de base de données, événement de bus de service, alerte ou encore tâche planifiée.

Selon Ange Guyager, Team Leader chez SoftFluent et expert Microservices

Même si vous avez la possibilité de programmer directement une multitude de services, l’intégration à d’autres services est facilitée par l’utilisation de liaisons. Les liaisons vous offrent un accès déclaratif à une large gamme de services Azure et tiers

Dans cet article, nous verrons :

  1. Quels sont les principaux domaines d’utilisation de Faas ?
  2. Que puis-je faire avec Azure Functions ?
  3. Combien coûte Azure Functions ?
  4. Faas ou Functions-as-a-Service : quels sont les avantages ?
  5. Bonnes pratiques générales

 

Quels sont les principaux domaines d’utilisation de FaaS ?

En règle générale, les fonctions FaaS peuvent être utilisées dans tous les domaines de l’entreprise mais plus spécifiquement dans les traitements automatisés de commandes unitaires.

Informatique technique

Des processus de synchronisation de comptes, de gestion en self-service de configurations techniques (DNS, SSL), de gestion de tickets Help desk peuvent bénéficier d’une architecture FaaS pour automatiser les étapes de leurs traitements.

Sécurité informatique

FaaS permet de déclencher des batchs (Azure Batchs) permettant par exemple d’analyser les audits des plateformes à surveiller et de détecter ainsi des risques d’intrusions. Microsoft sur Azure, avec WAF par exemple, se base par exemple beaucoup sur de tels batchs.

Informatique de gestion

Les progiciels de gestion de type ERP, Comptabilité, Sales Force, CRM qui utilisent énormément de batchs de nettoyage, d’intégration ou de calculs en masse auraient tout intérêt à utiliser FaaS.

E-Commerce

Les opérateurs Internet de l’e-commerce utilisent beaucoup les architectures de type microservices et les services d’intégration. Il est d’ailleurs vraisemblable que les plateformes FaaS aient été conçues initialement pour ce type de besoins.

Réseaux sociaux et partage de contenu

Ces nouvelles plateformes FaaS permettent d’orchestrer et partager le contenu entre les différents réseaux et le site CMS de l’entreprise, intégration qui était manuelle il n’y a pas si longtemps.

Big Data et Analytics

Les systèmes de Big Data et Analytics friands d’intégration des données peuvent aussi largement tirer parti des FaaS.

Que puis-je faire avec Azure Functions ?

Les fonctions en tant que services peuvent avoir une grande variété de cas d’usage. Ce type de service Cloud convient particulièrement pour le développement de microservices. Il est possible de s’en servir pour les tâches planifiées, ou encore pour le traitement de requêtes web.

On peut aussi s’en servir pour traiter des files de messages, ou pour des exécutions manuelles. Ces fonctions peuvent même être combinées : une requête web peut construire un message envoyé dans une file qui sera traité par une autre fonction.

En résumé, Functions est une solution idéale pour le traitement des données unitaires ou en bloc, l’intégration de systèmes, l’utilisation de l’Internet des objets (IoT) et la création de microservices et d’API simples.

Une série de modèles est disponible pour vous permettre de commencer avec des scénarios clés, notamment :

  • HTTP : Exécuter du code basé sur des requêtes HTTP
  • Minuteur : Planifier l’exécution du code à des moments prédéfinis
  • Azure Cosmos DB : Manipuler des données grâce à Azure Cosmos DB (base NoSQL de Microsoft Azure).
  • Stockage Blob : Traiter des objets blob du Stockage Azure nouveaux et modifiés
  • Stockage File d’attente : Répondre à des messages d’une file d’attente de Stockage Azure
  • Event Grid : Répondre à des événements Azure Event Grid via des abonnements et des filtres
  • Event Hub : Répondre à de gros volumes d’événements Azure Event Hub
  • File d’attente Service Bus : Se connecter à d’autres services Azure ou à des services locaux en répondant à des messages de file d’attente Service Bus
  • Rubrique (« Topic ») Service Bus : Se connecter à d’autres services Azure ou à des services locaux en répondant à des messages de rubrique Service Bus

 

Combien coûte Azure Functions ?

Azure Functions propose trois types de plans tarifaires selon le besoin :

  • Plan Consommation : Azure fournit toutes les ressources de calcul nécessaires. Vous n’avez pas à vous préoccuper de la gestion des ressources et seul le temps pendant lequel votre code s’exécute est facturé.
  • Plan Premium : Vous spécifiez un nombre d’instances préparées à l’utilisation qui sont toujours en ligne et prêtes à répondre immédiatement. Lorsque votre fonction est exécutée, Azure fournit toutes les ressources de calcul supplémentaires nécessaires. Vous payez les instances qui s’exécutent en continu ainsi que toutes les instances supplémentaires dont vous avez besoin à mesure qu’Azure effectue le scale-in/scale-out de votre application.
  • Plan App Service : Exécutez vos fonctions exactement comme vos applications web. Si vous utilisez App Service pour vos autres applications, vos fonctions peuvent s’exécuter sur le même plan, sans coûts supplémentaires.

 

FaaS ou Function-as-a-Service : quels sont les avantages ?

Le FaaS présente plusieurs avantages, mais n’est pas adapté à toutes les applications. Il convient notamment pour les transactions à volume extrêmement élevé, car il est possible de les isoler pour les rendre ‘scalables’.

Pour les workloads dynamiques pour lesquels la fonction ne doit être exécutée qu’une fois par jour ou par mois, le FaaS permet de faire des économies puisqu’il n’est pas nécessaire de payer des ressources serveur de façon permanente. De même, le FaaS est idéal pour exécuter un morceau de code spécifique à une date planifiée ou pour les flux de données.

 

Mais qu’est-ce qu’un flux de données ?

Un flux de données est un programme qui permet d’interconnecter plusieurs composants applicatifs entre eux pour rendre un service ‘métier’. Par  exemple, pour les sites internet, les flux d’import de catalogue produit, les flux de calcul de prix pour calculer le prix de vente réel après validation d’un panier par un client, incluant les réductions, les frais de dossiers et de livraison par exemple ou encore les flux d’export vers les tableaux de bord de suivi par exemple.

 

Quels sont les catégories de flux de données ?

En règle générale, nous pouvons regrouper les flux en 3 catégories à savoir

  • Les flux d’import qui permettent d’importer des données comme les catalogues produits, les prix, les promotions, etc..
  • Les flux événementiels qui réagissent à des actions du système informatique comme le calcul de prix après ajout au panier ou le calcul de bon d’achat après achat
  • Les flux d’export qui permettent de restituer les données du système à des systèmes tierces exemple l’export des données de vente vers les tableaux de bord ou les outils décisionnels

Quels sont les avantages attendus d’une architecture FaaS ?

Simple à déployer

Les fonctions FaaS, sont très facilement déployables. En effet la partie technique étant standardisée, les équipes d’exploitations sont déjà formées sur ces outils et opérationnelles pour déployer une fonction additionnelle

Ouvert

Dans la plupart des cas, les fonctions FaaS sont ouvertes et s’intègrent facilement avec le SI déjà existant

Standard

Il est très rare d’avoir à re-développer les composants techniques pour faire fonctionner une fonction FaaS. Ainsi sur Azure Functions, les développeurs utilisent les connecteurs et services de Azure pour n’implémenter que leur code métier.

 

Bonnes pratiques générales

Voici les meilleures pratiques pour la création et l’architecture de vos solutions Serverless à l’aide d’Azure Functions.

Évitez les fonctions trop volumineuses

Une fonction peut devenir volumineuse en raison de nombreuses dépendances, comme Node.js par exemple. L’import de dépendances peut également entraîner une augmentation des temps de chargement et donc les délais d’attente, qu’elles soient chargées de manière explicite ou implicite. Un seul module chargé par votre code peut potentiellement charger plusieurs autres modules supplémentaires.

Dans la mesure du possible, re-factorisez les grandes fonctions en un ensemble de fonctions plus petit qui fonctionne ensemble pour diminuer les temps de réponses. Vous pouvez transmettre la charge utile du déclencheur HTTP dans une file d’attente à traiter par une autre fonction de déclencheur de file d’attente. Cette approche permet de différer le travail réel et de néanmoins renvoyer une réponse immédiate comme le nécessitent certaines fonctions de déclencheur http par exemple

précise Ange Guyader

Gérer la communication entre fonctions

Les fonctions étant exécutées à la demande, il y a un temps de latence dans l’exécution, c’est encore plus vrai quand la fonction n’est pas appelée régulièrement. On parle de Cold Start, le temps que le conteneur qui permet d’exécuter la fonction se mette en place.

Microsoft sur sa plateforme Azure a implémenté une fonctionnalité permettant de se défaire d’une problématique liée au Serverless, le Stateless, en implémentant les Durables Functions qui permettent de gérer des fonctions avec état et la communication entre plusieurs fonctions

Vous pouvez aussi utiliser des files d’attente de stockage pour la communication entre fonctions d’autant qu’elles sont moins chères et beaucoup plus faciles à provisionner que les autres options de stockage. La taille des messages individuels dans une file d’attente de stockage est limitée à 64 Ko. Si vous devez transmettre des messages plus volumineux entre les fonctions, une file d’attente Azure Service Bus peut être utilisée pour prendre en charge des tailles de message allant jusqu’à 256 Ko dans le niveau Standard et jusqu’à 1 Mo dans le niveau Premium. Les rubriques Service Bus sont utiles si vous avez besoin du filtrage des messages avant le traitement. Les hubs d’événements sont utiles pour prendre en charge des communications à haut volume

précise Ange Guyader

 

Évitez de partager des comptes de stockage

Pour maximiser les performances, utilisez un compte de stockage distinct pour chaque application de fonction surtout si vous disposez de fonctions durables ou de fonctions déclenchées par Event Hub, car elles génèrent un volume élevé de transactions de stockage. Lorsque votre logique d’application interagit avec Azure Storage, soit directement (à l’aide du SDK de stockage) soit via l’une des liaisons de stockage, il est préférable d’utiliser un compte de stockage dédié.

 

Fonctionnalités clés d’Azure Functions

  • Choix du langage : Écrivez des fonctions en choisissant parmi les langages C#, Java, JavaScript, Python et PowerShell.
  • Modèle tarifaire avec paiement à l’utilisation : Payez seulement pour le temps passé à exécuter votre code.
  • Apport de vos propres dépendances : Functions prend en charge NuGet et NPM, ce qui vous donne accès à vos bibliothèques favorites et permet d’utiliser des portions de code déjà compilées
  • Sécurité intégrée : Protégez vos fonctions déclenchées par HTTP avec des fournisseurs OAuth comme Azure Active Directory, Facebook, Google, Twitter et Compte Microsoft.
  • Intégration simplifiée : Effectuez facilement une intégration aux services Azure et aux offres SaaS (Software-as-a-Service).
  • Développement flexible : Configurez une intégration continue et déployez votre code depuis GitHub, Azure DevOps Services ou d’autres outils de gestion de sources pris en charge.
  • Architecture Serverless avec état : Orchestrez les applications Serverless avec des Durable Functions. Les Durables Functions permettent de gérer des fonctions avec état
  • Open source : Le runtime Azure Functions est open source et disponible sur GitHub.