> For the complete documentation index, see [llms.txt](https://docs.dbnl.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dbnl.com/v0.26.x/platform/architecture.md).

# Architecture

The DBNL platform architecture consists of a set of [Services](#services) packaged as Docker images and a set of standard [Infrastructure](#infrastructure) components that are [deployed](/v0.26.x/platform/deployment.md) into your infrastructure (e.g. a VPC in AWS or GCP, or on-premise). The platform is scalable, modular, and self contained. It does not require an external connection to hosted Distributional services to operate.

<figure><img src="/files/rwk3njaFmxPOr08TZXza" alt=""><figcaption><p>DBNL platform architecture</p></figcaption></figure>

## Infrastructure

The DBNL platform requires the following infrastructure:

* A Kubernetes cluster to host the DBNL platform services.
* A PostgreSQL database to store metadata.
* An object store bucket to store raw data (e.g. S3 or GCS).
* A Redis database to serve as a messaging queue.
* A load balancer to route traffic to the API or UI service.
* (Optional) A Clickhouse database to store trace data.

## Services

The DBNL platform consists of three core services that run within the Kubernetes cluster:

* The API service (api-srv) serves the DBNL API and orchestrates work across the dbnl platform.
* The worker service (worker-srv) processes async jobs scheduled by the API service.
* The UI service (ui-srv) serves the DBNL UI assets.
