Service Topology¶
Atlas serves immutable dataset releases through an HTTP runtime backed by published object state and local serving caches. Redis can accelerate selected responses. Prometheus, Grafana, and OpenTelemetry provide visibility. Fault injection components belong to governed test environments, not the production serving path.
Runtime and Evidence Paths¶
flowchart LR
Client[Client] --> Service[Atlas service]
Service --> Pod[Atlas runtime pod]
Pod --> Catalog[Published catalog]
Catalog --> Objects[MinIO or compatible artifact store]
Pod --> Disk[Local artifact and SQLite cache]
Pod -. optional response cache .-> Redis[Redis]
Pod --> Metrics[Prometheus scrape]
Pod --> Traces[OpenTelemetry collector]
Metrics --> Grafana[Grafana dashboards]
Traces --> TraceBackend[Configured trace backend]
Solid arrows are serving or evidence paths. The Redis path is optional and non-authoritative. Prometheus, Grafana, and the collector do not determine dataset truth, but losing them reduces the evidence available for promotion and incident decisions.
Request, Data, and Control Flows¶
flowchart TB
Publisher[Dataset publication] --> Objects[Immutable object store]
Publisher --> Catalog[Catalog pointer]
Operator[Deployment control] --> Runtime[Atlas runtime]
Catalog --> Runtime
Objects --> Runtime
Client[Client request] --> Runtime
Runtime --> Local[Verified local cache]
Runtime -. optional .-> Redis[Redis response cache]
Runtime --> Client
Runtime --> Evidence[Metrics, logs, and traces]
Evidence --> Operator
Publication mutates durable data and discovery state. Deployment control mutates runtime and configuration. Client requests consume the selected state; they do not publish it. Telemetry reports what happened but does not authorize a catalog or deployment change. Keeping these flows separate makes rollback scope explicit.
Join the Identities at the Serving Boundary¶
A request is attributable only when the runtime can connect its deployment identity to the selected dataset and the emitted evidence. Hostname and pod reachability are insufficient because several releases, profiles, or datasets may coexist.
flowchart LR
Deploy[Image, chart, values, and config] --> Runtime[Runtime instance]
Dataset[Release, species, assembly, manifest, and catalog generation] --> Runtime
Dependency[Store endpoint, credential scope, and cache namespace] --> Runtime
Runtime --> Response[Response contract and request ID]
Runtime --> Signal[Release-labeled logs, metrics, and traces]
Response --> Receipt[Serving identity receipt]
Signal --> Receipt
| Join | Failure if missing |
|---|---|
| runtime to deployment | behavior cannot be attributed to the promoted image and configuration |
| runtime to dataset | a correct-looking response may come from the wrong release tuple |
| runtime to store | retrieved bytes cannot be tied to the intended immutable object authority |
| runtime to cache | an entry may cross release, query-contract, or policy boundaries |
| runtime to telemetry | dashboards and traces cannot support a release- or dataset-specific decision |
Expose these identities through bounded diagnostic surfaces and evidence labels without leaking secrets or unbounded dataset cardinality. If an identity cannot be emitted safely as a metric label, retain it in a correlated deployment or request receipt instead of omitting the join.
Trust Boundaries¶
| Boundary | Required identity | Verification before use |
|---|---|---|
| client to runtime | route, principal class when enabled, request ID, and dataset selector | authentication, authorization, input, cost, and response limits |
| runtime to catalog | environment, catalog epoch or freshness, and dataset tuple | admissible selection and readiness policy |
| runtime to object store | manifest, object key, artifact hash, and schema version | integrity and compatibility before serving |
| runtime to cache | release, query, contract, and policy identity | entry binding before reuse |
| runtime to telemetry | release, profile, route class, request/trace correlation | schema, cardinality, redaction, export, and retention contracts |
Network reachability alone proves none of these bindings. Credentials should grant the narrowest operation needed at each boundary; serving runtimes do not need publication authority merely because both use the same store.
Dependency Classes¶
| Component | Role | Authority | Failure consequence |
|---|---|---|---|
| Atlas chart and runtime | query, metadata, health, and telemetry surface | runtime behavior for the selected release | service unavailable or degraded |
| catalog | discoverable dataset identities and artifact references | publication authority | new resolution can fail; cached-only behavior depends on configuration |
| MinIO or compatible store | published manifests and immutable artifacts | durable release bytes | uncached artifacts and refreshes fail |
| local cache | opened SQLite, sequence, index, and manifest material | acceleration derived from the store | misses require refetch; disk limits can shed work |
| Redis | optional exact-gene response cache | no release authority | falls back to normal query execution when policy permits |
| Prometheus | metric collection and rule evaluation | operational evidence | alert and capacity visibility degrades |
| Grafana | operator visualization | no independent authority | investigation loses canonical views |
| OpenTelemetry collector | trace export pipeline | operational evidence | distributed request linkage degrades |
| Toxiproxy | controlled dependency failure injection | test-only scenario control | deliberately changes latency or availability during rehearsal |
Profile Topologies¶
The committed stack manifest materializes three dependency shapes:
flowchart TB
subgraph Small[ci and local]
SmallChart[Atlas chart]
SmallNamespace[Operations namespace]
SmallStore[MinIO]
SmallRedis[Redis]
end
subgraph Full[kind]
FullChart[Atlas chart]
FullNamespace[Operations namespace]
FullStore[MinIO]
FullRedis[Redis]
FullProm[Prometheus]
FullGrafana[Grafana]
FullOtel[OpenTelemetry collector]
end
ops/stack/service-dependency-contract.json marks the chart, operations
namespace, MinIO, and Redis components as critical for these committed stack
profiles. The observability components are non-critical dependencies in the
service contract, but they are required to claim full operational evidence for
the kind profile.
Failure Amplification Paths¶
flowchart LR
CacheLoss[Cache unavailable] --> Misses[Store and disk misses rise]
Misses --> Saturation[Queueing and saturation]
Saturation --> Rejection[Admission and overload rejection]
CatalogLoss[Catalog unavailable] --> RefreshFail[New resolution fails]
RefreshFail --> CachedOnly[Bounded cached-only service, if permitted]
StoreLoss[Store unavailable] --> ArtifactMiss[Uncached artifact failure]
ArtifactMiss --> NotReady[Readiness or traffic removal]
TelemetryLoss[Telemetry unavailable] --> Blind[Decision confidence falls]
Blind --> Hold[Promotion held]
A dependency can fail without corrupting release truth and still create a second-order outage. Cache loss shifts demand to authoritative storage. Catalog loss blocks new discovery even when retained artifacts remain valid. Telemetry loss can leave requests successful while removing the evidence required to promote or safely tune capacity.
Contain the first changed boundary before increasing retries or replicas. Unbounded retries can multiply store pressure; scaling a blind workload can multiply bad requests; clearing every cache can turn a localized stale entry into a fleet-wide cold start.
Failure Isolation¶
- A Redis outage is not a store outage. Response-cache failures should fall back without changing dataset identity.
- A catalog outage is not artifact corruption. Already cached data may remain usable under cached-only policy, while ordinary readiness can require a live catalog.
- A telemetry outage is not proof of healthy serving. It reduces confidence and can block promotion even if query traffic still succeeds.
- A local disk-cache failure can exhaust or evict derived state without changing the immutable source artifact.
- Fault injection must be bounded by a named scenario and removed after the evidence run.
Topology Invariants¶
- Dataset truth remains in immutable published artifacts and their governed catalog identity, never in Redis, dashboards, or a local cache alone.
- A runtime release change does not silently change the selected dataset.
- A dataset promotion does not silently authorize a runtime or policy change.
- Loss of an evidence component is visible as reduced decision confidence, even when serving remains available.
- Recovery names the boundary restored and validates downstream consumers before traffic or promotion resumes.
Continue with Cache and Store Operations, Dependency Graph, and Observability.