22

Common Architectural Mistakes

Source: Observability Platform source notes, section 22, “Common Architectural Mistakes”

The enterprise problem and today’s slice

Enterprise problem: Teams can buy and deploy every observability component yet still miss customer failures because dashboards lead instrumentation, logs substitute for metrics, high-cardinality IDs are indexed, alerts describe components, and the telemetry platform is not monitored.

Whole-course context: The incoming component, scale, cost, schema, and privacy contracts provide reviewable constraints; this day uses them to detect recurring design mistakes before production incidents expose them.

Today’s slice: We turn nine anti-patterns into operational questions, policy checks, and controlled failure exercises.

End-of-day evidence: An architecture review and seeded-incident run identify each applicable mistake, reject one unsafe design, and preserve one customer-outcome positive control.

Still unsolved: The ordered implementation program and final behavior-to-action mental model remain for the last two days.

Customer use cases

A catalogue of mistakes becomes trivia unless it changes a design or investigation outcome. These cases make prevention and recovery observable.

Use case IDActorCustomer jobSuccess outcomeDenial or recovery evidence
D22-UC-01Architecture reviewerReject a telemetry design that cannot answer its stated operational questionEvery approved dashboard or alert traces back to a customer outcome, required signal, owner, and tested queryA dashboard-first or universal-log proposal is denied with the missing evidence chain
D22-UC-02Observability on-callDetect and recover from the platform’s own telemetry failureBacklog, drops, query latency, compaction, rules, and notifications reveal the fault before customer evidence is exhaustedSeeded collector or backend failure alerts on outcome risk and shows an unaffected signal path

Actor-centred user stories

General warnings do not tell a reviewer what to accept, so the stories require explicit pass and fail observations.

Story IDUse case IDsUser storyObservable acceptance conditions
D22-US-01D22-UC-01As an architecture reviewer, I want every visualization derived from an operational question, so that attractive dashboards cannot substitute for evidenceReview traces question to signal, instrumentation, store, query, and decision; an orphan dashboard fails
D22-US-02D22-UC-02As the observability on-call, I want outcome-based meta-monitoring, so that platform degradation is detected before evidence is irrecoverableA seeded queue backlog triggers risk evidence, points to component telemetry, and leaves one healthy tenant query working

End-to-end product flows

Anti-pattern detection must happen during a real customer action, not after an abstract checklist. The flows end in a review denial or recovery record.

Flow IDUse case IDsPathTriggerNumbered stepsTerminal evidence
D22-FLOW-01D22-UC-01DeniedTeam requests approval for a new dashboard and alert1. Reviewer reads the operational question.<br>2. Contract traces required signal and owner.<br>3. Cardinality, semantics, and outcome alert checks run.<br>4. Missing user outcome rejects publication.<br>5. A known-good dashboard remains published.Proposal, question, missing link, policy revision, denied result, unaffected dashboard control, timestamp, and review ID
D22-FLOW-02D22-UC-02RecoveryFault injector pauses a collector export path1. Queue depth and accepted/rejected/dropped counters change.<br>2. Outcome-risk alert fires before buffer exhaustion.<br>3. On-call inspects component detail.<br>4. Export resumes and backlog drains.<br>5. Completeness and notification delivery are verified.Fault interval, queue maximum, drops, alert timing, notification ID, recovered query, unaffected tenant control, environment, timestamp, and drill ID

System design derived from the flows

If policy checks and meta-monitoring are bolted on after deployment, unsafe telemetry reaches production before anyone can reject it. The design puts review gates before publication and health probes around the live pipeline.

Use case IDEntry pointResponsible servicesAuthoritative storeFailure evidence
D22-UC-01Dashboard and rule publication reviewQuestion registry, schema/cardinality checker, rule tester, architecture reviewerVersioned observability-artifact registry owned by platform governanceOrphan question, log-derived counter without justification, trace ID label, missing owner, or component-only page
D22-UC-02Meta-monitoring alert and drill actionCollector self-metrics, backend health metrics, alert ruler, Alertmanager, drill controllerDrill and platform-health evidence store owned by observability reliabilityAccepted/rejected/drop anomaly, backlog exhaustion risk, query or compaction failure, rule failure, notification failure

Data model and ownership

