Accéder au contenu principal

Azure Functions : triggers, bindings et hébergement expliqués simplement

Comprenez ce que sont les Azure Functions, comment elles permettent des applications serverless événementielles, et comment triggers, bindings, options d'hébergement et workflows s'articulent.
· 7 min lire

Explorez l'IA

Azure Functions fait partie du service de calcul sans serveur de Microsoft. Cela vous permet simplement d'exécuter de petits blocs de code en réaction à des événements, sans avoir à gérer vous-même les serveurs.

Par exemple, une fonction peut s'exécuter lorsqu'une requête HTTP arrive, lorsqu'un fichier est téléversé dans un stockage, ou encore à une heure planifiée.

« Sans serveur » ne signifie pas qu'il n'y a pas de serveurs, mais qu'Azure gère l'infrastructure pour vous. Azure s'occupe en coulisses du provisionnement, de la mise à l'échelle et de la maintenance.

Dans ce guide, je passe en revue les briques essentielles : triggers, bindings, options d'hébergement et un exemple pas à pas pour bien démarrer.

Qu'est-ce qu'Azure Functions ?

Une Azure Function est un petit bout de code qui s'exécute lorsqu'un événement que vous choisissez se produit. Vous écrivez la logique, Azure s'occupe du reste.

Trois idées définissent ce modèle :

  1. L'exécution pilotée par les événements : le code ne tourne que lorsqu'il se passe quelque chose, pas en continu.
  2. La mise à l'échelle automatique : Azure ajoute ou retire des ressources de calcul selon la demande.
  3. La tarification à la consommation : sur certains plans d'hébergement, vous ne payez que pour le temps réel d'exécution de votre code.

Idéalement, une fonction réalise une seule tâche, comme redimensionner une image ou traiter un message. Une Function App est le conteneur qui regroupe une ou plusieurs fonctions. Elle gère les paramètres partagés, comme la configuration et le déploiement, pour toutes les fonctions qu'elle contient.

Comment fonctionnent les Azure Functions

Le cycle de vie d'une fonction suit un schéma simple :

  1. Un événement se produit, par exemple un téléversement de fichier ou un appel HTTP.
  2. Un trigger détecte l'événement et lance immédiatement la fonction.
  3. La fonction exécute son code.
  4. Les bindings connectent la fonction à d'autres services pour lire les entrées ou envoyer les sorties nécessaires.
  5. Azure gère les ressources de calcul derrière ce processus, selon le plan d'hébergement choisi.

Ce flux reste globalement identique quel que soit le langage ou l'option d'hébergement. Seuls le trigger, le code et les bindings changent.

Les triggers d'Azure Functions

Chaque fonction a exactement un trigger. Le trigger définit très concrètement comment la fonction démarre. Voici les types les plus courants à connaître :

  • HTTP Trigger : exécute une fonction à la réception d'une requête HTTP. Très courant pour créer des API.
  • Timer Trigger : exécute une fonction selon un planning, par exemple toutes les heures ou une fois par jour.
  • Blob Storage Trigger : exécute une fonction lorsqu'un fichier est ajouté ou modifié dans Azure Blob Storage.
  • Queue Trigger : déclenche une fonction à l'arrivée d'un nouveau message dans une file d'attente.
  • Event Hub Trigger : exécute une fonction en réaction à un flux d'événements ; très utile pour de gros volumes de données.
  • Cosmos DB Trigger : exécute une fonction lorsque des documents sont créés ou mis à jour dans un conteneur Cosmos DB, en s'appuyant sur le Change Feed.
  • Service Bus Trigger : exécute une fonction en réponse à des messages provenant d'une file ou d'un topic Azure Service Bus, fréquent en messagerie d'entreprise et pour découpler les systèmes.
  • Durable Functions : extension d'Azure Functions qui permet d'écrire des fonctions avec état dans un environnement serverless pour orchestrer des workflows complexes en plusieurs étapes.

Les bindings d'Azure Functions

Les triggers et les bindings sont souvent confondus, mais même s'ils se ressemblent, ils n'ont pas du tout le même rôle. Un trigger démarre une fonction, tandis qu'un binding la connecte aux données pour les lire ou les émettre.

Bindings d'entrée

Vous fournissez des données à votre fonction sans écrire de code d'intégration sur mesure. Par exemple, une fonction peut lire automatiquement un enregistrement depuis une base de données simplement en déclarant le binding.

Bindings de sortie

Vous envoyez le résultat de votre fonction vers un autre service. Par exemple, vous pouvez écrire un message traité dans une file d'attente via un binding de sortie.

Voici un exemple pour illustrer : un trigger Blob Storage démarre une fonction lors du téléversement d'une image. Un binding de sortie enregistre ensuite l'image redimensionnée dans un autre conteneur de stockage. Les bindings gèrent les connexions au stockage, sans aucun code client de stockage à écrire.

Créer votre première Azure Function

Voici un exemple très simple d'une fonction déclenchée par HTTP qui renvoie un message de salutation. Le déroulé est le suivant :

  1. Créez une Function App, le conteneur de votre fonction dans Azure.
  2. Choisissez un runtime et le langage dans lequel vous voulez coder.
  3. Ajoutez une nouvelle fonction dans votre Function App.
  4. Sélectionnez le trigger HTTP pour que la fonction réponde aux requêtes web.
  5. Ajoutez une logique très simple, par exemple lire un nom dans la requête et renvoyer « Hello, [name]. »
  6. Exécutez et testez la fonction avec les outils intégrés ou en envoyant une requête depuis votre navigateur.
  7. Déployez-la sur Azure pour la rendre accessible en ligne.

