Passer

Comment Dapr simplifie le développement d’applications distribuées ?

Au cours de la dernière décennie, les applications monolithiques lourdement codées ont été délaissées au profit de microservices plus fins et autonomes. Cependant, si les systèmes basés sur les microservices présentent des avantages tels que l’agilité et l’évolutivité indépendante, ils s’accompagnent également de défis inhérents tels que l’appel de services, les transactions distribuées, la gestion des secrets et l’intégration des agents de messages, etc.

Dapr, le Distributed Application Runtime, vise à résoudre les problèmes mentionnés ci-dessus et bien d’autres encore. Dapr permet aux développeurs de se concentrer sur leur application principale/logique d’entreprise, sans avoir à se préoccuper de résoudre les problèmes liés à la construction d’un système distribué.

Dans cet article, nous allons examiner de plus près la technologie qui sous-tend Dapr, et explorer les principaux composants et capacités qui en font un outil de premier plan pour travailler avec des applications distribuées. 

Qu’est-ce que Dapr ?

Dapr est un runtime portable, sans serveur et piloté par les événements qui permet aux développeurs de construire facilement des microservices résilients, sans état et avec état qui s’exécutent sur le cloud et à la périphérie en utilisant le langage et le framework de leur choix. Dapr fonctionne en mode natif sur Kubernetes, en tant que binaire auto-hébergé sur une machine désignée ou un appareil IoT, ou en tant que conteneur pouvant être injecté dans n’importe quel système, dans le cloud ou sur site.

Le projet a été initié et annoncé par Microsoft le 16 octobre 2019, cependant, Dapr n’appartient pas à Microsoft et est incubé à la Cloud Native Computing Foundation (CNCF). Il est actuellement disponible en tant que projet open-source sur GitHub.

Comment fonctionne Dapr ?

Dapr fonctionne selon le modèle du sidecar (un logiciel secondaire déployé parallèlement à l’application principale) en utilisant des API HTTP ou gRPC pour communiquer avec le code de l’application.  Cela permet à Dapr de fonctionner avec tous les langages de programmation existants et futurs sans que les utilisateurs aient besoin d’importer des frameworks ou des bibliothèques. 

En effet, Dapr aide à réduire la complexité inhérente aux applications microservices distribuées en codifiant les meilleures pratiques de l’industrie dans des API (blocs de construction) qui offrent des capacités communes aux applications distribuées : gestion de l’état, invocation de service à service, messagerie pub/sub, gestion des secrets et observabilité.

Quelles sont les principales capacités de Dapr ?

Comme mentionné plus haut, Dapr propose sept blocs de construction modulaires qui fournissent les meilleures pratiques communes pour la construction de microservices. Chaque bloc de construction est totalement indépendant, ce qui signifie que les développeurs peuvent choisir d’utiliser un, plusieurs ou tous les blocs en fonction des exigences de l’application. 

Les blocs de construction de Dapr sont enfichables et opt-in, de sorte que les développeurs cloud-native peuvent choisir uniquement les fonctionnalités dont ils ont besoin. Ils offrent la possibilité de créer des applications distribuées résilientes, pilotées par les événements et avec état, sans la complexité d’une mise en œuvre manuelle. 

Examinons-les de plus près:

  • Appel de service à service

Au sein d’un système distribué, un service doit pouvoir communiquer avec un autre pour accomplir des opérations spécifiques, ce qui implique souvent : des défis complexes tels que la localisation et la sécurité des services, la gestion des nouvelles tentatives en cas d’erreurs transitoires ou la capture d’informations dans les graphiques d’appels de service pour diagnostiquer les problèmes de production.

Le bloc de construction d’appel de service Dapr peut aider à rationaliser la communication entre les services en utilisant un sidecar comme proxy inverse pour le service prévu. Par exemple, supposons que le « service A » doive communiquer une demande au « service B ». En utilisant l’API Service d’Appel, Dapr va créer un sidecar pour les services A et B, qui communiquera la requête et la fonction exécutée au nom des services, éliminant ainsi la complexité des appels directs.

  • Publier et s’abonner

Le modèle Publish-Subscribe (pub/sub) est un modèle de messagerie couramment utilisé par les architectes dans les applications distribuées. Cependant, la mise en œuvre de ce modèle est souvent complexe à cause des différences de fonctionnalités entre les différents produits de messagerie.

Le bloc de construction Dapr Publish-Subscribe simplifie la fonctionnalité pub/sub en utilisant un couplage lâche, également connu sous le nom de découplage temporel, dans lequel le modèle découple les éditeurs (services qui envoient des messages) des abonnés (services qui consomment des messages). Avec ce modèle, les éditeurs et les abonnés s’appuient sur un agent de messages centralisé et enfichable pour distribuer les messages, ce qui supprime la dépendance du service tout en augmentant sa portabilité et sa flexibilité.

  • Gestion des secrets

Garder les secrets à une distance suffisante du code est une exigence standard ainsi qu’une bonne pratique. Pour autant, l’accès aux archives secrètes peut s’avérer assez complexe, en particulier dans les scénarios multi-cloud impliquant plusieurs archives secrètes spécifiques à des fournisseurs différents.