Lessons vanish when review decisions and drills are not durable, causing the same mistake to recur. These control-plane records preserve rationale and observed behavior.

Generated-application database: Not created in this slice — architecture review and platform-health evidence belong to the observability control plane.

Record or entityStore and ownerPrimary keyForeign key or opaque referenceTenant keyMaterial constraintLifecycle and deletionUse case IDs
OperationalQuestionArtifact registry, service ownerquestion_idNone — root question with service referenceorganization_idCustomer outcome, owner, decision, required signal, and review interval are mandatoryDraft, approve, revise, retire with dependent artifacts, retain audit historyD22-UC-01, D22-UC-02
ObservabilityArtifactReviewGovernance store, platform reviewerreview_idquestion_id local FK and opaque dashboard or rule revisionorganization_idEvery applicable mistake has pass, fail, or reasoned exclusion; verdict is immutableAppend per revision, supersede on change, retain to artifact retirement plus audit windowD22-UC-01, D22-UC-02
MetaMonitoringDrillReliability evidence store, observability on-call ownerdrill_idOpaque platform revision, fault fixture, alert, and notification referencestenant_idExpected and observed results, positive control, environment, and timestamps are immutableRetain aggregate evidence, expire raw telemetry by policy, delete after reliability retentionD22-UC-01, D22-UC-02

Nine mistakes and their corrections

Similar symptoms can have different causes, so name the mistaken decision and the corrective mechanism rather than merely adding more telemetry.

MistakeConsequenceBetter design
Start with dashboardsTeams search for data to justify a projectionStart with an operational question, then derive signal, instrumentation, store, query, and projection
Treat logs as universalRepeated parsing is expensive and semantics driftUse counters and histograms for repeated numeric questions; logs explain discrete events
Treat traces as expensive logsParent-child causality, timing, and boundaries are lostPreserve context propagation, span relationships, status, and causal structure
Index trace IDs as labelsNear-unique values explode cardinalityKeep trace IDs as correlation metadata or structured fields, not indexed metric/log labels
Scale metrics before mastering semanticsDistributed storage amplifies bad names and seriesProve local metric meaning, labels, ownership, and rules before introducing Mimir
Instrument everything equallyCritical paths drown in low-value volumePrioritize customer, revenue, security, irreversible, expensive, and newly risky paths
Ignore platform healthTelemetry disappears without warningMonitor acceptance/rejection, queues, drops, object storage, queries, compaction, rules, notifications, and limits
Alert on componentsHarmless restarts page people while customer loss is missedAlert on user-visible failure, latency, capacity, backlog, data loss, and security outcomes; diagnose with components
Build distributed everything on day oneCapacity, upgrades, caching, recovery, security, and on-call complexity arrive before valuePurchase complexity only after simpler systems fail explicit requirements

Review and falsification protocol

Checklists can be gamed with plausible prose, so challenge each design with a seeded counterexample.

  1. Choose one important customer outcome and state the decision an operator must make.
  2. Walk backward from action through alert or dashboard, query, store, signal, and instrumentation.
  3. Calculate worst-case label cardinality and reject identifiers with unbounded values.
  4. Remove one component signal; confirm the outcome rule still describes customer risk while diagnostic detail narrows.
  5. Pause one export path and observe accepted, rejected, queued, dropped, query, rule, and notification behavior.
  6. Keep one unaffected tenant or signal path as a positive control.
  7. Falsify the design if a projection has no question, a page has no threatened outcome, or platform data can disappear without advance evidence.

Key takeaways

Most observability failures are sequencing and ownership failures rather than missing products.

  • Questions precede signals, and signals precede dashboards.
  • Each signal has a distinct job; correlation does not make them interchangeable.
  • Outcome alerts page people; component telemetry explains causes.
  • The observability platform needs its own loss, backlog, query, rule, and notification evidence.

Checklist

Use these checks to stop common mistakes before a production rollout.

  • [ ] Every dashboard and alert names an operational question and owner.
  • [ ] Metrics are not repeatedly reconstructed from logs without justification.
  • [ ] Trace IDs are correlation fields, not unbounded indexed labels.
  • [ ] Critical paths receive deliberate signal quality and retention.
  • [ ] Platform-health drills cover queues, drops, stores, queries, rules, and notifications.

Sources

Several anti-patterns depend on current product behavior, so they were checked against official primary documentation.