Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Le serverless sur Azure décrypté

By Greg WiedemanJun 16, 202513 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Le déploiement serverless s'est imposé dans de nombreux environnements cloud. Chaque fournisseur cloud propose plusieurs services qui regroupent ses offres serverless, et Microsoft Azure ne fait pas exception.

Cet article passe en revue plusieurs services serverless majeurs : Azure Functions, Azure Logic Apps, Azure Event Grid, Azure Event Hubs, Azure Container Apps et Azure Cosmos DB.

Il aborde également différents cadres architecturaux et cas d'usage, comme le traitement des commandes ou les solutions événementielles.

Nous mettrons aussi en lumière les bonnes pratiques de déploiement des applications serverless sur Azure, ainsi que les outils qui facilitent ce déploiement, sans oublier les techniques d'optimisation des coûts pour chaque service.

Entrons dans le vif du sujet.

Introduction au serverless sur Azure

Qu'est-ce qu'une architecture serverless ?

Le terme serverless ne signifie pas que les serveurs disparaissent : il désigne plutôt un modèle qui permet aux développeurs de se concentrer sur le code, plutôt que sur la gestion de l'infrastructure sous-jacente nécessaire à son exécution. Dans ce cadre, le fournisseur de services cloud assume le provisionnement, la mise à l'échelle et la gestion automatiques de l'infrastructure pour assurer une exécution efficace du code.

Le terme serverless recouvre deux acceptions distinctes : Backend as a Service (BaaS) et Functions as a Service (FaaS). Ces deux concepts partagent toutefois le même principe : les développeurs et les ingénieurs DevOps n'ont ni à déployer, ni à configurer, ni à gérer de serveurs.

  • BaaS désigne les services cloud qui fournissent des fonctionnalités backend, comme les bases de données ou le stockage. Ces services exposent des API auxquelles les applications sources se connectent directement.
  • FaaS est un modèle dans lequel une fonction est un fragment de code qui s'exécute dans l'environnement d'hébergement du fournisseur cloud. Ce modèle masque le code et les serveurs sous-jacents qui exécutent la fonction.

Le schéma ci-dessous illustre l'architecture Azure d'une application conçue pour servir du contenu statique via Azure Blob Storage, tout en intégrant une API par le biais d'Azure Functions. Cette API récupère les données depuis Azure Cosmos DB et renvoie les résultats à l'application web.

Cet exemple illustre les deux acceptions de BaaS et FaaS au sein d'Azure : le FaaS via Azure Functions, et le BaaS via Azure Blob Storage.

https://learn.microsoft.com/en-us/azure/architecture/web-apps/serverless/architectures/web-app

Le serverless présente plusieurs caractéristiques, avec leurs avantages et leurs inconvénients. Côté avantages :

  • Coût — Vous ne payez que pour les ressources que vous consommez, ce qui évite la facturation des ressources inactives comme les serveurs web ou middleware, et limite le gaspillage durant les heures creuses. Si vous connaissez vos schémas d'accès, vous pouvez économiser davantage en achetant de la capacité réservée.
  • Moins de maintenance — Le fournisseur cloud gérant la complexité serveur sous-jacente, les développeurs peuvent se consacrer pleinement à l'application et à ses fonctionnalités.
  • Évolutivité — Les composants serverless s'adaptent automatiquement aux schémas de trafic imprévisibles ou fluctuants.
  • Support — Une vaste communauté d'entraide existe, et la plupart des fournisseurs cloud proposent des services qui s'intègrent à des composants serverless ou s'appuient sur eux.

Quelques inconvénients du serverless :

  • Performance — Des problèmes de performance peuvent survenir à différents niveaux d'une architecture serverless découplée, ce qui complique l'identification de l'API ou du composant responsable du ralentissement. Par ailleurs, si une fonction n'a pas été sollicitée depuis un certain temps, elle peut subir un cold start. Ce phénomène se produit parce que le fournisseur doit allouer les ressources nécessaires à l'exécution de la fonction, ce qui prend un temps supplémentaire et entraîne des lenteurs côté application.
  • Dépendance vis-à-vis du fournisseur — Les services serverless sont en général propres à l'éditeur, ce qui peut rendre la migration hors de la plateforme délicate et coûteuse.
  • Contrôle limité — Le client peut être limité dans ses actions, faute de maîtrise de l'infrastructure sous-jacente. Si l'application dépend de configurations d'environnement spécifiques, elle peut ne pas fonctionner correctement en serverless. À cela s'ajoutent des restrictions fréquentes sur la durée d'exécution, le nombre maximal de fonctions et les langages de programmation pris en charge.
  • Sécurité — Le fournisseur étant responsable du système d'exploitation et de l'infrastructure sous-jacents, la sécurité repose largement sur les mesures qu'il met en place. Cela peut créer des vulnérabilités, chaque fonction pouvant constituer un vecteur d'attaque.

