Skip to content

Sangrene/flexible-data-relay

Repository files navigation

What is Flexible Data Relay

Flexible Data Relay (FDR) is a software that can be used to share, aggregate and persist data coming from multiple systems (or tenants). Each tenant can create or update entities and as they do a GraphQL schema will be dynamicaly generated. This schema will allow other tenants that have been granted access to query it. An allowed tenant can also subscribe to the creation / update of an entity.

Who is it designed for ?

  • Micro services communication : This software can ease the communication between micro services, providing a lot of different ways to pull and put data available for services while still maintaining the core principle of micro sevices : isolation.
  • Systems within the same company : Teams developing and maintaining different systems with different languages might want to share data with other systems, while still keeping their architecture as is. With FDR it's just a matter of sending or pulling the data exactly when you need it, no configuration needed.
  • Sharing data with trusted partners. etc...

Features

  • Administration:Create tenants using admin HTTP endpoints
  • Entities management: Tenants can create or update entities by posting to HTTP endpoints or publishing to a RabbitMQ instance (optionally) connected to FDR. An entity is a JSON object containing an id field.
  • Access control: Tenants can allow other tenants to access their entities.
  • Entities querying: Tenants can get an entity using its id or get a list of entities, using mongo query syntax, from a GraphQL endpoint.
  • Entities subscription: Tenants can subscribe to entities creation or update. This subscription can be pointing to a webhook or to the RabbitMQ instance (optionally) connected to FDR.

Prerequisites

  • Docker
  • MongoDB replica set that support change stream.
  • (Optionally) RabbitMQ instance.

Architecture

About

A flexible system to share data between systems

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published