Grâce au bloc de construction dédié à la gestion des secrets de Dapr, les développeurs peuvent facilement et en toute sécurité stocker des secrets et les référencer dans le fichier de configuration à partir d’autres composants de Dapr tels que Kubernetes, Azure KeyVault, AWS Secrets Manager, etc. Tous les accès sont sécurisés grâce à l’authentification et à l’autorisation, ce qui garantit que seules les applications disposant d’informations d’identification suffisantes ont accès aux secrets.

  • Liaisons de ressources

C’est dans les liaisons de ressources que la nature événementielle de Dapr prend tout son sens. Grâce à ce bloc de construction, les utilisateurs peuvent déclencher l’application à partir d’événements provenant de systèmes externes, ou communiquer avec ceux-ci. Essentiellement, le bloc de construction des liaisons permet aux développeurs de se concentrer sur la logique commerciale, plutôt que sur les détails de la mise en œuvre de l’interaction avec un système.

Par exemple, l’API élimine la nécessité d’écrire un code standard pour se connecter et interroger des systèmes de messagerie tels que les files d’attente et les bus de messages. Par ailleurs, il permet aux utilisateurs de ne pas utiliser de SDK ou de bibliothèques dans leur code, de gérer les tentatives et les reprises sur défaillance, de passer d’une liaison à l’autre au moment de l’exécution et de créer des applications portables avec des liaisons spécifiques à l’environnement, et sans modification du code.

  • Gestion de l’état

Lorsqu’il s’agit de suivre l’état d’une application distribuée, les développeurs sont confrontés à de nombreux défis : l’utilisation de différents types de magasins de données, différents niveaux de cohérence pour accéder aux données et les mettre à jour, la résolution des conflits, la répétition des erreurs transitoires, etc.

Avec le module de gestion des états de Dapr, les développeurs peuvent facilement relever ces défis et rationaliser le suivi des états sans dépendances ni courbe d’apprentissage des SDK de stockage tiers. Grâce à la gestion de l’état, l’application peut stocker des données sous forme de paires clé/valeur dans les magasins d’état pris en charge, ce qui élimine la nécessité de disposer de services avec ou sans état pour prendre en charge différents backends.

  • Acteurs

Les implémentations de modèles d’acteurs sont généralement liées à un langage ou à une plateforme spécifique. Cependant, grâce au bloc de construction des acteurs Dapr, les développeurs peuvent facilement exploiter le modèle d’acteur à partir de n’importe quel langage ou plateforme.

Le modèle d’acteur virtuel élimine la nécessité de créer explicitement des acteurs. Au lieu de cela, les acteurs sont activés implicitement et placés sur un nœud du cluster la première fois qu’un message est envoyé à l’acteur. Ainsi lorsqu’ils n’exécutent pas d’opérations, les acteurs sont déchargés silencieusement de la mémoire. Si un nœud est défaillant, Dapr déplace automatiquement les acteurs activés vers des nœuds sains. De plus, l’API d’acteur Dapr offre des capacités de planification qui permettent de rationaliser l’organisation du flux de travail.

  • Observabilité

Lors de la création d’une application, la compréhension du comportement du système est un élément important de la réussite de l’opération. Toutefois, l’observabilité devient infiniment plus complexe dans les systèmes distribués composés de plusieurs microservices. 

Grâce au bloc de construction de l’observabilité Dapr, les développeurs et les opérateurs peuvent observer le comportement des services et des applications du système sans avoir à les orchestrer. Les composants du système Dapr et le moteur d’exécution prennent en charge les mesures, les historiques et les traces pour déboguer, exploiter et surveiller les services du système Dapr.  Ces données peuvent ensuite être envoyées à un collecteur OpenTelemetry et reliées à des outils de surveillance externes pour une visibilité complète du spectre.

Dapr, la bonne solution pour votre entreprise ?

La plupart des développeurs seraient enclins à en convenir : il est difficile d’écrire des applications distribuées performantes, extensibles et fiables. Néanmoins, Dapr prend en charge la complexité des applications distribuées et la condense en modèles et meilleures pratiques éprouvés, faciles à utiliser. Tout ceci permet aux développeurs cloud-native d’exploiter pleinement la nature multilingue des microservices pour créer des applications cloud-native distribuées, pilotées par les événements.

En laissant Dapr gérer des défis complexes tels que la découverte de services, le cryptage, l’observabilité, la gestion des secrets, les bindings, la gestion des états, etc., les développeurs peuvent cesser de s’inquiéter des composants d’infrastructure sous-jacents et se concentrer sur ce qui compte : la logique métier, la productivité et un code simple et propre.

Comment en savoir plus ?

Cet article fait partie d’une série plus vaste centrée sur les technologies et les thèmes abordés dans la première édition du TechRadar de Devoteam. Pour savoir ce que notre communauté de leaders technologiques a exprimé au sujet de la position actuelle de Dapr sur le marché, téléchargez  l’édition la plus récente du TechRadar de Devoteam.

Envie d’en savoir plus sur Dapr ?

Consultez notre TechRadar pour savoir ce que nos experts pensent de sa viabilité sur le marché.