Design Patterns · Study deck

IoT Architecture Anti-Patterns: Diagnosis

This first route starts with system symptoms and uses layer responsibilities to expose recurring IoT architecture anti-patterns.

Blueprint Bina is your guide for this deck.

models
Iot Reference Models Patterns Diagnosis cover: Bina inspecting layered IoT reference-model blocks and a misrouted arrow with a diagnostic magnifier.
iotclass.org

After studying this chapter

Learning objectives

Use symptoms and measurements to locate the responsibility an architecture has missed.

  • Cloud dependence, schema coupling, and relay drain need different diagnoses.A missing edge rule, API boundary, or routing balance can create a different failure despite each design passing its early demonstration.
  • Filtering, storage, and stable APIs need explicit ownership.The cold-chain gateway needs local thresholds, while applications need resources and units that do not depend on vendor table names.
  • A proposed repair needs scale, outage, and device-change evidence.The redesign must survive WAN loss, a new sensor vendor, and traffic bursts before its architecture label earns confidence.
  • The observed failure must remain separate from the suspected cause.A field symptom needs its timing, user harm, and measured boundary recorded before a single change is tested along the same path.

I am investigating a deployment whose cloud bills rise, dashboards break after sensor changes, or nearby relays lose battery first. I need a measurement for the observed symptom before choosing which architectural responsibility to repair.

iotclass.org

Major section

Start With the Symptom on the Floor

Trace the failing path from the device to the person affected.

  • The field record needs the symptom, timing, observer, and user harm.A working demo cannot establish where a lost message failed or which responsibility should have detected and contained the problem.
  • Device-to-user handoffs need owners, checks, and safe failure behaviour.The fault may occupy a gap between otherwise working components rather than a single broken part.
  • One suspected cause needs one changed condition and a repeated test.The same path must provide a comparable result before the team treats its preferred explanation as the diagnosis.
  • Every repair needs an operating owner and a side-effect review.A custom fix can fit today but become difficult for the next team to run unless its risks and review conditions remain explicit.

I am with the field team after a lost message that nobody owns. I follow the device, gateway, data, and application handoffs, then change one suspected cause and repeat the path to compare the result.

iotclass.org

Major section

Use the Model to Find Missing Work

Each layer should own work that gives the next layer a dependable contract.

  • The device owns sensing, calibration, actuation, and power behaviour.Those Layer 1 responsibilities must remain visible before connectivity or application services can rely on the physical measurement and action.
  • Connectivity and edge processing have different message and decision responsibilities.Layer 2 carries messages, while Layer 3 needs local thresholds, filtering, aggregation, adaptation, and safe fallback when the cloud path fails.
  • Accumulation and abstraction provide history and stable resources.Layer 4 stores events and windows, while Layer 5 must expose APIs and units that shield applications from sensor-specific schemas.
  • Applications and human workflows need explicit contracts from lower layers.The reference model must locate missing work instead of letting one layer silently absorb buffering, normalisation, command state, and support escalation.

I am tracing a cold-chain reading from its device to the person using the dashboard. I assign local checks, message movement, history, and stable application meaning before choosing where edge, fog, or cloud services belong.

iotclass.org

Major section

Three shortcuts and their hidden dependencies

A shortcut becomes brittle when another layer silently inherits its missing work.

  • Forwarding every reading can tie local decisions to cloud availability.A cold-chain gateway without local threshold checks makes backhaul, cloud latency, and outage recovery part of the decision path.
  • Direct table queries can tie dashboards to storage names and units.Adding a sensor vendor can break applications that already know device-specific tables instead of a stable API or domain contract.
  • Concentrated forwarding can tie network lifetime to overloaded relays.Battery-powered nodes near a gateway may carry more traffic than they can sustain while the rest of the mesh remains lightly loaded.
  • Placement decisions must follow the identified responsibility mismatch.Edge, fog, cloud, mesh, and hybrid choices are useful when their owned boundaries address the measured workload rather than a preferred architecture slogan.

I am comparing a cloud-only gateway, a dashboard with direct table queries, and a mesh concentrated near one gateway. I name the dependency each shortcut creates before choosing a replacement pattern.

iotclass.org

Major section

Diagnose the Symptom Before Choosing the Pattern

