Cette architecture de référence illustre plusieurs filiales locales d’une organisation qui s’étend géographiquement. Chaque emplacement utilise une application de fonction Microsoft Azure qui est configurée avec le plan Premium dans une région cloud proche. Les développeurs de cette architecture supervisent toutes les applications de fonction Azure en utilisant Azure Monitor comme volet unique.
Architecture
Téléchargez un fichier Visio de cette architecture.
Composants
L’architecture est constituée des composants suivants :
- Azure Functions . Azure Functions est une plateforme PaaS (Platform as a service) serverless dans Azure qui exécute un petit code de tâche unique sans nécessiter de nouvelle infrastructure. Le plan Premium d’Azure Functions offre la possibilité de communiquer avec Azure Functions de manière privée sur un réseau virtuel.
- Réseau virtuel Azure . Les réseaux virtuels Azure sont des réseaux privés basés sur la plateforme cloud Azure, ce qui permet aux ressources Azure de communiquer entre elles de façon sécurisée. Les points de terminaison de service des réseaux virtuels Azure garantissent que les ressources Azure peuvent uniquement communiquer sur le segment principal du réseau virtuel sécurisé.
- Réseau local. Dans cette architecture, l’organisation a créé un réseau privé sécurisé qui connecte les différentes filiales. Ce réseau privé est connecté à leurs réseaux virtuels Azure à l’aide d’une connexion de site à site.
- Stations de travail de développeurs. Dans cette architecture, les développeurs individuels peuvent travailler sur le code destiné à Azure Functions entièrement sur le réseau privé sécurisé ou à partir d’un emplacement distant. Dans les deux cas, les développeurs ont accès à Azure Monitor pour interroger ou observer les métriques et les journaux des applications de fonction.
Détails du scénario
Utilisations courantes de cette architecture :
- Organisations ayant de nombreux emplacements physiques connectés à un réseau virtuel dans Azure pour communiquer avec Azure Functions.
- Charges de travail à forte croissance qui utilisent Azure Functions localement et qui maintiennent la possibilité d’utiliser Azure pour toute rafale de travail inattendue.
Recommandations
Les recommandations suivantes s’appliquent à la plupart des scénarios. Suivez ces recommandations, sauf si vous avez un besoin spécifique qui vous oblige à les ignorer.
Conception pour une architecture serverless
Les applications d’entreprise traditionnelles favorisent une architecture d’application monolithique dans laquelle une « solution » de code exécute toute la logique métier de l’organisation. Avec Azure Functions, la meilleure pratique consiste à concevoir une architecture serverless dans laquelle les fonctions individuelles effectuent des tâches uniques. Ces tâches uniques sont conçues pour s’exécuter rapidement et s’intégrer dans des workflows plus importants.
L’architecture sans serveur sur Azure Functions présente de nombreux avantages, notamment :
- Les applications peuvent se mettre à l’échelle automatiquement pour chaque fonction d’entreprise individuelle plutôt que pour l’ensemble de la solution. Cela peut contribuer à réduire les coûts en mettant à l’échelle uniquement ce qui est nécessaire pour chaque tâche afin de répondre aux charges de travail existantes.
- Azure Functions fournit des liaisons déclaratives pour de nombreux services Azure, ce qui réduit la quantité de code que votre équipe doit écrire, tester et entretenir.
- Vous pouvez réutiliser les fonctions individuelles, ce qui réduit la quantité de code répété nécessaire pour les solutions destinées aux grandes entreprises.
Exécution d’Azure Functions localement
Vous pouvez choisir d’exécuter Azure Functions localement plutôt que dans Azure. Par exemple :
- Votre équipe peut vouloir exécuter Azure Functions au sein d’une installation Kubernetes locale existante.
- En développement, votre équipe peut trouver plus facile de développer localement en utilisant l’interface de ligne de commande plutôt que l’éditeur du portail.
- Vos fonctions seront exécutées localement avec l’ensemble d’outils installé sur les machines virtuelles locales.
Vous pouvez exécuter Azure Functions localement de trois manières :
- Azure Functions Core Tools . Azure Functions Core Tools est une suite de développement qui s’installe généralement à partir d’un gestionnaire de package de nœuds (NPM). Il permet aux développeurs de développer, de déboguer et de tester des applications de fonction au niveau de l’invite de commandes sur un ordinateur local.
- Image conteneur Docker pour Azure Functions . Vous pouvez utiliser cette image conteneur comme image de base pour les conteneurs qui exécutent Azure Functions sur un hôte Docker ou dans Kubernetes.
- Kubernetes . Azure Functions prend en charge une mise à l’échelle transparente pilotée par les événements au sein d’un cluster Kubernetes à l’aide de KEDA (Kubernetes-based event-driven autoscaling). Passez en revue les meilleures pratiques pour gérer les clusters Azure Kubernetes Service et les clusters Kubernetes compatibles avec Azure Arc.
Connectivité réseau
La création d’applications de fonction à l’aide du plan Premium ouvre la possibilité d’une connectivité inter-réseaux hautement sécurisée entre les réseaux virtuels Azure, les réseaux Azure et locaux, et les réseaux de chaque filiale locale.
Vous devez utiliser une connexion de site à site ou Azure ExpressRoute entre Réseau virtuel Microsoft Azure et des réseaux locaux. Cela permet aux filiales locales de communiquer avec les applications de fonction dans Azure à l’aide de leurs points de terminaison de service.
En outre, chaque réseau virtuel dans Azure doit également utiliser l’appairage de réseaux virtuels pour permettre la communication entre des applications de fonction dans différentes régions.
Considérations
Ces considérations implémentent les piliers d’Azure Well-Architected Framework qui est un ensemble de principes directeurs qui permettent d’améliorer la qualité d’une charge de travail. Pour plus d’informations, consultez Microsoft Azure Well-Architected Framework.
Extensibilité
- Le code Azure Functions doit être conçu de façon à pouvoir être mis à l’échelle à l’infini. Tenez compte des conditions de concurrence, des fichiers loués et des autres charges de travail qui pourraient faire en sorte que l’exécution d’une fonction en bloque une autre. Envisagez également d’écrire tout le code Azure Functions pour qu’il soit conceptuellement sans état et défensif.
- Pour les applications de fonction qui utilisent des comptes Stockage Azure dans les déclencheurs ou les liaisons, ne réutilisez pas le même compte que celui utilisé pour stocker les métadonnées relatives aux applications de fonction et à leurs exécutions.
Disponibilité
- En règle générale, Azure Functions peut être réduit à zéro instance sur le plan consommation. Lorsqu’un nouvel événement déclenche une application de fonction, une nouvelle instance doit être créée avec votre code s’exécutant dessus. La latence associée à ce processus est appelée démarrage à froid. Le plan Premium d’Azure Functions offre la possibilité de configurer des instances préchauffées qui sont prêtes pour toute nouvelle requête. Vous pouvez configurer le nombre d’instances préchauffées jusqu’au nombre minimal d’instances dans votre configuration de Scale-out.
- Envisagez d’avoir plusieurs plans Premium dans plusieurs régions et d’utiliser Azure Traffic Manager pour acheminer les requêtes de manière appropriée.
Simplicité de gestion
- Azure Functions doit se trouver dans un sous-réseau vide qui est différent de celui des autres ressources Azure. Cela peut nécessiter davantage de planification lors de la conception de sous-réseaux pour votre réseau virtuel.
- Envisagez de créer des proxys pour chaque ressource locale à laquelle Azure Functions pourrait avoir besoin d’accéder. Cela permet de protéger l’intégrité de votre application contre toute modification imprévue du réseau local.
- Utilisez Azure Monitor pour observer l’analytique et les journaux d’Azure Functions dans l’ensemble de votre solution.
DevOps
- Dans l’idéal, les opérations de déploiement doivent provenir d’une seule équipe (Dev ou DevOps), et non de chaque filiale. Envisagez d’utiliser un système de workflow moderne comme Azure Pipelines ou GitHub Actions pour déployer des applications de fonction de manière reproductible dans toutes les régions Azure et potentiellement localement.
- Utilisez votre système de workflow pour automatiser le redéploiement du code dans Azure Functions, car le code est mis à jour et balisé pour la mise en production.
- Utilisez des emplacements de déploiement pour tester les applications de fonction avant leur envoi (push) final en production.
Optimisation des coûts
L’optimisation des coûts consiste à examiner les moyens de réduire les dépenses inutiles et d’améliorer l’efficacité opérationnelle. Pour plus d’informations, consultez Vue d’ensemble du pilier d’optimisation des coûts.
- Utiliser la calculatrice de prix Azure pour estimer les coûts.
- Le plan Premium d’Azure Functions est requis pour la connectivité à Réseau virtuel Microsoft Azure, l’accès aux sites privés, les points de terminaison de service et les instances préchauffées.
- Le plan Premium d’Azure Functions facture les instances plutôt que la consommation. Le minimum d’une instance unique garantit qu’il y aura au moins une facture mensuelle, même si elle n’est pas exécutée. Vous pouvez définir un nombre maximal d’instances pour contrôler les coûts des charges de travail dont la taille peut augmenter.
Contributeurs
Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.
Auteur principal :
- Raunak Jhawar | Architecte cloud senior
Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.
Étapes suivantes
- Documentation Azure Functions
- Connexions hybrides Azure App Service
- Gestion des environnements hybrides avec PowerShell
- Azure Functions pour se connecter aux ressources d’un réseau virtuel Azure
- Documentation de Réseau virtuel Azure
Ressources associées
Consultez les conseils suivants sur l’architecture pour Azure Functions :
- Traitement d’événements serverless
- Azure Functions dans un environnement hybride
- Mise à l’échelle multicloud avec Azure Functions
- Présentation détaillée du code : Application serverless avec Fonctions
Consultez les conseils suivants sur l’architecture pour les Réseaux virtuels Azure :