Replicante Core attempts to limit the number of required dependencies to avoid management overhead. On the other hand it is unwise to re-implement complex systems (such as databases) if there is no need to.

In order to run, replicante requires the following:

  • A distributed coordinator.
  • A message queues service.
  • A storage layer.
  • An event streaming platform.

It is possible to use the same technology to provide more then one dependency. Such approach is a good way to balance performance, scalability and complexity.

Distributed coordinator

Replicante Core supports high availability, machine failure tolerance, and horizontal scaling.
To achieve this Replicante Core runs on multiple instances.

A distributed coordinator is a system (itself also highly available) that allows the coordination of work across all processes as well as the re-distribution of work assigned to failed processes.

Supported systems:

Message queues service

Message queues services are a way for a system to request asynchronous work to be performed by a pool of worker nodes. This allows Replicante Core to better distribute work across processes, optimally handle spikes in demand and ensure all work is executed.

Supported systems:

Storage layer

Used to persist the information collected from users, nodes, generated metadata, and any other permanent data that is required by Replicante Core to run.

Supported systems:

Event streaming platform

Events generated by Replicante are emitted onto a streaming platform. This provides two advantages:

  1. Replicante has a reliable event bus as the base for an event driven architecture.
  2. Other tools can process emitted events to implement extra features and integrations.

Supported systems:

Optional dependencies

Some features may rely on additional runtime dependencies. To keep the set of required dependencies to a minimum these features must be enabled explicitly.

The needed systems and configuration details are documented within the features that need them.