Choose a diagnostic measurement before choosing a replacement architecture.

  • Rising cloud cost needs rate, payload-size, and aggregation measurements.The warehouse diagnosis must locate raw-volume pressure before the team adds another service or changes the topology.
  • Broken dashboards need schema, unit-conversion, and API-ownership evidence.A new BACnet or Modbus device can expose application code that depends directly on vendor tables or payloads.
  • Relay failures need forwarding, retry, duty-cycle, and current measurements.Nodes near a gateway can fail first because traffic concentration and retransmissions place a greater burden on their batteries.
  • The measurement must justify the smallest useful boundary change.The repair can be an edge rule, stable readings API, additional gateway, or tighter operating limit depending on where the pressure is observed.

I am reviewing a warehouse deployment with rising cloud costs. I measure the forwarded message rate and payload size first, using different checks if the actual symptom is a broken dashboard or exhausted relay.

iotclass.org

Major section

Outage, vendor-change, and burst tests

A repair earns confidence when it survives the conditions that exposed the fault.

  • A WAN-disconnect test must establish local decisions and buffering.The repair needs evidence that essential thresholds, fallback, and queued work remain available when remote services cannot be reached.
  • A new sensor vendor must preserve the application’s resource and unit contract.The API boundary needs to normalise values and quality flags so a device change does not require every dashboard to learn its schema.
  • Traffic bursts must stay within queue, storage, and latency limits.Broker depth, database writes, retention, and end-to-end delay need observations under the load that the early demonstration could hide.
  • New measurements can require a revised diagnosis.If the pressure moves to another layer, the model must change rather than forcing the original explanation onto the new result.

I disconnect the WAN after the proposed repair and watch which local decisions continue. I then add a sensor vendor and replay a traffic burst to see whether the repaired boundaries still make sense.

iotclass.org

Activity 1 · Match

✎ Match symptoms to missing work

I want you to name the missing responsibility before choosing a new component.

On paper, match high cloud traffic, broken vendor-dependent dashboards, relay battery drain, slow history queries, and lost offline control to edge filtering, API abstraction, balanced routing, accumulation, and local fallback. Add a measurement for each match.

4 minutes · Pen and paper · Answer: Activity 1

Your answer
iotclass.org

Major section

Why Anti-Patterns Survive Early Demos

Small demonstrations can hide dependencies that fail under deployment pressure.

  • A small sensor fleet can conceal the cost of raw cloud forwarding.The chapter’s ten-sensor demonstration does not reveal the bandwidth and outage pressure that appears when the fleet grows.
  • One dashboard can conceal direct dependence on vendor tables.A pilot with one storage schema may never exercise the new-device and unit changes that later break application queries.
  • A short mesh demonstration can finish before overloaded batteries fail.Gateway-adjacent relay burden needs duty-cycle and forwarding evidence beyond a brief indoor run with clean radio conditions.
  • Deployment evidence needs scale, outage, firmware diversity, and support tests.A repair must preserve clear contracts after ownership changes instead of relying on one engineer knowing every component’s internals.

I am comparing the successful small demo with its planned deployment. I add scale, outages, firmware diversity, and a support handoff to expose dependencies that a few sensors and one engineer could conceal.

iotclass.org

Major section

Measurements for the three diagnosis branches

Follow the diagnosis loop from the observed symptom through measurement to a bounded repair.

  • Raw volume and outage sensitivity need filtering and fallback evidence.Layer 3 measurements include message rate, rollup ratio, and backhaul loss before a local-processing repair can be justified.
  • Schema and unit coupling need API and domain-boundary evidence.Layer 5 investigation must count client schema dependencies and check mappings that protect application resources from device-specific changes.
  • Relay drain needs power, retry, and forwarding-load evidence.The Layer 1–2 review needs duty cycle, retransmissions, radio observations, and parent load before changing gateway or routing policy.
  • Each branch needs a measurement before the boundary moves.The diagnosis loop must retain the original symptom and then test scale, outage, schema change, and handoff after the smallest repair.

I am sorting observed symptoms before moving a boundary. I use raw volume and outage behaviour for the edge branch, schema and unit coupling for the API branch, and forwarding load for the relay branch.

iotclass.org

Major section

Making hidden coupling measurable

Make hidden dependencies measurable enough for another operator to investigate.

  • Vendor-table references in application files can expose storage coupling.The count makes the missing abstraction boundary inspectable before the team introduces a stable API or canonical event model.
  • Cloud-dependent actuator decisions can expose remote-availability coupling.A WAN-disconnect test must show which commands and local fail-safe actions still require a cloud round trip.
  • Forwarding counts and stressed queues can expose concentrated traffic pressure.Relay load, broker depth, end-to-end latency, write rate, and gateway retention help locate the responsibility that needs a bounded repair.
  • The record needs the symptom, measured boundary, owner, and retest trigger.Another operator must be able to revisit the change when scale or an outage exposes a new failure condition.

