Despite the Internet of Things being called the Fourth Industrial Revolution, there are concerns about the pace of this revolution given the overwhelming majority of Enterprise IoT project failures.
Enterprises that create and sell products either manufacture a physical product or manufacture software. Rarely does a company do both. Even more rare is the company that does both well.
IoT solutions are a combination of physical and software. Given that most companies are not competent in both hardware and software; it’s not that hard to see why IoT can be challenging.
Five Factors Slowing IoT Progress
CISCO suggests that there are five factors slowing IoT progress.
- Time to completion
- Budget overruns
- Quality of data
- Internal expertise
- IoT integration
In reality, time and budget issues are most likely symptoms of the other three. The remaining three boil down to the fact that excelling at both the physical and software is rarely possible. And perhaps, those that understand the physical aspect oversimplify the software aspect and vice versa.
In our discussions with clients, we have found that Internet of Things solutions are often over simplified as “Things”, the “Internet”, and “User Interfaces”. With more probing, the user interface is understood to be simply a web app. This over-simplification introduces significant risk when developing an enterprise-level Internet of Things solution.
People Gravitate to Physical Things
“Things” are hardware devices. They are physical and easy to demonstrate. There is a tremendous amount of creativity and engineering that goes into an IoT “Thing” especially if it must be small, operate on battery power for a long time, and the manufacturing cost must be in cents, not dollars. As a result, the device often becomes the main area of engineering focus, which may begin with an extensive “make or buy” analysis depending on the core competencies of the design team.
Wireless Networks are Big Business
The second area of focus is to choose a communication channel. Constraints include that of the device (power, size, cost) plus the distance a wireless signal must travel. The communication channel is required to transmit data, generally via the internet, to a user interface. People can then interact with the system of devices and the data the system produces.
The communication channel must be compatible with both the device and the IoT software. In most cases, the communication channel, consisting of a network and internet protocol, would be subscribed to rather than developed as proprietary solutions.
- Network: Mode of transportation such as LTE, 3G, LoRa, WiFi, BLE
- Internet Protocol: How data is packaged for transport over a network such as TCP, CoAP, and MQTT.
“Just Hire a Software Developer!”
The third area is the web (or mobile) application and user interface (a.k.a., software). I get a solicitation offering to develop web apps almost every week. There is no doubt that there are plenty of web developers and companies willing to take this on. But this is where things begin to fall apart. While IoT software may include a web app, the complete solution requires much more.
Of the three tiers (thing, Internet, and software), perhaps the biggest area of neglect, leading to IoT risk and failure, is the software tier due to the lack of experience software developers have with software that must exchange data with “Things” and people.
A common misconception is to think that if you have developers that create awesome web applications, these developers should be able to create a scalable IoT software solution.
IoT Software is Complex
Herein lies the rub: a Thing is a small computer with a lightweight software/operating system with minimal compute capacity. These small computers will exchange data with a large computer, often cloud-hosted. IoT, therefore, becomes an integration of hundreds, thousands, tens of thousands of software systems (Things) with a central system/database.
Taking this a step further, this central system is often called upon to react to data before it has time to write to its database.
If you have spent any time in the IT or the software world, you know that integrating software systems is complex, expensive, time-consuming, and requires specialized software developers. System integration is big business for IT service providers. Why would anyone think that the integration work required for an IoT solution would be any different?
Exploring the Complexity of IoT Software
IoT software, sometimes referred to as an IoT Platform, consists of a connectivity layer, a business logic layer, and an application layer. Your web developers are familiar with the application layer, most likely from the perspective that people alone will exchange data with this application at the scale of a typical web site. IoT is different. Let’s break this down.
Things and People Interact with Software Differently
When people enter data into a web application, they know that a “First Name” field is their name. A “Phone Number” field is their phone number. An IoT device, when sending data to a web application, does not know the meaning of data fields unless the device is programmed in advance. In some cases, there is no option to program the device in advance, the application must take what it gets and interpret correctly.
When receiving data, web applications interfacing with people are designed to support the demands of people interfacing with the application. A typical website might get a thousand visitors per month. An IoT application might receive a thousand visits per minute or even per second.
The rate at which people can transmit data to a web application is controlled by the rate at which people can type and click on the interface. However, the rate at which Things can transmit data to a web application is unlimited.
Another factor that often goes unnoticed is the built-in verification that people have when they interact with a web application. If the application does not respond or functions erroneously, a person will generally notice and request assistance. A device, if programmed to send data on intervals or as a result of an event will simply send the data. Mechanisms must be built into the device and the software application to mitigate the risk associated with data failing to be received by the software application or the device. This is not typical in a web application.
The point here is that IoT systems can quickly become complex Big Data, system integration efforts that account for the risks associated with Machine-to-Machine communication. There are plenty of solutions for doing things at a small scale or without a guaranteed service. However, the cause for concern comes when you need to work at a large scale and require the service to be available all the time, no questions asked.
Is an IoT Platform the Answer?
The good news is that there are options available for companies that do not have big data/enterprise software development competencies. Options include IoT Platforms, of which there are hundreds to choose from. When evaluating a platform, make sure to understand how they accomplish device connectivity, scale, and redundancy to ensure that it aligns with your requirements. Also keep in mind that most platforms will require a team of developers to complete the application, which may include user interfaces, programmed logic, and business system integrations, and another team to monitor the entire solution while in production. Most software companies marketing IoT Platforms are looking for teams to develop on their platform versus providing an end-to-end solution.