Datachain solution architecture

The purpose of this page is to present:

  • The technical architecture of the solution,

  • The different types of deployment that can be implemented.

The solution is made up of 5 modules, 2 of which are mandatory: Datachain-Core and Dc-Console.

ArchitectureModules.V9.HL

The entire Datachain solution is delivered as docker containers, allowing deployment on platforms such as docker swarm or K8s.

All these modules share a common SSO. (In V9, Keycloak remains mandatory if the Maestro and Dc-Code modules are deployed. Otherwise, the solution can integrate with SSO solutions available on the market that support OAUTH authentication.)

Requests to the different modules can be routed by HTTP reverse proxy solutions (such as Traefik for docker or Kubernetes ingress).

Datachain Core

Datachain Core is made available as a docker container, enabling simple single-server deployments, right up to highly available multi-server architectures.

Solution application architecture

The architecture below shows the minimal version of a deployment, in standalone mode, i.e. without using any external resource.

ArchitectureApplicativeSimple

The table below summarizes the internal flows between the different modules.

Source Target Protocol Port Function

traefik

web_ui

http

80

proxies requests to the web_ui

web_ui

backend

http

8089

proxies requests to the backend

backend

spark

http

8090

Data exchange with Spark

backend

redis

redis

6379

Asynchronous information exchange with Spark

backend

pg_all

sql

5432

Retrieval of application and exposure data

backend

keycloak

http

8080

Retrieval of authentication data

spark

redis

redis

6379

Asynchronous information exchange with the backend

spark

pg_all

sql

5432

Generation of exposure data

spark

keycloak

http

8080

Retrieval of authentication data (to be removed in a future version)

keycloak

pg_all

sql

5432

Retrieval of Keycloak data

pg_migration

pg_all

sql

5432

Schema and data migration

Focus on the Spark deployment

In the Datachain solution, the Spark service is the entry point for the computations performed by Datachain to run pipelines. This node therefore requires suitable CPU/memory power.

Different deployment scenarios can address the performance/availability requirements of the Spark node(s).

The Spark service can process Datachain pipelines in parallel. The mode used in this case is Spark’s FAIR mode. It can however remain in FIFO mode, which processes only one task at a time.

The following diagrams only show the deployment diagrams of the Spark contexts, in order to focus on them. The other elements of the solution must be deployed to obtain an operational platform.

Case 1: Single server, single service, with vertical scalability

The service is configured with enough CPU and memory to perform the processing. If additional resources are needed, the physical resources of the machine must be increased, and these new resources allocated to the existing service. The number of jobs processed in parallel can potentially be increased.

All projects use the same Spark service. Under heavy load, contention may occur. This solution reaches its limits when the memory requirements become too high for all the parallel processing. In that case, case 2 can be used.

  • Configuration in this case: from 1 cpu/1 GB RAM to 60 cpu/60 GB RAM.

  • If the physical machine is dedicated to the Spark service, make sure to leave 1 cpu/1 GB RAM to the host system.

Case 2: Single server, multiple services

sparkMonoServeur

Several Spark services are deployed on the same machine: they can share the same data directory (HDFS) in order to share data. This is useful when a project can use any of these contexts interchangeably.

Case 3: Multi-server, single/multiple services

sparkMultiServeur

One or more Spark services are deployed on several machines that do not share a disk. This deployment mode makes it possible to deploy contexts per BU (Business Unit) of an organization, each having one or more dedicated Spark contexts. Each BU thus has its own computing power: its jobs will be processed even if another BU uses its resources very intensively.

A second possibility is to share development and production on the same Datachain instance. Jobs of projects under development can be run on production contexts, while production jobs are scheduled through Maestro on the production context. A temporary overload of the development contexts will not affect the performance of the production contexts.

Case 4: Multi-server, single/multiple services deployed on a Spark cluster

sparkCluster

In this scenario, a Spark/Hadoop cluster is deployed on a first set of machines. Then, one or more Spark services are deployed, configured to use the Spark/Hadoop cluster. Jobs are thus distributed across the different machines of the cluster.

Technical architecture

Hardware requirements

The configuration must be defined according to the intended use of the software package. Indeed, if the processing pipelines require a lot of computation, the number of CPUs must be adapted accordingly. If data volumes are large, memory and disk space will need to be adapted.

Configuration type Memory CPU Disk

Minimal

8 GB

4 cores

50 GB

Standard

16 GB

8 to 16 cores

200 GB

Intensive

32 GB

16 to 32 cores

500 GB

Very intensive

64 GB

32 to 64 cores

1 TB

Extended

64 GB and more

64 cores and more

1 TB and more

When deploying on several machines, they must be connected through a Gigabit Ethernet network, in order to guarantee optimal performance.

CPU core usage by the Spark component

When an execution request is sent to the Datachain application, it triggers one or more jobs on the Spark component, which then determines an execution plan to optimize processing, making the best use of the resources allocated to it. Submitted jobs are split into tasks, which can be executed in parallel. The processing unit of a task in Spark is the CPU core.

Thus, if a Spark context is allocated a maximum of 3 cores, it can run at most 3 tasks in parallel.

The number of cores allocated to the Spark context is therefore a way to improve application performance.

Dernière mise à jour le 2 novembre 2026 à 15:16