Pourquoi choisir Azure pour le serverless ?

Si de nombreux fournisseurs de cloud public proposent des cadres d'architecture serverless, Azure se démarque pour plusieurs raisons :

  • Prise en charge d'un éventail plus large de langages : Azure prend en charge un ensemble varié de langages de programmation, ce qui permet aux développeurs de travailler dans leur environnement de prédilection.
  • Capacités de débogage local : avec des outils comme Visual Studio, Azure offre des fonctionnalités qui dopent la productivité des développeurs en facilitant le débogage local.
  • Écosystème complet : Azure permet de bâtir des solutions serverless de bout en bout, front-end comme backend, avec des services qui s'articulent efficacement entre eux. Les développeurs peuvent ainsi concevoir des applications innovantes intégrant facilement du code pour les services de machine learning et d'IA.

Autant d'atouts qui font d'Azure un choix convaincant pour l'architecture serverless.

Les services serverless Azure populaires

Azure Functions

Azure Functions

Azure Functions joue le rôle de logique backend dans les applications serverless et constitue le socle du Function as a Service (FaaS). Le service offre une grande évolutivité et prend en charge une architecture événementielle. Les fonctions peuvent en outre faire appel à des services externes, tels que des prestataires de paiement tiers, pour finaliser des transactions.

Elles s'accompagnent d'un large éventail de déclencheurs et de bindings événementiels qui les connectent sans effort à d'autres services, supprimant la nécessité d'écrire du code supplémentaire.

Le résumé suivant présente l'objectif et quelques cas d'usage d'Azure Functions :

https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview

Azure Functions prend en charge une grande variété de langages, ce qui en fait une ressource attractive pour le serverless. Les langages pris en charge sont les suivants :

https://learn.microsoft.com/en-us/azure/azure-functions/supported-languages?tabs=isolated-process%2Cv4&pivots=programming-language-csharp

Azure Durable Functions étend les capacités d'Azure Functions et permet de créer des workflows avec état et une logique de coordination via un modèle d'orchestrateur. Cette extension facilite le développement d'applications serverless de longue durée, évolutives et fiables.

Techniques d'optimisation des coûts :

Azure Logic Apps

Azure Logic Apps

Azure Logic Apps fournit une solution d'orchestration serverless robuste, conçue pour développer et gérer des workloads complexes. En tant que plateforme d'intégration cloud (iPaaS) de Microsoft, elle automatise sans heurt des workflows reliant un large éventail de services et d'applications.

Cet outil puissant simplifie l'intégration et permet aux organisations d'améliorer leur efficacité opérationnelle, de réduire les interventions manuelles et de réagir plus vite à l'évolution des besoins métier.

Grâce à des modèles et connecteurs prédéfinis, les utilisateurs mettent rapidement en place des workflows sophistiqués qui font dialoguer des systèmes hétérogènes, stimulant ainsi l'innovation et la productivité.

Voici quelques caractéristiques clés d'Azure Logic Apps qui en font une solution à considérer pour l'orchestration de workflows :

  • Concepteur visuel pour créer des processus métier ou des workflows automatisés
  • Plus de 1 400 connecteurs prédéfinis avec déclencheurs et actions
  • Approche Low-Code / No-Code
  • Hébergement par Microsoft Azure, qui prend en charge l'hébergement, la mise à l'échelle, la gestion, la supervision et la maintenance des solutions construites avec ces services.

Combiner différents services est une pratique courante en serverless. Vous pouvez par exemple appeler des fonctions depuis des workflows Logic Apps, et inversement. Le tableau suivant présente quelques différences clés entre Azure Functions et Azure Logic Apps.

https://learn.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs

Techniques d'optimisation des coûts :

Azure Event Grid

Azure Event Grid

Azure Event Grid est un service conçu pour simplifier le développement d'applications événementielles, en routant des événements provenant de divers services Azure et de sources personnalisées vers des abonnés tels qu'Azure Functions, Logic Apps, des webhooks ou tout endpoint HTTP.

Évolutif et entièrement géré, ce service fonctionne selon le modèle publication/abonnement (Pub/Sub) et prend en charge les protocoles MQTT v3.1.1 et v5.0, ainsi que HTTP. Il facilite ainsi la création de pipelines de données, d'intégrations applicatives et d'architectures serverless événementielles. Il offre par ailleurs la possibilité de publier et de s'abonner à des messages pour des solutions IoT (Internet des objets), avec une livraison des événements en mode push comme en mode pull.

Event Grid se conforme également à la spécification CloudEvents 1.0, ce qui renforce l'interopérabilité entre les différents systèmes.

