{"id":232,"date":"2024-03-12T15:40:28","date_gmt":"2024-03-12T15:40:28","guid":{"rendered":"https:\/\/cyber-resilience.mobi\/?p=232"},"modified":"2024-03-12T15:40:28","modified_gmt":"2024-03-12T15:40:28","slug":"azure-functions","status":"publish","type":"post","link":"https:\/\/cyber-resilience.mobi\/?p=232","title":{"rendered":"Azure Functions"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Azure Functions est un service de calcul bas\u00e9 sur le cloud. Les fonctions fournissent un calcul serverless pilot\u00e9 et \u00e9volutif pour Azure. Dans certains cas, vous n\u2019\u00eates factur\u00e9 que pour la dur\u00e9e d\u2019ex\u00e9cution de votre code de fonction.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez utiliser Azure Functions pour ex\u00e9cuter votre code lorsque vous en avez besoin. Par exemple, votre code peut s\u2019ex\u00e9cuter \u00e0 la suite d\u2019un \u00e9v\u00e9nement ou d\u2019une modification, par exemple lorsqu\u2019un message arrive dans une file d\u2019attente ou lorsqu\u2019un objet stock\u00e9 est mis \u00e0 jour.<\/p>\n\n\n\n<h4 class=\"wp-block-heading has-text-align-center\"><strong>Les d\u00e9clencheurs<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Azure Functions vous permet de d\u00e9finir des d\u00e9clencheurs qui d\u00e9marrent l\u2019ex\u00e9cution de votre code. Les d\u00e9clencheurs peuvent \u00e9galement traiter des entr\u00e9es pour transmettre des donn\u00e9es \u00e0 vos fonctions. Chaque fonction ne peut avoir qu\u2019un seul d\u00e9clencheur. Voici quelques-uns des types de d\u00e9clencheurs pris en charge par Azure Functions :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Stockage<\/strong>&nbsp;: vous pouvez \u00e9couter des \u00e9v\u00e9nements provenant de bases de donn\u00e9es telles qu\u2019Azure Cosmos DB lorsqu\u2019une nouvelle ligne est ins\u00e9r\u00e9e, par exemple.<\/li>\n\n\n\n<li><strong>\u00c9v\u00e9nements<\/strong>&nbsp;: Event Grid et Event Hubs produisent des \u00e9v\u00e9nements qui peuvent d\u00e9clencher votre code.<\/li>\n\n\n\n<li><strong>Code HTTP<\/strong>&nbsp;: les requ\u00eates Web et les webhooks peuvent d\u00e9clencher du code HTTP.<\/li>\n\n\n\n<li><strong>Files d\u2019attente<\/strong>&nbsp;: les messages de file d\u2019attente peuvent \u00e9galement \u00eatre trait\u00e9s.<\/li>\n\n\n\n<li><strong>Minuteur<\/strong>&nbsp;: le code peut \u00eatre appel\u00e9 avec un certain intervalle de temps.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Utilisez des liaisons pour vous connecter \u00e0 des sources de donn\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les liaisons sont disponibles en deux versions, l\u2019entr\u00e9e et la sortie. Une\u00a0<em>liaison de sortie<\/em>\u00a0permet d\u2019\u00e9crire des donn\u00e9es dans la source de donn\u00e9es, par exemple, de placer un message dans une file d\u2019attente ou une nouvelle ligne dans une base de donn\u00e9es. Les liaisons d\u2019entr\u00e9e peuvent \u00eatre utilis\u00e9es pour transmettre des donn\u00e9es \u00e0 votre fonction \u00e0 partir d\u2019une source de donn\u00e9es diff\u00e9rente de celle qui a d\u00e9clench\u00e9 la fonction.<\/p>\n\n\n\n<h4 class=\"wp-block-heading has-text-align-center\"><strong>Fonctionnalit\u00e9s<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Plans d\u2019h\u00e9bergement flexibles.<\/strong>\u00a0Il existe trois plans d\u2019h\u00e9bergement diff\u00e9rents pour r\u00e9pondre aux besoins de votre entreprise.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Plan de consommation<\/strong>. Il s\u2019agit de l\u2019option d\u2019h\u00e9bergement enti\u00e8rement sans serveur pour Functions. Les fonctions sont mises \u00e0 l\u2019\u00e9chelle automatiquement et vous ne payez pour les ressources de calcul que lorsque vos fonctions sont en cours d\u2019ex\u00e9cution. Ce plan fournit un calcul rentable pour les charges de travail de processus courts qui ont tendance \u00e0 \u00eatre plus intermittentes avec des charges moins pr\u00e9visibles.<\/li>\n\n\n\n<li><strong>Plan Premium<\/strong>. Dans ce plan, vos fonctions sont maintenues initialis\u00e9es, ce qui signifie qu\u2019il n\u2019y a pas de d\u00e9lai apr\u00e8s avoir \u00e9t\u00e9 inactif. Il s\u2019agit d\u2019un bon plan \u00e0 choisir lorsque votre application de fonction doit s\u2019ex\u00e9cuter pendant de longues p\u00e9riodes, mais que vous avez toujours besoin de l\u2019\u00e9chelle dynamique. Ce plan vous permet \u00e9galement de commencer \u00e0 mettre \u00e0 l\u2019\u00e9chelle avec plus de ressources plus rapidement qu\u2019avec le plan de consommation. Dans le plan de consommation, il y a \u00e9galement des limites sur le temps d\u2019ex\u00e9cution, que ce plan peut remplacer. Bien que vous b\u00e9n\u00e9ficiiez toujours des avantages en termes de co\u00fbts de la mise \u00e0 l\u2019\u00e9chelle dynamique, vous payez plus.<\/li>\n\n\n\n<li><strong>Forfait d\u00e9di\u00e9<\/strong>. Vous ex\u00e9cutez vos fonctions avec un plan App Service standard. C\u2019est id\u00e9al pour les sc\u00e9narios o\u00f9 vos fonctions doivent s\u2019ex\u00e9cuter en continu. Un autre avantage est que vous contr\u00f4lez enti\u00e8rement la fa\u00e7on dont l\u2019application \u00e9volue et que vous pouvez plus facilement pr\u00e9voir les co\u00fbts. Il s\u2019agit \u00e9galement d\u2019un bon choix lorsque vous disposez d\u2019un plan App Service existant, mais sous-utilis\u00e9.<\/li>\n\n\n\n<li><strong>Mise \u00e0 l\u2019\u00e9chelle dynamique<\/strong>. Dans la plupart des plans, les fonctions sont mises \u00e0 l\u2019\u00e9chelle dynamiquement en fonction de la charge. Lorsque la demande d\u2019ex\u00e9cution augmente, davantage de ressources sont allou\u00e9es automatiquement au service et, lorsque les demandes diminuent, les ressources et les instances d\u2019application diminuent automatiquement. Dans le plan de consommation, vous ne payez pas du tout pour les fonctions inactives.<\/li>\n\n\n\n<li><strong>Architecture bas\u00e9e sur les \u00e9v\u00e9nements<\/strong>. Les fonctions sont cens\u00e9es \u00eatre petites et cibl\u00e9es et traiter les donn\u00e9es entrantes et \u00eatre effectu\u00e9es ou d\u00e9clencher un nouvel \u00e9v\u00e9nement \u00e0 leur tour. Parmi les domaines d\u2019utilisation courants des fonctions Azure, citons l\u2019envoi d\u2019e-mails, le d\u00e9marrage de la sauvegarde, le traitement des commandes, la planification de t\u00e2ches telles que le nettoyage de la base de donn\u00e9es, l\u2019envoi de notifications, de messages et le traitement des donn\u00e9es IoT.<br><br>le d\u00e9clencheur est la raison pour laquelle le code s\u2019ex\u00e9cute et les liaisons sont ce qui se connecte \u00e0 une source de donn\u00e9es via la configuration.<br><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading has-text-align-center\"><strong>Composants Azure Functions<\/strong><br><\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Composant<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>D\u00e9clencheurs de fonction<\/td><td>Les d\u00e9clencheurs sont ce qui provoque l\u2019ex\u00e9cution d\u2019une fonction. Un d\u00e9clencheur d\u00e9finit la fa\u00e7on dont une fonction est appel\u00e9e et une fonction doit avoir exactement un d\u00e9clencheur.<\/td><\/tr><tr><td>Liaisons de fonction<\/td><td>La liaison \u00e0 une fonction est un moyen de connecter d\u00e9clarativement une autre ressource \u00e0 la fonction ; Les liaisons peuvent \u00eatre connect\u00e9es en tant que liaisons d\u2019entr\u00e9e, liaisons de sortie ou les deux. Les donn\u00e9es des liaisons sont fournies \u00e0 la fonction en tant que param\u00e8tres. Si vous ne souhaitez pas ou ne pouvez pas utiliser de liaisons, vous pouvez toujours utiliser un Kit de d\u00e9veloppement logiciel (SDK) client dans vos fonctions, comme vous le feriez normalement lors de la connexion \u00e0 des services.<\/td><\/tr><tr><td>Ex\u00e9cution de la fonction<\/td><td>Azure Functions prend actuellement en charge plusieurs versions de l\u2019h\u00f4te d\u2019ex\u00e9cution. Les fonctions prennent \u00e9galement en charge de nombreux environnements d\u2019ex\u00e9cution diff\u00e9rents tels que .NET Core, Node.js, Java, PowerShell et Python. Pendant le d\u00e9veloppement, vous pouvez installer le runtime Functions sur votre ordinateur local et ex\u00e9cuter des fonctions localement \u00e0 l\u2019aide des outils principaux Azure Functions.<\/td><\/tr><tr><td>Gestion des API<\/td><td>APIM assure la s\u00e9curit\u00e9 et le routage de vos points de terminaison de fonction d\u00e9clench\u00e9s par HTTP afin de les exposer en tant que v\u00e9ritable API REST.<\/td><\/tr><tr><td>Emplacements de d\u00e9ploiement<\/td><td>Les emplacements de d\u00e9ploiement Azure Functions permettent \u00e0 votre application de fonction d\u2019ex\u00e9cuter diff\u00e9rentes instances appel\u00e9es \u00ab emplacements \u00bb. Les emplacements sont des environnements diff\u00e9rents expos\u00e9s via un point de terminaison accessible au public. Les emplacements vous permettent de tester une nouvelle version de vos fonctions dans Azure dans un environnement s\u00e9curis\u00e9, puis de basculer de mani\u00e8re transparente la nouvelle version en production.<\/td><\/tr><tr><td>Configuration de l\u2019application de fonction<\/td><td>Les cha\u00eenes de connexion, les variables d\u2019environnement et les autres param\u00e8tres d\u2019application sont d\u00e9finis s\u00e9par\u00e9ment pour chaque application de fonction. Les valeurs des param\u00e8tres de l\u2019application de fonction peuvent \u00eatre lues dans le code en tant que variables d\u2019environnement.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading has-text-align-center\"><strong>Quand utiliser Azure Functions ?<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9tant donn\u00e9 qu\u2019Azure Functions utilise une architecture bas\u00e9e sur les \u00e9v\u00e9nements, il existe de nombreux cas int\u00e9ressants o\u00f9 une telle architecture peut \u00eatre appliqu\u00e9e. Voici une liste non exhaustive de sc\u00e9narios adapt\u00e9s :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Rappels et notifications<\/strong>. Azure Functions dispose d\u2019un d\u00e9clencheur qui peut \u00eatre charg\u00e9 de s\u2019ex\u00e9cuter \u00e0 certains intervalles, ce qui facilite l\u2019impl\u00e9mentation d\u2019un tel sc\u00e9nario. Il peut y avoir des sc\u00e9narios o\u00f9 l\u2019obtention d\u2019une notification peut \u00eatre critique pour l\u2019entreprise.<\/li>\n\n\n\n<li><strong>T\u00e2ches planifi\u00e9es<\/strong>. T\u00e2ches susceptibles d\u2019utiliser les m\u00eames d\u00e9clencheurs temporels. Dans ce cas, il peut y avoir des t\u00e2ches qui doivent \u00eatre effectu\u00e9es \u00e0 certains intervalles, par exemple, le nettoyage de donn\u00e9es ou la recherche d\u2019un \u00e9l\u00e9ment de donn\u00e9es.<\/li>\n\n\n\n<li><strong>API exp\u00e9rimentales<\/strong>. Si vous utilisez le plan Consommation, avec Functions, vous pouvez passer des millions d\u2019appels et payer tr\u00e8s peu. Une chose \u00e0 garder \u00e0 l\u2019esprit est que tout type de stockage entra\u00eene un co\u00fbt.Un exemple est l\u2019\u00e9criture dans une base de donn\u00e9es avec une fonction. Ce plan est id\u00e9al pour le prototypage ou pour les start-ups. Dans ce dernier cas, si vous avez autant d\u2019appels \u00e0 vos fonctions, cela signifie tr\u00e8s probablement que vous avez des clients payants. Par cons\u00e9quent, Azure Functions s\u2019adapte \u00e0 votre entreprise. Au fur et \u00e0 mesure que votre entreprise se d\u00e9veloppe, vous pouvez \u00e9galement envisager d\u2019autres plans d\u2019h\u00e9bergement.<\/li>\n\n\n\n<li><strong>Des flux d\u2019affaires irr\u00e9guliers mais importants<\/strong>. L\u2019obtention d\u2019un nouveau client et l\u2019int\u00e9gration de ce client sont un exemple o\u00f9 votre code a une bonne raison de s\u2019ex\u00e9cuter. Un tel flux consiste probablement en des op\u00e9rations telles que l\u2019interaction avec un magasin de donn\u00e9es, l\u2019envoi d\u2019e-mails, etc.<\/li>\n\n\n\n<li><strong>Bas\u00e9 sur la file d\u2019attente<\/strong>. Vous avez peut-\u00eatre une application de vente de billets et les demandes doivent \u00eatre trait\u00e9es dans une file d\u2019attente comme le mode.<\/li>\n\n\n\n<li><strong>Traitement des donn\u00e9es en temps r\u00e9el<\/strong>. S\u2019il est combin\u00e9 avec Azure SignalR, Azure Functions peut \u00eatre configur\u00e9 pour traiter des donn\u00e9es \u00e0 la demande.<\/li>\n\n\n\n<li><strong>Analysez le flux IoT<\/strong>. Il est possible de collecter et de traiter des donn\u00e9es \u00e0 partir d\u2019appareils IoT.<\/li>\n\n\n\n<li><strong>Traiter les t\u00e9l\u00e9chargements de fichiers<\/strong>. Ex\u00e9cutez du code lorsqu\u2019un fichier est t\u00e9l\u00e9charg\u00e9 ou modifi\u00e9 dans un stockage d\u2019objets blob.<\/li>\n\n\n\n<li><strong>Flux de travail sans serveur<\/strong>. Une s\u00e9rie de fonctions peut \u00eatre encha\u00een\u00e9e et vous pouvez introduire un \u00e9tat qui permet de concevoir des flux de travail complexes et de longue dur\u00e9e via des fonctions durables. Un autre choix pour les flux de travail est celui des applications logiques qui peuvent surveiller des \u00e9v\u00e9nements externes, ex\u00e9cuter une logique de branchement et appeler des fonctions en cons\u00e9quence.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Il existe de nombreux autres sc\u00e9narios dans lesquels il est judicieux d\u2019utiliser Azure Functions, ce qui pr\u00e9c\u00e8de sert d\u2019inspiration ou d&rsquo;exemple pour savoir comment vous pouvez innover dans le cloud lors de l\u2019application d\u2019un raisonnement et d\u2019une architecture bas\u00e9s sur les \u00e9v\u00e9nements.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Azure Functions est un service de calcul bas\u00e9 sur le cloud. Les fonctions fournissent un calcul serverless pilot\u00e9 et \u00e9volutif pour Azure. Dans certains cas, vous n\u2019\u00eates factur\u00e9 que pour la dur\u00e9e d\u2019ex\u00e9cution de votre code de fonction. Vous pouvez utiliser Azure Functions pour ex\u00e9cuter votre code lorsque vous en avez besoin. Par exemple, votre [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51],"tags":[49,52],"class_list":["post-232","post","type-post","status-publish","format-standard","hentry","category-azure","tag-azure","tag-azure-functions"],"_links":{"self":[{"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/posts\/232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=232"}],"version-history":[{"count":2,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/posts\/232\/revisions"}],"predecessor-version":[{"id":234,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/posts\/232\/revisions\/234"}],"wp:attachment":[{"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}