With the advent of IoT (Internet-of-Things), sensor-based applications are no longer confined to the factory floor, sensor-enabled systems are now all around us: in cars, appliances, smartphones, buildings, cities etc. From a back-end perspective, IoT systems are no longer based on closed, fit-for-purpose architectures as their M2M predecessors, but are able to interact with other applications and open to future innovations.
The power lies in the integrations
Most of us will acknowledge that great applications can be created by combining sensor data streams with other information available in either company internal IT systems or API information available on the Internet.
- Integration with IT line-of-business applications such as supply chain or support systems allows embedding IoT in business processes to create true business value.
- Integration with online services extends the idea of an API-programmable internet to a programmable world where automation of trivial tasks saves us time, money or creates new value.
A couple of examples to clarify what I mean:
- get notified in real-time with traffic information customized for your current location;
- get a coupon on your smartphone based on your location, time-of-day and your customer profile;
- adjust the building climate taking into account the outside temperature and weather forecast.
What these examples all have in common is that they combine information available in API-format on the internet with information coming from real devices in order to enrich the application and to contextualize it.
Achieving this is not without particular technical challenges, one of which I would like to focuis on today.
The programmable internet vs the programmable world
On the internet and broader IT world, most data retrieval models are query-based: whenever you need a piece of information, you query an API to retrieve that piece of information.
Here are some examples:
- to know whether a server is up, I can periodically ping it
- to know the current weather in my city, I can query an API service such as OpenWeathermapAPI
- to know whether there are still spare parts of a particular machine component, I can query the API of an inventory system
The Internet of Things on the other hand, is the world where sensor data is produced, and contrary to the model above, rather than waiting for you to fetch the data, this sensor data gets pushed to you. MQTT, the popular IoT messaging protocol, is based on a publish-subscribe mechanism where you subscribe to events or data streams from a particular source. Critical in IoT is the ability to process data in real-time as it comes in, i.e. the ability to act on data in motion. With periodic polling, some scenarios will just break down: if I arrive at the office (an event based on my location), I want the lights switched on right away, not with a 15 minute delay... I guess you get what I mean.
Much of the existing technology is either optimized to work query-based or to determine patterns or correlate event streams. In other words, it's optimized for solving a subset of the problem space. So here's our vision: in order to bring IT and IoT closer together, we need technology that can effortlessly blend event-based and query based data in real-time (instead of one or the other), hiding underlying technical complexity from users and extending the idea of a programmable internet to a real-time programmable world.