Unified data graph for USH
Opportunity
USH, housing over 10 million in France, faced a complex IT system with fragmented data across Keycloak, Drupal, CRM, and portals. Integrating various internal services slowed development of new applications.
Solution
Built a unified data platform using GraphQL & Node.js. This central hub connects internal & external data sources, offering a single API access point for USH.
Unified data graph for USH
USH, housing over 10 million in France, faced a complex IT system with fragmented data across Keycloak, Drupal, CRM, and portals. Integrating various internal services slowed development of new applications.
What were the requirements for the unified data graph?
- Unified access to data. Concentrate the business logic and handling of concerns required to connect to multiple data providers in a single GraphQL middleware. This dramatically simplified life for the developers of the customer-facing applications.
- More freedom for data consumers. Thanks to GraphQL, applications integrating with the API layer are now capable of retrieving the data they need without the backs-and-forth with backend teams.
How did we implement a unified data graph with GraphQL?
Our first step was understanding the architecture and data sources of the existing IT system at USH. We identified Keycloak, Drupal, CRM, and various portals as the primary data sources.
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.
Finally, we implemented the schema using TypeScript and Node.js. These technologies ensured our backend solution was scalable and maintainable, capable of handling USH's extensive data structures.
Throughout the process, we adhered to best practices for schema design and used Apollo tools to build the federated graph. We also leveraged GraphQL's capability to make multiple mutations in one request, optimizing data fetching and handling.
Why 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.
Secondly, GraphQL enables clients to request their own unique data specifications. By allowing fetching of precise data structures, it reduces bandwidth usage and speeds up development.
Lastly, GraphQL supports nested queries in a single request, saving time and bandwidth by limiting server requests. This efficient data handling is crucial when dealing with complex IT systems such as the one at USH.
What is a federated universal data graph?
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.
The concept behind a universal data graph is to move away from having individual data sources and GraphQL APIs. Instead, all data is exposed through a single, unified interface, facilitating data access and management.
What is Keycloak?
Keycloak is an open-source tool, it provides comprehensive security features, including authentication and authorization services for applications. It allows the secure issuance of tokens, such as Bearer Tokens, which are crucial in ensuring secure API requests.
In the context of GraphQL, Keycloak works in tandem with other solutions to add an extra layer of security. For instance, it can be used in conjunction with Express middleware or JavaScript adapters to manage authentication in a Node.js backend. Moreover, Keycloak user roles and permissions can be integrated into GraphQL, ensuring that only authenticated users with the correct permissions can execute certain operations.
In the scope of USH project, we have integrated Keycloak as a solution of authentication and authorization.
How can your product benefit from GraphQL?
At code.store, we provide comprehensive support to implement GraphQL. Our services include:
- Federated Schema Design: We assist in designing federated GraphQL schemas that can integrate disparate data sources into a unified graph.
- Backend Technologies: We leverage advanced technologies such as TypeScript and Node.js to build robust, scalable backend solutions.
- Optimized Data Fetching: We help optimize your data fetching processes, utilizing GraphQL's capabilities for multi-mutation requests.
- Best Practices: We adhere to best practices for schema design and use state-of-the-art tools like Apollo for building federated graphs.
Let's discuss how we can help you unlock the power of low-code development for your organization's data challenges.