Cet exemple est volontairement minimaliste pour illustrer le schéma, à vous de laisser parler votre créativité pour la suite.

Langages pris en charge par Azure Functions

Azure Functions prend en charge de nombreux langages, notamment :

  • C#
  • JavaScript/TypeScript
  • Python
  • Java
  • PowerShell

Le niveau de support et les modèles de développement peuvent varier selon le langage et la version. Je vous recommande donc de vérifier la documentation Azure la plus récente avant de lancer un nouveau projet, ces informations évoluant fréquemment.

Options d'hébergement pour Azure Functions

Toutes les Azure Functions ne s'exécutent pas de la même façon. Azure propose plusieurs plans d'hébergement, chacun avec ses compromis. Le bon choix dépend de votre cas d'usage. Les principaux arbitrages portent sur :

  • Mise à l'échelle : certains plans montent en charge automatiquement et instantanément, d'autres demandent un contrôle plus manuel.
  • Comportement au démarrage : certains plans gardent les fonctions « chaudes », c'est-à-dire prêtes à s'exécuter instantanément, quand d'autres les démarrent à la demande.
  • Réseau : certains plans prennent en charge des fonctions réseau avancées, comme la connexion à un réseau virtuel privé, d'autres non.
  • Coût : des modèles de tarification très différents, du paiement à l'exécution à des coûts mensuels fixes.

Mise à l'échelle et cold starts dans Azure Functions

Deux notions comptent une fois votre fonction en production :

Mise à l'échelle automatique

Azure surveille la charge sur votre fonction ; quand la demande augmente, il ajoute des instances de calcul, et quand elle baisse, il les retire. Vous n'avez rien à gérer manuellement.

Cold starts

Si une fonction n'a pas tourné récemment, elle peut avoir besoin d'un court délai pour démarrer avant de traiter une nouvelle requête. Ce délai est appelé cold start. Certains plans d'hébergement le réduisent ou l'évitent en gardant les instances « chaudes », comme indiqué plus haut.

Cas d'usage courants d'Azure Functions

Le modèle événementiel répond à de nombreux besoins du quotidien. Notamment :

API et webhooks

Gérer des requêtes HTTP entrantes sans faire tourner un serveur web en continu.

Traitement de fichiers et d'images

Déclencher une fonction dès qu'un fichier arrive dans le stockage, puis le redimensionner, le convertir ou simplement l'analyser.

Tâches planifiées

Lancer des opérations de nettoyage, des rapports ou des rappels à intervalle régulier, sans serveur dédié toujours actif.

Pipelines de traitement de données

Traiter les messages ou événements à leur arrivée, étape par étape.

IoT et traitement d'événements

Gérer de grands volumes de données issues de capteurs ou d'appareils à mesure qu'elles arrivent en flux.

Tâches en arrière-plan

Décharger les traitements lents ou ponctuels, comme l'envoi d'e-mails, pour ne pas bloquer votre application principale.

Supervision et dépannage des Azure Functions

Une fois la fonction en ligne, vous avez besoin de visibilité sur ses performances.

Vous pouvez consulter les journaux qui tracent ce qu'il s'est passé à chaque exécution : très utile pour le débogage. Vous pouvez aussi utiliser Application Insights dans les outils Azure, qui centralise performances, requêtes et erreurs.

Surveillez également les échecs d'invocation pour savoir quand et pourquoi une fonction n'a pas abouti. Le suivi des performances aide à détecter les lenteurs avant qu'elles ne deviennent problématiques, et vous pouvez configurer des nouvelles tentatives automatiques en cas d'échec.

Conclusion

Azure Functions vous permet d'exécuter du code en réponse à des événements, sans gérer l'infrastructure sous-jacente. Les triggers décident quand une fonction démarre. Les bindings, eux, facilitent la connexion à d'autres services sans code d'intégration supplémentaire.

En passant d'une fonction de test à une charge de production, les choix d'hébergement et de mise à l'échelle prennent de l'importance. Le bon plan influe sur le coût, mais aussi sur la rapidité et la fiabilité.

Iheb Gafsi

Auteur

Iheb Gafsi

Je travaille sur des systèmes d'IA accélérés permettant une intelligence de pointe avec des pipelines ML fédérés sur des données décentralisées et des charges de travail distribuées.  Mywork se concentre sur les grands modèles, le traitement de la parole, la vision par ordinateur, l'apprentissage par renforcement et les topologies avancées de ML.

FAQ

Qu'est-ce qu'Azure Functions ?

Un service sans serveur qui exécute de petits blocs de code en réponse à des événements, sans que vous ayez à gérer des serveurs.

Qu'est-ce qui déclenche une Azure Function ?

Des événements comme des requêtes HTTP, des minuteries, des téléversements de fichiers ou des messages en file d'attente.

Quelle est la différence entre un trigger et un binding ?

Un trigger démarre la fonction. Un binding la connecte à d'autres services pour les entrées ou les sorties.

Qu'est-ce qu'un cold start ?

Un court délai lorsque la fonction redémarre après une période d'inactivité.

Quels langages sont pris en charge par Azure Functions ?

C#, JavaScript/TypeScript, Python, Java et PowerShell.

Sujets

Contenus associés