I am opening the deployment review after a new sensor breaks a dashboard. I count the clients that know vendor table names and keep that measured dependency beside the change owner and retest condition.

iotclass.org

Major section

Common Architecture Anti-Patterns and Solutions

Compare the pattern and anti-pattern columns, then inspect latency and scalability for the shortcut’s cost.

  • The pattern side has explicit processing and abstraction responsibilities.The design can place filtering, stored history, stable APIs, applications, and user workflows where their contracts can be inspected.
  • The anti-pattern side hides work behind apparently simple shortcuts.Cloud-only forwarding, direct database queries, and overloaded gateways can pass a pilot while retaining unowned operating dependencies.
  • Latency and scalability rows reveal costs hidden by small demonstrations.More devices or traffic can expose delay, coupling, and reliability limits that were absent from a quiet successful run.
  • A boundary change needs evidence of the dependency it removes.The comparison must lead to a tested repair without introducing a new hidden responsibility elsewhere in the system.
IoT architecture patterns versus anti-patterns, comparing correct layered designs with brittle shortcuts
IoT architecture patterns versus anti-patterns, comparing correct layered designs with brittle shortcuts
iotclass.org

Major section

Filtering, stable APIs, and balanced relays

Repair the missing responsibility while preserving evidence of the original failure.

  • The cloud-only example reduces 1000 msgs/sec to 50 through edge filtering.Local thresholds and periodic summaries can remove raw-volume pressure while preserving essential response during a cloud outage.
  • Local storage and APIs have different history and abstraction responsibilities.Accumulation preserves events, while the API must keep applications independent of sensor-specific schemas and unit conventions.
  • Distributed gateways can spread forwarding work across the mesh.The repair must reduce dependence on nearby battery-powered relays rather than leaving network lifetime tied to a few overloaded nodes.
  • The repaired design needs fallback, stable-unit, and forwarding-balance tests.Outages, new device vendors, bursts, and support handoff must demonstrate that the missing responsibilities now have useful owners.

I am applying the chapter’s cloud-only repair and checking the other two shortcut classes. I keep local history and stable application meaning visible while asking whether gateway placement spreads the relay work.

iotclass.org

Deck summary

Key takeaways

An architecture label is useful only when its responsibilities survive a real failure.

  • The user-visible symptom must guide measurement of the suspected missing work.Rising costs, broken dashboards, and gateway-adjacent battery failures need different observations before any architecture change is justified.
  • Cloud forwarding, direct queries, and relay hotspots have different dependencies.They can couple local decisions to backhaul, applications to storage schemas, or network lifetime to overloaded battery nodes.
  • The missing responsibility needs explicit placement and a small tested repair.An edge rule, API boundary, history store, or routing change must answer the measured pressure instead of merely adding boxes.
  • Launch review needs outage, scale, schema-change, and support-handoff evidence.The selected pattern must keep its contracts useful when the deployment leaves the conditions of its early demonstration.

I return to the field team’s symptom with one measured responsibility and a bounded repair. I keep the original failure evidence and the scale, outage, device-change, and handoff tests that show whether the repair holds.

iotclass.org

Retrieval practice

Recall check

Blueprint Bina says: answer from memory, then check your reasoning.

Q1A startup's IoT pilot with 50 sensors works perfectly. When they scale to 5,000 sensors, they experience: $15,000/month cloud bills, 3-second dashboard load times, and system crashes during peak hours. Which architectural anti-pattern is the ROOT CAUSE?

ALayer 4 database schema is poorly normalized for reporting
BLayer 6 dashboard widgets request too many charts
CLayer 3 edge filtering is missing from the ingest path
DLayer 7 operations handoff is not documented clearly
Show answer

Answer: C Without edge filtering, thousands of sensors push raw readings into the cloud.

iotclass.org

Print reference

Answers

Answer key.

  1. C · Without edge filtering, thousands of sensors push raw readings into the cloud.
iotclass.org

Print reference

Activity 1 answer

Model answer.

Match: High cloud traffic: edge filtering, measured by forwarded message rate. Broken dashboards: API abstraction, checked through schema dependencies. Relay drain: balanced routing, measured by relay load and retries. Slow queries: accumulation, checked through query time and indexing. Lost offline control: local fallback, checked by disconnecting the WAN.

iotclass.org