IoT application development doesn’t dissociate from a typical backend development process. But the approach is. Be careful about we’re talking for physical “things” and this makes a lot of sense.

There should be an “architecture” and it should cover the whole application; because of different layers like physical devices, mobile users, bulk analysis, automated reporting; which are not the subject for web applications. You can still develop the IoT application’s backend with same way which you know, after architecting the solution. Here are my notes about as an IoT Solutions Architect.


Protocols

First you need to be curious about IoT device’s hardware environment. Will you collect data from tiny, battery powered sensors or industrial gateways? These differences will determine your telemetry protocol between the backend and devices. If you’ll get time series sensor data often, go initially with MQTT. If you’re in a really harsh environment in terms of battery and system sources, take a look for COAP.

API’s

Every API start with CRUD but CRUD operations itself aren’t sufficient. There’ll be operation based endpoints like activation/deactivation devices or requesting tokens if we’re talking about IoT. Because, there are physical “devices”. Build these API’s as possible as close to OpenAPI specifications. For example, if you develop API definitions in swagger, you can import them almost every cloud provider.

Database

Not only think that how will you store that huge data, also think about how to request and retrieve them? If I want to learn about a device’s single parameter but for a year, you shouldn’t push raw data to front-end. Look for time-series databases if you don’t perform heavy analytics requests to data.

Processing Data

Is historical data is enough for you? What about real-time decisions? Or maybe, on a condition with a given behaviour of device data; you will need to access near-real-time data about that behaviour. Databases are not best place to do this kind of things.

Please tell and discuss your ideas and thoughts about backend development for IoT on comments section.