:::info Status β Slice 1 is LIVE; the heavy stack is still design-reference
Data Platform β Slice 1 is deployed and proven (2026-09-27): a light-first
implementation (dbt + CNPG Postgres + Metabase) delivering the policy_portfolio data product from the
live policy service. The heavier stack on the other pages (Kafka/Redpanda β ClickHouse β Superset β
OpenMetadata) remains planned / need-first-deferred β those pages are design references for the future
target, not what runs today. Build order: thin vertical slices per live source, not a big OLAP cluster up-front.
:::
Data Layer β Complete Enterprise Data Platform
The data layer transforms raw events from your platform into actionable business intelligence. It covers the full chain: event ingestion β storage β transformation β orchestration β visualization β governance.
Complete Data Chainβ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DATA SOURCES β
β Microservices β Databases (CDC) β Logs β k8s Metrics β
ββββββββββ¬βββββββββ΄βββββββββ¬βββββββββββ΄ββββ¬βββββ΄βββββββββ¬ββββββββββββββ
β β β β
βΌ βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INGESTION (Kafka / Redpanda) β
β Topics: events.orders events.users db.changes platform.logs β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββ΄βββββββββββββββββ
βΌ βΌ
βββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
β Stream Processing β β Batch Loading β
β (Kafka Streams / KSQL) β β (Airflow β ClickHouse) β
ββββββββββββββ¬βββββββββββββ βββββββββββββββ¬βββββββββββββ
β β
ββββββββββββββββ¬βββββββββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STORAGE (ClickHouse) β
β raw_events β orders β users β metrics β audit_logs β
ββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TRANSFORMATION (dbt) β
β staging β intermediate β marts (finance, product, ops) β
ββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββ΄βββββββββββββ
βΌ βΌ
βββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββ
β VISUALIZATION β β GOVERNANCE β
β Apache Superset β β OpenMetadata β
β Dashboards / Alerts β β Catalog / Lineage β
βββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββ
Stack Componentsβ
| Component | Role | Why This One |
|---|---|---|
| Kafka / Redpanda | Event streaming backbone + CDC | Industry standard; Redpanda is Kafka-compatible without JVM |
| ClickHouse | Columnar analytics warehouse | 100-1000x faster than Postgres for analytics; native Kubernetes support |
| dbt | SQL transformation layer | Version-controlled, tested SQL; model dependency DAGs |
| Apache Airflow | Pipeline orchestration | Already in Phase 16; reused for data pipeline scheduling |
| Apache Superset | Self-hosted BI & dashboards | 40+ chart types; OIDC login via Authentik |
| OpenMetadata | Data catalog, lineage, quality | Unified governance; auto-discovers ClickHouse, dbt, Airflow |
Data Namespace Layoutβ
kubectl get namespaces | grep data
# data-platform kafka, redpanda, schema-registry
# data-warehouse clickhouse
# data-transform dbt (k8s Job / Airflow tasks)
# data-viz superset
# data-catalog openmetadata
Kafka Topic Naming Conventionβ
<domain>.<entity>.<event-type>
Examples:
orders.order.created
orders.order.fulfilled
payments.payment.processed
users.user.registered
platform.k8s.pod-started
db.postgres.changes β CDC via Debezium
Data Flow: Order Processing Exampleβ
1. Order service publishes to Kafka topic: orders.order.created
2. ClickHouse Kafka engine ingests rows in real time
3. Airflow triggers dbt daily run at 06:00 UTC
4. dbt builds mart_orders (aggregated, enriched)
5. Superset dashboard "Orders KPIs" auto-refreshes
6. OpenMetadata shows lineage: kafka β clickhouse β dbt β superset
Infrastructure Requirementsβ
| Component | CPU | Memory | Storage | Notes |
|---|---|---|---|---|
| Redpanda (3 brokers) | 2 CPU each | 4 Gi each | 50 Gi SSD | Use Longhorn storage class |
| ClickHouse | 4 CPU | 8 Gi | 200 Gi | ReplicatedMergeTree for HA |
| dbt | 0.5 CPU | 512 Mi | β | Runs as k8s Job / Airflow task |
| Superset | 1 CPU | 2 Gi | 10 Gi | Postgres for metadata |
| OpenMetadata | 2 CPU | 4 Gi | 20 Gi | Elasticsearch + MySQL backend |
Done Whenβ
β Kafka topics receive events from at least one microservice
β ClickHouse ingesting from Kafka in real time
β dbt models transform raw β mart tables on schedule
β Superset dashboard shows live order/user metrics
β OpenMetadata catalogs all datasets with lineage