Voici un schéma général d'Azure Event Grid.

https://learn.microsoft.com/en-us/azure/event-grid/overview

Les deux fonctionnalités principales d'Azure Event Grid sont :

  • La messagerie MQTT, qui permet aux appareils IoT et aux applications de communiquer entre eux via MQTT. Event Grid peut s'appuyer sur MQTT pour acheminer des messages vers des services Azure ou des endpoints personnalisés à des fins d'analyse, de visualisation ou de stockage.

Messagerie MQTT https://learn.microsoft.com/en-us/azure/event-grid/overview

  • Distribution des données via les modes push et pull — À tout moment dans le pipeline de données, les applications HTTP peuvent consommer des messages via les API push ou pull.

Messagerie événementielle https://learn.microsoft.com/en-us/azure/event-grid/overview

Techniques d'optimisation des coûts :

Azure Event Hubs

Azure Event Hubs

Azure Event Hubs est un service entièrement managé d'ingestion de données en temps réel, qui allie simplicité, sécurité et évolutivité. Il prend en charge des protocoles populaires comme AMQP, HTTPS et Apache Kafka, et peut ingérer des millions d'événements par seconde.

Cette capacité d'ingestion massive et l'analyse des données en temps réel sont particulièrement précieuses pour les applications qui ont besoin d'insights immédiats et d'une réactivité face à l'évolution des données : un composant essentiel des architectures cloud modernes.

L'intégration aux autres services Azure se fait sans heurt. Vous pouvez ainsi tirer des informations précieuses des données et réaliser du micro-batching sur le même flux.

Azure Event Hubs permet de bâtir une solution de streaming serverless complète, qui s'intègre nativement avec Stream Analytics.

Quelques cas d'usage évoqués dans la documentation Azure :

Architecture Event Hub https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-about

Techniques d'optimisation des coûts :

Azure Container Apps

Azure Container Apps

Azure propose deux services clés pour travailler avec des conteneurs : Azure Container Apps (ACA) et Azure Kubernetes Service (AKS). Notre attention se portera principalement sur Azure Container Apps, mais il est essentiel de comprendre les différences entre les deux et de savoir quand choisir l'un ou l'autre.

ACA offre une approche unique app-centric, idéale pour les développeurs qui veulent se concentrer sur la création d'applications plutôt que sur les complexités de l'orchestration de conteneurs. Son architecture événementielle remarquable, associée au scale-to-zero, en fait un choix particulièrement économique.

Azure Kubernetes Service, à l'inverse, est souvent perçu comme une option cluster-centric, qui offre davantage de contrôle et de flexibilité. Il est taillé pour les applications complexes nécessitant des personnalisations spécifiques, en particulier pour les équipes déjà à l'aise avec Kubernetes.

ACA vs AKS : quel service Azure pour exécuter vos conteneurs \ Découvrez comment choisir entre Azure Container Apps (ACA) et Azure Kubernetes Service (AKS) pour exécuter vos…\ techcommunity.microsoft.com

Si vous souhaitez être accompagné pour simplifier votre déploiement avec AKS, n'hésitez pas à contacter DoiT.

Azure Kubernetes Service | AKS | DoiT \ Kubernetes sur Azure : innovez, déployez et exploitez Kubernetes rapidement et de manière fluide avec Azure Kubernetes Service (AKS)…\ www.doit.com

Azure Container Apps se distingue comme une plateforme serverless avancée, conçue pour faire tourner des applications conteneurisées de manière fluide et efficace. En supprimant les contraintes de gestion des serveurs, le service permet aux développeurs de se consacrer à la création et au déploiement de leurs applications, sans se soucier des défis d'infrastructure.

La plateforme rationalise l'orchestration et le déploiement des conteneurs : les utilisateurs gèrent les configurations, mettent à l'échelle les opérations et allouent les ressources avec aisance. Avec le scaling automatique en fonction de la demande, des capacités réseau intégrées et des outils de supervision natifs, Azure Container Apps offre aux entreprises la flexibilité nécessaire pour s'adapter rapidement aux évolutions du marché.

En s'appuyant sur cette plateforme, les organisations peuvent en outre accélérer leurs cycles d'innovation tout en maintenant une efficacité opérationnelle élevée dans un environnement cloud dynamique. Elles sont ainsi en mesure de saisir rapidement de nouvelles opportunités, d'optimiser l'utilisation de leurs ressources et d'améliorer les performances globales de leurs applications.

Quelques cas d'usage courants d'Azure Container Apps :

  • Déploiement d'endpoints d'API
  • Hébergement de tâches de traitement en arrière-plan
  • Traitement événementiel
  • Exécution de microservices

L'un des avantages d'Azure Container Apps est la possibilité de mettre à l'échelle selon les critères suivants :

