IoT platforms 101
I recently googled the term “IoT platform”, and my search produced over 1.2 million hits. A look at the first few pages was enough to give me the distinct impression that, nowadays, every solution that’s in some way related to the IoT is labeled an “IoT platform”. Ultimately, I was left with three questions:
- What are the fundamental, distinguishable types of an IoT platform?
- What is the core or essence of an IoT platform?
- What are the key characteristics of a successful/sustainable IoT platform?
Please find my take on these questions below.
IoT platforms provide a comprehensive set of generic, i.e. application-independent, functionalities that can be leveraged to build IoT applications. Overall, the nature of IoT applications can be quite diverse. On the one hand, machine-to-machine (M2M) applications (type I) such as fleet management and asset tracking are often enterprise solutions that rely on centralized system architectures, i.e. they build on one key enterprise application. On the other hand, IoT applications such as those in the Smart Home domain can also be consumer-focused and decentralized (type II), without any central coordination authority. While the two types of application still vary, for example in terms of their underlying technologies, there is a strong convergence of both domains. Many real scenarios and business models span both “worlds”.
The core of IoT platforms
When I focused on enterprise IoT platforms (type I), I quickly realized that while each vendor has their own unique IoT platform visualization, they share a number of similarities. This isn’t really all that surprising if we consider what the IoT is really about: the collaboration of people and connected things. On an operational level, collaboration calls for efficient yet flexible processes. On a strategic and tactical level, it is important to empower humans to make the right decisions.
This is indeed reflected in most IoT platform visualizations, which depict key software components for
- connecting and managing people so that they can communicate, be informed, decide, and act upon the decisions and/or the information provided
- enabling the analysis, processing, and storage of information
- enabling the definition, execution, and monitoring of business processes across different systems
- connecting and managing things so that they can sense and act
While a lot of the available solutions still rely on on-premise deployments, on-demand ─ i.e. cloud ─ solutions are also promoted.
Based on the depicted components, IoT platforms can be further categorized into three different groups:
a) Thing-focused platforms provide the functionality required to develop and run connected embedded applications on things.
b) IoT-focused platforms provide core IoT functionality that complements existing non-IoT platform technology. Today, most companies already utilize non-IoT platform technologies such as general-purpose application servers or databases. However, these platforms lack IoT capabilities, so in order to provide end-to-end IoT scenarios, companies require a specific add-on functionality to integrate, coordinate, and manage things.
c) All-in-one platforms provide a comprehensive set of functionalities for building IoT applications on a single, integrated platform. Their aim is to deliver environments that enable applications to be composed quickly across people, systems, and things. They therefore go beyond core IoT technology by, for instance, also providing rapid front-end development capabilities.
Key characteristics of a sustainable IoT platform
What are the non-functional requirements or key characteristics that IoT platforms have to address? To answer this question, I spoke to various people with an IoT platform background – IoT developers, IoT software vendors, and IoT researchers – and consolidated the answers I was given. In most cases, low total cost of ownership, security, and reliability were the first characteristics to be mentioned. Certainly these are highly essential, but could equally be applied to any IT solution. At a deeper level, beyond the very generic requirements, I was able to identify three major categories of characteristics.
First of all, IoT platforms have to be prospective.
Software development has changed dramatically over recent decades, and will most likely be subject to further fundamental change in future. IoT platforms must reflect and anticipate this change. New standards are emerging within the IoT. These standards are introducing existing internet standards into the world of embedded and low-power devices, too. In addition, development paradigms have shifted. It is very interesting to see how programming languages have developed over the last decades. We’re now seeing concepts like parallel computing, asynchronous communication, late binding, and functional programming also becoming essential features of “traditional” object-oriented languages. What’s more, “one language from back end to front end” is no longer the dominant paradigm. Scripting languages have been successfully adopted, especially in front-end developments.
Second, IoT platforms have to be simple.
Writing a “Hello, world!” web application on the basis of a professional on-premise software platform has become a tedious undertaking. Even in this case dozens of files have to be written and configured, seriously denting developer productivity. A lean IoT software stack with modular extensions is necessary to enable the solution to grow with the skills and demands of the developer. Furthermore, integrated tool chains are required even in the embedded software domain. In the context of deployment, automation and transparency are crucial for managing diverse components, computing resources, and people across different IT environments. Cloud solutions ease the burden of operation. Finally, efficient monitoring, updates, and remote redeployment have to be enabled for embedded devices, too.
Third, IoT platforms have to be open.
Microsoft just recently open-sourced its .NET technology. Why? Again, times have changed, and building ecosystems around platforms has become absolutely essential. While that certainly doesn’t mean every platform has to be open source, ease of integration and extension are fundamental characteristics a platform has to address. Leveraging ecosystems is not only important in the context of developing new software but also in the context of support. Even small questions and problems can dramatically reduce developer performance. The times when people accepted having to call (and pay) for vendor support for answers to every tiny question are over. Open platforms like Stack Overflow are able to provide high-quality answers to programming questions in minutes. In addition, vendor-driven developer communities provide peer-to-peer support free of charge. Finally, IoT platforms also have to be open with regard to licensing and onboarding. High upfront payments are a significant burden that hinders adoption. Free-trial and community editions are offered as standard these days. Developers even expect cloud trials so that they can start right away without installing complex software solutions in their own on-premise environments.
While these are my own key criteria, what do you think: What is the core of an IoT platform? What are relevant success criteria for sustainable IoT solutions?