Graph de données unifié pour USH
Opportunité
L'USH, qui compte plus de 10 millions de logements en France, était confrontée à un système informatique complexe avec des données fragmentées entre Keycloak, Drupal, CRM et des portails. L'intégration de divers services internes a ralenti le développement de nouvelles applications.
Solution
Nous avons construit une plateforme de données unifiée en utilisant GraphQL et Node.js. Ce hub central relie les sources de données internes et externes, offrant un point d'accès API unique pour USH.
Graph de données unifié pour USH
L'USH, qui compte plus de 10 millions de logements en France, était confrontée à un système informatique complexe avec des données fragmentées entre Keycloak, Drupal, CRM et des portails. L'intégration de divers services internes a ralenti le développement de nouvelles applications.
What were the requirements for the unified data graph?
- Accès unifié aux données. Concentrer la logique commerciale et le traitement des préoccupations nécessaires pour se connecter à de multiples fournisseurs de données dans un seul intergiciel GraphQL. Cela a considérablement simplifié la vie des développeurs d'applications.
- Plus de liberté pour les consommateurs de données. Grâce à GraphQL, les applications qui s'intègrent à la couche API sont désormais capables d'extraire les données dont elles ont besoin sans soliciter les équipes de backend.
How did we implement a unified data graph with GraphQL?
Notre première étape a consisté à comprendre l'architecture et les sources de données du système informatique existant à l'USH. Nous avons identifié Keycloak, Drupal, CRM et divers portails comme étant les principales sources de données.
Secondly, we designed a federated GraphQL schema. This process involved combining multiple graph schemas to create a unified API. The federated architecture facilitated the integration of different data sources, making the construction of a unified data graph easier.
Enfin, nous avons implémenté le schéma en utilisant TypeScript et Node.js. Ces technologies ont permis de garantir l'évolutivité et la maintenance de notre solution backend, capable de gérer les structures de données étendues d'USH.
Tout au long du processus, nous avons respecté les meilleures pratiques en matière de conception de schémas et utilisé les outils Apollo pour construire le graphe fédéré. Nous avons également tiré parti de la capacité de GraphQL à effectuer plusieurs mutations en une seule requête, optimisant ainsi la récupération et le traitement des données.
Pourquoi GraphQL ?
GraphQL was chosen for several reasons. Firstly, it offers a unified approach to data fetching, reducing complexity of client-server interactions. This feature enables seamless collaboration between different GraphQL services, simplifying the creation of a unified data graph.
Deuxièmement, GraphQL permet aux clients de demander leurs propres spécifications de données. En permettant de récupérer des structures de données précises, il réduit l'utilisation de la bande passante et accélère le développement.
Enfin, GraphQL prend en charge les requêtes imbriquées dans une seule demande, ce qui permet d'économiser du temps et de la bande passante en limitant les demandes du serveur. Ce traitement efficace des données est crucial lorsqu'il s'agit de systèmes informatiques complexes tels que celui de l'USH.
Qu'est-ce qu'un graphe de données universel fédéré ?
A universal data graph aims to streamline and simplify data management by creating a unified interface for data access. This graph is built on the concept of GraphQL Federation, a distributed architectural approach that allows developers to integrate data from multiple sources into a single, cohesive API.
This unified API, or universal data graph, is the central point through which developers can manage all data requests. It effectively merges all microservice data graphs into one, eliminating the need for multiple API requests to different data sources.
Le concept d'un graphique de données universel consiste à s'affranchir des sources de données individuelles et des API GraphQL. Au lieu de cela, toutes les données sont exposées par le biais d'une interface unique et unifiée, ce qui facilite l'accès aux données et leur gestion.
Qu'est-ce que le Keycloak ?
Keycloak est un outil open-source qui offre des fonctions de sécurité complètes, notamment des services d'authentification et d'autorisation pour les applications. Il permet l'émission sécurisée de jetons, tels que les jetons de support, qui sont essentiels pour garantir la sécurité des demandes d'API.
Dans le contexte de GraphQL, Keycloak fonctionne en tandem avec d'autres solutions pour ajouter une couche supplémentaire de sécurité. Par exemple, il peut être utilisé avec le middleware Express ou des adaptateurs JavaScript pour gérer l'authentification dans un backend Node.js. De plus, les rôles et permissions des utilisateurs de Keycloak peuvent être intégrés dans GraphQL, ce qui garantit que seuls les utilisateurs authentifiés disposant des permissions adéquates peuvent exécuter certaines opérations.
Dans le cadre du projet USH, nous avons intégré Keycloak comme solution d'authentification et d'autorisation.
Comment votre produit peut-il bénéficier de GraphQL ?
Chez code.store, nous fournissons une assistance complète pour la mise en œuvre de GraphQL. Nos services comprennent :
- Conception de schémas fédérés : Nous aidons à concevoir des schémas GraphQL fédérés qui peuvent intégrer des sources de données disparates dans un graphe unifié.
- Technologies Backend : Nous nous appuyons sur des technologies avancées telles que TypeScript et Node.js pour construire des solutions backend robustes et évolutives.
- Optimisation de la recherche de données : nous vous aidons à optimiser vos processus de recherche de données, en utilisant les capacités de GraphQL pour les requêtes multi-mutations.
- Meilleures pratiques : Nous adhérons aux meilleures pratiques en matière de conception de schémas et utilisons des outils de pointe tels qu'Apollo pour construire des graphes fédérés.
Discutons de la manière dont nous pouvons vous aider à exploiter la puissance du développement low-code pour relever les défis de votre organisation en matière de données.