Exemples Azure Container Apps : https://learn.microsoft.com/en-us/azure/container-apps/overview

Techniques d'optimisation des coûts :

Azure Cosmos DB

Azure Cosmos DB

Azure Cosmos DB est un service de base de données avancé et entièrement managé, qui prend en charge plusieurs modèles de données : NoSQL, relationnel et bases vectorielles. Cette plateforme flexible offre des temps de réponse exceptionnels, généralement de l'ordre de quelques millisecondes, pour une expérience haute performance. Son architecture facilite la mise à l'échelle tout en maintenant des performances fiables, quelle que soit la taille du système ou la demande.

Azure Cosmos DB garantit en outre une continuité d'activité robuste, avec un contrat de niveau de service (SLA) qui assure une disponibilité élevée et inclut des mesures de sécurité de niveau entreprise pour protéger les données sensibles et respecter les exigences réglementaires.

Service entièrement managé, Azure Cosmos DB automatise diverses tâches : gestion, mises à jour, application des correctifs. Il propose des options serverless économiques pour la gestion de la capacité, avec un scaling automatique qui s'adapte aux besoins de l'application et aligne la capacité sur la demande.

Avec sa haute disponibilité garantie, son débit impressionnant, sa latence minimale et sa cohérence ajustable, Azure Cosmos DB est idéal pour une grande variété d'applications : IA, retail et marketing, IoT et télématique, gaming, ou encore personnalisation des plateformes sociales.

Les applications listées ci-dessous présentent une excellente compatibilité avec Azure Cosmos DB et exploitent efficacement les capacités avancées de cette puissante plateforme, pour des performances et une évolutivité accrues dans des scénarios variés.

  • Schéma flexible pour le développement itératif. Les applications cherchent souvent à mettre en œuvre des pratiques DevOps modernes et flexibles pour accélérer la livraison des fonctionnalités.
  • Workloads sensibles à la latence. Il s'agit de workloads tels que la gestion d'état des appareils IoT et la télémétrie, qui exigent un traitement efficace de gros volumes de données.
  • Workloads hautement élastiques. Une plateforme de réservation de concerts en est un bon exemple : elle doit s'adapter à une demande fluctuante.
  • Workloads à haut débit. Il s'agit là encore de workloads comme la gestion d'état des appareils IoT et la télémétrie, qui nécessitent un traitement efficace de gros volumes de données.
  • Workloads critiques à haute disponibilité. Les applications web orientées clients en sont un exemple clé : elles doivent maintenir leur disponibilité et leur fiabilité pour servir efficacement les utilisateurs.

À l'inverse, les applications suivantes ne sont pas adaptées à Azure Cosmos DB :

  • Workloads analytiques (OLAP) : analytique interactive, en streaming ou par lots, pour les besoins des Data Scientists et Data Analysts. Microsoft Fabric peut être une alternative à envisager.
  • Applications hautement relationnelles, comme les solutions CRM en marque blanche. Privilégiez plutôt Azure SQL, Azure Database for MySQL ou Azure Database for PostgreSQL.

Techniques d'optimisation des coûts :

Plusieurs options gratuites sont également disponibles :

Conclusion

En résumé, le modèle de calcul serverless d'Azure offre une solution robuste aux développeurs qui souhaitent simplifier le développement applicatif et alléger la gestion d'infrastructure. En s'appuyant sur des services tels qu'Azure Functions, Azure Logic Apps et Azure Cosmos DB, les organisations peuvent concevoir des applications événementielles et évolutives, capables de s'adapter rapidement à l'évolution des besoins utilisateurs.

Si Azure offre des avantages indéniables — économies, maintenance réduite, évolutivité et communauté d'entraide solide —, il faut aussi tenir compte des défis potentiels : problèmes de performance, dépendance vis-à-vis du fournisseur, contrôle limité et risques de sécurité.

Au final, le vaste éventail de solutions serverless d'Azure permet aux développeurs de se concentrer sur l'innovation et le développement de fonctionnalités plutôt que sur la gestion d'infrastructure. Azure devient ainsi un choix attrayant pour les entreprises qui veulent tirer parti du cloud. À mesure que la transformation numérique s'accélère, le serverless sur Azure offre une approche tournée vers l'avenir pour bâtir des applications résilientes et efficaces, capables de s'adapter aux besoins de demain.

Libérez tout le potentiel de votre plateforme Azure : planifiez dès aujourd'hui une démonstration et un échange avec notre équipe dédiée pour découvrir comment DoiT Cloud Intelligence peut transformer votre expérience et générer des résultats !

DoiT Platform | DoiT \ DoiT aide Clockwise à stimuler sa croissance en faisant évoluer plus efficacement son infrastructure cloud AWS. "Nous devons faire…\ www.doit.com