It's surprisingly common. A team builds a custom messaging layer… on top of AWS — when AWS IoT Core already solves most of the problem.
Why this happens
Usually, it comes from one of three places:
- Engineers default to what they know (Kafka, MQTT brokers, etc.)
- Teams don't fully understand AWS IoT Core capabilities
- There's a fear of vendor lock-in
So instead of using native services, they build around them.
What AWS IoT Core already gives you
Out of the box, AWS IoT Core provides:
- Secure MQTT messaging
- Device authentication (cert-based)
- Scalable ingestion
- Rules engine for routing data
- Integration with AWS services
For many use cases, that's enough.
Where overengineering creeps in
You'll often see:
- Custom brokers duplicating IoT Core
- Extra queues and services adding latency
- Complex routing logic that's hard to maintain
- Security handled inconsistently across layers
The result? More moving parts. More risk.
When custom architecture does make sense
There are valid reasons:
- Multi-cloud requirements
- Highly specialised routing logic
- Extreme throughput edge cases
- Regulatory constraints
But these are exceptions — not the default.
The practical approach
Start simple:
- Use AWS IoT Core as the backbone
- Add complexity only when proven necessary
- Validate performance and cost before expanding
Final thought
Most AWS IoT platforms don't fail because they're too simple. They fail because they became too complicated too early.
Want to talk through your AWS IoT setup?
Head back to the main page for our approach, FAQs and how to book a scoping call.
Back to AWS IoT consulting