FleetOperationsHost¶
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-35 Fleet Inventory & SLOs |
| Platform / plane | Product Fleet Operations / Execution |
| Deployment granularity | standalone host |
| Status | target · ConnectSoft.Factory.Fleet |
| Built from | connectsoft-microservice · libraries: connectsoft-extensions-saas-abstractions, connectsoft-extensions-saas-asp-net-core, connectsoft-extensions-messaging-model, connectsoft-extensions-messaging-model-orleans, connectsoft-extensions-persistence-model-nhibernate, connectsoft-extensions-observability |
| Decisions | ADR-0012, ADR-0014, ADR-0015, ADR-0018 |
| Traceability | FR-09 FR-12 FUX-05 FUX-11 NFR-06 NFR-17 NFR-18 XL-10 XL-14 XL-16 |
Purpose and responsibilities¶
FleetOperationsHost composes FleetInventoryService (what products ConnectSoft operates, their instances, releases, editions, objectives and health), FleetRolloutService (moving many instances to a new release, template or library version in waves with guards) and FleetIncidentService (incidents, on-call, customer notifications, off-boarding). It is the platform decision D33 made concrete: the Factory does not stop at generating a product; it operates it, and the operating evidence is as traceable as the generating evidence.
Everything the host does is built on the other platforms' units: a rollout is promotions (BC-24) on environments (Control) provisioned by Runtime Cloud (BC-25), measured by objectives (BC-21), paged through connectors (BC-17), and off-boarded through governance orders (BC-42).
Context and boundaries¶
flowchart LR
S["FleetOperationsHost"]
StudioBff["StudioBff"] -->|sync-http| S
S -->|grpc| DeliveryHost["DeliveryHost"]
S -->|grpc| RuntimeCloudHost["RuntimeCloudHost"]
S -->|grpc| ObservabilityHost["ObservabilityHost"]
S -->|grpc| ControlPlaneApi["ControlPlaneApi"]
S -->|grpc| DataEventFoundations["DataEventFoundations"]
S -->|grpc| IntegrationHost["IntegrationHost"]
S -->|sync-http| ext_generated_products["ext-generated-products"]
S -->|sync-http| ext_identity_platform["ext-identity-platform"]
The host reads the product's own health through its product gateway (GW-07) and the HealthChecks aggregator; it never reaches into a product's data. Customer tenants of a product are not Factory tenants: the inventory keys instances by the product owner's Factory tenant and the customer tenant id inside the product.
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 |
|---|---|---|---|
| Fleet operations 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 |
/fleet/health |
FleetHealth | factory.health.read |
read | natural | GW-01 | Liveness, readiness and dependency health (fleet store, delivery, runtime cloud, observability, inbox lag). |
GET |
/fleet/meta/summary |
FleetSummary | factory.meta.read |
read | natural | GW-03 | Fleet-wide counts: operated products, instances by environment class, open incidents, active rollouts. |
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
REL[ReleaseService · ReleaseReady] --> RO[FleetRolloutService]
AR[AgentRegistryService · template release published] --> RO
RO -- promotions per wave --> PROMO[EnvironmentPromotionService]
PROMO -- completed · failed --> INV[FleetInventoryService]
RC[RuntimeEnvironmentService · observed state] --> INV
SLO[SloService · breaches] --> INV & RO
AL[AlertRuleService · alerts] --> INC[FleetIncidentService]
RO -- halted --> INC
INC -- export · deletion orders --> DE[RetentionResidencyService]
INV & RO & INC --> SQL["(fleet-sql)"]
Options and configuration¶
| Section | Key | Type | Default | Reloadable | Secret | Summary |
|---|---|---|---|---|---|---|
Fleet:Host |
EnabledModules |
string[] | [inventory, rollouts, incidents] |
no | no | Modules composed into this host. |
OrleansMessaging |
ServiceName |
string | fleet |
no | no | Messaging profile service name. |
Metrics and observability¶
| Metric | Instrument | Unit | Dimensions | Summary |
|---|---|---|---|---|
connectsoft.factory.fleet.host.inbox_lag |
gauge | s | module | Age of the oldest unprocessed event per module. |
Security¶
| Authentication | client-credentials |
| Scopes | factory.health.read (Health probes.); factory.meta.read (Fleet summary.) |
| Roles | Operator, PlatformAdmin, Observer |
| Tenant isolation | row-filter |
| Data classification | confidential |
| Max side-effect class | production |
| Secrets | fleet-sql (key-vault, rotate 90 d); messaging-transport (key-vault, rotate 90 d) |
Dependencies¶
Outbound
| Target | Kind | Purpose | Failure mode | Required |
|---|---|---|---|---|
| DeliveryHost | grpc | Releases and promotions per instance. | fail-fast | yes |
| RuntimeCloudHost | grpc | Observed state and provisioning per environment. | fail-fast | yes |
| ObservabilityHost | grpc | Product objectives, alerts and evidence. | degrade | yes |
| ControlPlaneApi | grpc | Projects, environments, approvals for production rollouts, commercial subscriptions. | fail-fast | yes |
| DataEventFoundations | grpc | Export and deletion orders for off-boarding. | fail-fast | yes |
| IntegrationHost | grpc | Paging and customer notifications through connectors. | degrade | no |
| ext-generated-products | sync-http | Product health endpoints and admin APIs through GW-07. | degrade | yes |
| ext-identity-platform | sync-http | Workload identity. | fail-fast | yes |
Inbound
| Target | Kind | Purpose | Failure mode | Required |
|---|---|---|---|---|
| StudioBff | sync-http | Fleet, rollout, incident and off-boarding views. | — | yes |
Failure and recovery¶
| Scenario | Detection | Recovery | Data impact | RTO (min) |
|---|---|---|---|---|
| Fleet store lost | readiness | restore (RPO 15 min); inventory re-derived from delivery and runtime cloud; open incidents and rollouts resume from the restored state | none | 240 |
NFR targets¶
| Target | Class value (pilot-batch) | Override |
|---|---|---|
| latency_p95_ms | 0 | — |
| availability_pct | 99.5 | — |
| throughput_rps | 10 | — |
| rpo_minutes | 15 | — |
| rto_minutes | 240 | — |
| cost_class | medium | — |
Deployment¶
| Granularity | standalone host |
| Topologies | saas-default, hybrid |
| Runtime | aks; replicas 2–4 |
| Ports | https 8140, grpc 8142, silo 12140, gateway 31140 |
Current implementation¶
Nothing: ConnectSoft operates DerechHaLev by hand with Azure DevOps pipelines, Pulumi stacks and Azure Monitor; no inventory, rollout, incident or off-boarding service exists.
Later capabilities¶
Fleet-wide cost attribution per product and customer tenant; customer-facing status pages per product; marketplace-listed operated products with self-service onboarding.
Decisions and traceability¶
| Family | Ids |
|---|---|
| FR | FR-09, FR-12 |
| FUX | FUX-05, FUX-11 |
| NFR | NFR-06, NFR-17, NFR-18 |
| XL | XL-10, XL-14, XL-16 |