DataEventFoundations¶
Target
This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.
| Bounded context | BC-42 Data & Event Foundations |
| Platform / plane | Data & Event Platform / Data & Event |
| Deployment granularity | standalone host |
| Status | target · ConnectSoft.Factory.DataEvent |
| Built from | connectsoft-microservice · libraries: connectsoft-extensions-messaging-model, connectsoft-extensions-messaging-model-orleans, connectsoft-extensions-persistence-model-nhibernate, connectsoft-extensions-saas-abstractions, connectsoft-extensions-saas-asp-net-core, connectsoft-extensions-observability |
| Decisions | ADR-0006, ADR-0012, ADR-0013, ADR-0014, ADR-0019 |
| Traceability | FR-10 FR-12 FUX-11 NFR-05 NFR-14 NFR-16 XL-02 XL-09 |
Purpose and responsibilities¶
DataEventFoundations is the smallest host in the Factory and the one every other host asks first. It composes EnvelopeRegistryService (what every event looks like on the wire and who produces and consumes it), StoreProfileService (which stores exist, on which engine, owned by whom, in which region) and RetentionResidencyService (how long anything is kept where, and how a tenant's data is deleted or exported). It is "library-shaped" because most of its truth is also in the architecture model and in the ConnectSoft.Extensions.MessagingModel and persistence libraries that every service compiles against; the host makes that truth queryable and enforceable at runtime.
Context and boundaries¶
flowchart LR
S["DataEventFoundations"]
ControlPlaneApi["ControlPlaneApi"] -->|grpc| S
StudioBff["StudioBff"] -->|sync-http| S
S -->|sync-http| ext_identity_platform["ext-identity-platform"]
S -->|grpc| GovernanceHost["GovernanceHost"]
The host owns foundations-sql and nothing else; it never holds tenant content. Hosts cache the topic set and their store bindings at start-up, so an outage of this host degrades registration and governance orders, not publishing or persistence.
Domain model¶
None modelled
No aggregates are modelled for this item yet.
No entities modelled.
Entities and value objects¶
None modelled
No entities or value objects are modelled for this item yet.
Data model and storage¶
| Store | Role | Engine / profile | Tables |
|---|---|---|---|
| Data & Event foundations store | primary | azure-sql / nhibernate-sqlserver | — |
None modelled
No tables are modelled for this item yet.
APIs¶
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
GET |
/data-event/health |
DataEventHealth | factory.health.read |
read | natural | GW-01 | Liveness, readiness and dependency health (foundations store, transport, secret store). |
GET |
/data-event/meta/profiles |
DataEventProfiles | factory.meta.read |
read | natural | GW-03 | The messaging profile and store profiles this installation runs, with adapter versions (ADR-0012, ADR-0013). |
None modelled
No gRPC methods are modelled for this item yet.
Messages¶
None modelled
No events are modelled for this item yet.
None modelled
No commands are modelled for this item yet.
None modelled
No consumed events are modelled for this item yet.
Workers and jobs¶
None modelled
No workers are modelled for this item yet.
Actors and grains¶
None modelled
No grains are modelled for this item yet.
Sagas and long-running flows¶
None modelled
No sagas are modelled for this item yet.
flowchart LR
MODEL[architecture model · generated catalogs] -- ModelSync at release --> E[EnvelopeRegistryService]
PROV[provisioning · Runtime Cloud] -- bindings --> ST[StoreProfileService]
WA[Workspace admin · Platform admin] -- rules, orders --> R[RetentionResidencyService]
E & ST & R --> SQL["(foundations-sql)"]
H[every host] -- ResolveTopic · ResolveBinding · EvaluateResidency --> E & ST & R
R -- DeletionOrderIssued --> H
Options and configuration¶
| Section | Key | Type | Default | Reloadable | Secret | Summary |
|---|---|---|---|---|---|---|
DataEvent:Host |
EnabledModules |
string[] | [envelopes, stores, retention] |
no | no | Modules composed into this host. |
DataEvent:Messaging |
Profile |
string | orleans-outbox-inbox |
no | no | Messaging profile of the installation: orleans-outbox-inbox |
OrleansMessaging |
ServiceName |
string | data-event |
no | no | Messaging profile service name. |
Metrics and observability¶
| Metric | Instrument | Unit | Dimensions | Summary |
|---|---|---|---|---|
connectsoft.factory.data_event.host.registry_lookups |
counter | {lookup} | kind | Topic, schema and store lookups served. |
Security¶
| Authentication | client-credentials |
| Scopes | factory.health.read (Health probes.); factory.meta.read (Profile metadata.) |
| Roles | PlatformAdmin, Operator, Observer |
| Tenant isolation | row-filter |
| Data classification | internal |
| Max side-effect class | production |
| Secrets | foundations-sql (key-vault, rotate 90 d); messaging-transport (key-vault, rotate 90 d) |
Dependencies¶
Outbound
| Target | Kind | Purpose | Failure mode | Required |
|---|---|---|---|---|
| ext-identity-platform | sync-http | Workload identity. | fail-fast | yes |
| GovernanceHost | grpc | Classification labels for retention; audit evidence of deletion and export orders. | fail-fast | yes |
Inbound
| Target | Kind | Purpose | Failure mode | Required |
|---|---|---|---|---|
| ControlPlaneApi | grpc | Topic resolution and envelope validation at publish time; residency at tenant creation. | — | yes |
| StudioBff | sync-http | Registry, store and retention views. | — | yes |
Failure and recovery¶
| Scenario | Detection | Recovery | Data impact | RTO (min) |
|---|---|---|---|---|
| Registry unavailable | readiness | hosts keep publishing with their cached topic and schema set; new topics cannot be registered until the host is back | none | 60 |
| Foundations store lost | readiness | restore from backup (RPO 15 min); topic and store registrations are also in the architecture model and can be re-applied | none | 240 |
NFR targets¶
| Target | Class value (pilot-interactive) | Override |
|---|---|---|
| latency_p95_ms | 2000 | — |
| availability_pct | 99.5 | — |
| throughput_rps | 50 | — |
| rpo_minutes | 15 | — |
| rto_minutes | 240 | — |
| cost_class | low | — |
Deployment¶
| Granularity | standalone host |
| Topologies | saas-default, hybrid, on-prem, hybrid-compute |
| Runtime | aks; replicas 2–4 |
| Ports | https 8110, grpc 8112, silo 12110, gateway 31110 |
Current implementation¶
ConnectSoft.Extensions.MessagingModel (port) with the Orleans outbox/inbox, MassTransit and NServiceBus adapters, and the persistence libraries with FluentMigrator conventions exist; no registry, binding or retention service exists. The storage, event and aggregate-root catalogs of this site are the design-time equivalent.
Later capabilities¶
Per-tenant foundations instance for the on-prem profile; schema registry federation with a customer's own registry in hybrid.
Decisions and traceability¶
| Family | Ids |
|---|---|
| FR | FR-10, FR-12 |
| FUX | FUX-11 |
| NFR | NFR-05, NFR-14, NFR-16 |
| XL | XL-02, XL-09 |