The platform pick is mostly about who runs operations
The "best IoT platform" question is less a feature comparison and more a question of operational ownership. Cloud-managed platforms transfer ops cost from the customer to the cloud vendor for a per-device fee. Self-hosted platforms keep ops in-house with the associated complexity. Choosing wrongly is expensive in either direction.Here's how we think about it.
AWS IoT Core (and the surrounding services)
Strengths: tight integration with the AWS data stack — Kinesis, Lambda, S3, Timestream. mTLS / X.509-based device auth is mature. Greengrass for edge compute is real.Trade-offs: cost can balloon as device counts grow if you don't watch the message volume tier. The AWS-native learning curve is real for OT teams.
Use when: customer is already on AWS, the wider data pipeline lives in AWS, device counts are moderate (thousands, not millions).
Azure IoT Hub / IoT Central
Strengths: strong integration with the Microsoft enterprise stack — Power BI, Defender for IoT, the Active Directory identity story. IoT Central is a higher-level managed offering for non-developers.Trade-offs: similar cost-at-scale considerations as AWS. Some features feel less mature than AWS equivalents (this varies year to year).
Use when: customer is a Microsoft-heavy enterprise. The integration with existing IT systems is the differentiator.
ThingsBoard (open-source, self-hosted)
Strengths: full feature set without per-device licensing. Customisable dashboards, rule engine, multi-tenancy. Active community. Postgres + Cassandra (or just Postgres at smaller scales) on commodity hardware.Trade-offs: you operate it. Backups, scaling, security patches, upgrades. The cost difference is real — ThingsBoard PE (the commercial edition) splits the difference but isn't free.
Use when: customer has competent IT, wants control over data residency, scale justifies the operational overhead.
Custom (Kafka + TimescaleDB + Grafana)
Strengths: every component is best-of-breed. The architecture matches whatever shape the project actually has.Trade-offs: every component is yours to operate. The "we'll just stitch together open source" plan has a long tail of integration work, and you're rebuilding what ThingsBoard does for free.
Use when: the project is genuinely outside the platform shape — heavy custom analytics, multi-tenant SaaS, very large device counts. Don't pick this for a typical industrial deployment.
The decision matrix
- Customer in AWS-heavy enterprise → AWS IoT
- Customer in Microsoft-heavy enterprise → Azure IoT
- Customer wants control + has IT capability + per-device licensing is a problem → ThingsBoard
- Customer is building a custom IoT-as-a-product business → custom (with eyes open about the work)
- Customer wants a "turnkey" platform with minimal IT involvement → managed cloud, regardless of which
The data layer is the real architecture decision
The platform is mostly about devices, dashboards, and rules. The data layer is what differentiates a working IoT system from a dashboard with sensors behind it.Things to plan for at platform-pick time:
- Hot store — last 30 days, full resolution, query in <1 s
- Warm store — months to a year, downsampled, query in seconds
- Cold store — multi-year, archived, accessible but not real-time
- Tag governance — when 50 customers send "temperature_1", what does that mean?
- Backfill — devices come online with buffered data; the platform must accept and order it
- Export — when the customer wants to leave, what's the export path?
The last one in particular: every cloud-platform contract should have a documented export path. We've seen platforms make data egress expensive and slow. Plan for it.
One pattern we'd warn about
Building a "platform-agnostic" abstraction over multiple platforms because "we might switch later". You won't switch, and the abstraction adds complexity now in exchange for flexibility you'll never use. Pick one, commit, plan the migration if it ever happens.The honest cost question
At small scale (hundreds of devices), managed cloud platforms are cheaper than self-hosted when you include ops time. At medium scale (tens of thousands of devices), they're roughly comparable. At large scale, self-hosted wins on raw cost but only if you have the IT competence to operate it.What's your platform? And — controversial — has anyone successfully replaced AWS IoT with self-hosted at scale?