Tenant architecture: the sign-in and data path
The tenant architecture with the sign-in component emphasized and the path from the web backend through the API to the data in the accent. The legend lists the component kinds, the line patterns and the emphasis that occur, in rows that wrap.
Tenant architecture: the sign-in and data path
examples/shop-focus.json{
"schemaVersion": 1,
"type": "architecture",
"title": "Tenant architecture: the sign-in and data path",
"source": "Illustrative reference architecture",
"width": 1200,
"height": 1144,
"architecture": {
"boundaries": [
{
"id": "rz",
"label": "Data center"
},
{
"id": "netz",
"label": "Application network",
"in": "rz"
},
{
"id": "daten",
"label": "Data zone",
"in": "netz"
}
],
"components": [
{
"id": "nutzer",
"label": "Teacher, parent",
"kind": "person"
},
{
"id": "browser",
"label": "Browser",
"kind": "frontend"
},
{
"id": "proxy",
"label": "Reverse proxy",
"sublabel": "TLS 1.3, WAF",
"kind": "security",
"in": "rz"
},
{
"id": "web",
"label": "Web / BFF",
"sublabel": "SvelteKit",
"in": "netz"
},
{
"id": "idp",
"label": "Sign-in",
"sublabel": "Keycloak, OIDC",
"kind": "security",
"in": "netz"
},
{
"id": "api",
"label": "Domain API",
"sublabel": "Rust",
"in": "netz"
},
{
"id": "db",
"label": "Domain data",
"sublabel": "Postgres, RLS per tenant",
"kind": "database",
"in": "daten"
},
{
"id": "audit",
"label": "Audit log",
"sublabel": "append only",
"kind": "database",
"in": "daten"
},
{
"id": "backup",
"label": "Backup",
"sublabel": "second site",
"kind": "storage"
},
{
"id": "alt",
"label": "School records",
"sublabel": "legacy system",
"kind": "external"
},
{
"id": "soc",
"label": "SIEM / SOC",
"kind": "external"
}
],
"connections": [
{
"from": "nutzer",
"to": "browser",
"label": "uses"
},
{
"from": "browser",
"to": "proxy",
"label": "calls",
"technology": "HTTPS"
},
{
"from": "proxy",
"to": "web",
"label": "forwards"
},
{
"from": "web",
"to": "idp",
"label": "signs in",
"technology": "OIDC"
},
{
"from": "web",
"to": "api",
"label": "queries",
"technology": "user context"
},
{
"from": "api",
"to": "db",
"label": "reads, writes",
"technology": "SQL/TLS"
},
{
"from": "api",
"to": "audit",
"label": "logs"
},
{
"from": "alt",
"to": "api",
"label": "master data",
"technology": "REST/JSON"
},
{
"from": "api",
"to": "soc",
"label": "events",
"technology": "Syslog",
"dash": "dashed"
},
{
"from": "db",
"to": "backup",
"label": "backs up",
"dash": "dashed"
}
],
"mainPath": [
"nutzer",
"browser",
"proxy",
"web",
"api",
"db"
],
"orientation": "portrait"
},
"mobile": {
"width": 468,
"height": 1192
},
"emphasis": {
"nodes": [
"idp"
],
"path": [
"web",
"api",
"db"
]
},
"legend": "auto"
}Focus
Source: Illustrative reference architecture
Show chart data
| Component | Kind | Boundary | Connects to | Emphasis |
|---|---|---|---|---|
| Teacher, parent | person | Browser (uses) | ||
| Browser | frontend | Reverse proxy (calls, via HTTPS) | ||
| School records | external system | Domain API (master data, via REST/JSON) | ||
| Reverse proxy | security | Data center | Web / BFF (forwards) | |
| Web / BFF | service | Data center › Application network | Sign-in (signs in, via OIDC), Domain API (queries, via user context) | on emphasized path |
| Sign-in | security | Data center › Application network | emphasized | |
| Domain API | service | Data center › Application network | Domain data (reads, writes, via SQL/TLS), Audit log (logs), SIEM / SOC (events, via Syslog) | on emphasized path |
| Domain data | database | Data center › Application network › Data zone | Backup (backs up) | on emphasized path |
| Audit log | database | Data center › Application network › Data zone | ||
| Backup | storage | |||
| SIEM / SOC | external system |