Numbered cards for the text sections (1.1-1.3, 2, 4, 11, 12) on the overview, domain interfaces on the technical context, black-box descriptions for every building block, blocks mapped to nodes in the deployment view, crosscutting concepts on level 1, and a 1000-quality folder with the quality tree. The example test checks each section's card.
81 lines
2.5 KiB
Plaintext
81 lines
2.5 KiB
Plaintext
schema_version: 1
|
|
diagram_type: architecture
|
|
meta:
|
|
title: Building blocks, level 1
|
|
output: level-1.html
|
|
decisions: [timescaledb-for-telemetry]
|
|
components:
|
|
- ref: heat-pump
|
|
pos: [40, 160]
|
|
size: [130, 60]
|
|
- ref: installer
|
|
pos: [40, 360]
|
|
size: [130, 60]
|
|
- ref: mqtt-broker
|
|
pos: [250, 160]
|
|
size: [130, 60]
|
|
decisions: [mqtt-with-mutual-tls]
|
|
- ref: provisioning
|
|
pos: [250, 360]
|
|
size: [130, 60]
|
|
- ref: rules
|
|
pos: [460, 60]
|
|
size: [130, 60]
|
|
- ref: ingest
|
|
pos: [460, 160]
|
|
size: [130, 60]
|
|
- ref: device-registry
|
|
pos: [460, 360]
|
|
size: [130, 60]
|
|
- ref: tsdb
|
|
pos: [670, 160]
|
|
size: [130, 60]
|
|
- ref: device-api
|
|
pos: [670, 360]
|
|
size: [130, 60]
|
|
- ref: ops-dashboard
|
|
pos: [880, 160]
|
|
size: [130, 60]
|
|
- ref: customer-app
|
|
pos: [880, 360]
|
|
size: [130, 60]
|
|
- ref: push-service
|
|
pos: [1090, 60]
|
|
size: [130, 60]
|
|
- ref: ops-engineer
|
|
pos: [1090, 160]
|
|
size: [130, 60]
|
|
- ref: homeowner
|
|
pos: [1090, 360]
|
|
size: [130, 60]
|
|
boundaries:
|
|
- kind: region
|
|
label: IoT Telemetry
|
|
wraps: [mqtt-broker, provisioning, rules, ingest, device-registry, tsdb, device-api, ops-dashboard, customer-app]
|
|
connections:
|
|
- { from: heat-pump, to: mqtt-broker, label: publish, variant: emphasis, decisions: [mqtt-with-mutual-tls] }
|
|
- { from: mqtt-broker, to: ingest, label: subscribe, variant: emphasis }
|
|
- { from: ingest, to: tsdb, label: write, variant: emphasis }
|
|
- { from: ingest, to: rules, label: stream }
|
|
- { from: ingest, to: device-registry, label: lookup, labelAt: [525, 234] }
|
|
- { from: rules, to: push-service, label: alert }
|
|
- { from: installer, to: provisioning, label: register }
|
|
- { from: provisioning, to: mqtt-broker, label: certs, variant: security }
|
|
- { from: provisioning, to: device-registry, label: store }
|
|
- { from: device-api, to: tsdb, label: read }
|
|
- { from: device-api, to: device-registry, label: read }
|
|
- { from: tsdb, to: ops-dashboard, label: query }
|
|
- { from: customer-app, to: device-api, label: REST }
|
|
- { from: ops-engineer, to: ops-dashboard, label: views }
|
|
- { from: homeowner, to: customer-app, label: uses }
|
|
cards:
|
|
- dot: amber
|
|
title: 8 Crosscutting concepts
|
|
items:
|
|
- Device identity, one X.509 certificate per device
|
|
- Security, OIDC login for people, mTLS for devices
|
|
- Persistence, PostgreSQL dialect for all stores
|
|
- Idempotent writes, keyed by device id and timestamp
|
|
- Error handling, invalid readings to dead letters
|
|
- Observability, metrics and traces on every service
|