With the IoT devices growing at an incredible rate, so too are the environments growing that grab the data from those IoT devices, put the data somewhere, and then do something with the data. For anyone, it’s very difficult to decide which environment to use, what would be the best technology to resolve the problem, how long that technology will be developed and enhanced before the next wave will make it obsolete and not used anymore.
These are real daunting problems for whoever is either building an IoT infrastructure or would like to use one available in the market. To address these issues, at IBM we are not just building an infrastructure, but instead, we are building a platform, within an open marketplace of services in which state-of-the art applications can be written.
The difference between an IoT Infrastructure and an IoT Platform is substantial. The former exposes its infrastructure components to the applications, the latter provides ways to abstract and normalize the technologies so that the application will not have to be refactored when the world behind it changes and improves.
Consider this example. Suppose you want to write an application to keep an eye on the soil temperature of your garden so that you will be able to impress your neighborhood with your ability to grow any kind of plants in it. What most people will probably do is to go online, find a nice connectable soil thermometer, buy a few, and when they arrive, connect them to their IoT Infrastructure of choice, and write an application according to the specifications of the soil thermometer they bought. Life is good, but what happens when they want to extend their thermometers’ net or one of the thermometers breaks, and they cannot find the same model/type? They will need to buy another model, probably with different specifications, and they will have to change their application. In this case, this may not be a problem and it can even be fun, but for bigger applications, more complex devices, bigger needs, this heterogeneity can become a nightmare.
The goal of an IoT Platform should be to allow the application to abstract from the vibrant and constantly changing IoT world and focus on the target solution it wants to address. This is the reason why the IBM Watson IoT Platform is focused to deliver such abstractions.
A Device Type is the digital representation of the physical device. It mirrors its characteristics and the messages it sends. Thanks to the IoT Platform, the physical device can offer an application interface that will normalize its functions. For example, it will send to the application always the same message for a given event, like a temperature change, no matter what device manufacturer/model/type triggered it. The adaptation between what’s physical and what’s logical will be something in charge of the IoT Platform, upon proper declaration. This approach will make the application much simpler to write and maintain over time.
The abstractions could go beyond this and extend themselves into the aggregation of these logical elements into abstracted ones. Following the line of thoughts given by our garden example, it would be nice to be able to abstract a bunch of thermometers into an agriculture field, so that, possibly, some available analytical models can be applied directly to that “thing”. The “thing” will have a interface itself, built upon the information coming from the constituent abstracted devices and will perfectly match the one the model requires.
I think you get my point. This is the difference between an IoT Infrastructure and an IoT Platform. The former processes flows of data, whereas the latter shapes and abstracts the environment to coherently transform flows of data into modeled information for the applications by using a declarative approach decoupled from the application itself.