Building an enterprise IoT solution, is far more challenging than building yet another business application. And since the IoT tsunami is still in its formative stage, it is no less challenging to put together a business case driven by a clear ROI.
For a start, an IoT solution is not just software, it is a combination of:
I like to compare an IoT solution to the human body. The IoT software application is the heart and brain of the system, pumping blood (data) and control commands through the communication channels (blood vessels and nerves). And the things, or devices, are our hands, legs, fingers, and toes.
So how do we build a great IoT solution from these ingredients? Here are a few key factors to consider during your selection process.
Device selection can be overwhelming. There are many options in the market to choose from. There are several key device characteristics that should drive your decision-making; for instance, your device should:
One of the challenges involved with device selection/validation is that you will need access to the IoT software application before you can complete an end-to-end proof of concept (POC).
Often called the transport layer, this complex part of the IoT solution requires a general understanding of the wireless communication options supported by your device. Example options include Bluetooth and Wi-Fi (NFC) to LAN and WAN, using cellular and satellite communication.
Key characteristics to consider when evaluating communication channels include:
IoT software application is sometimes referred to commercially as an IoT platform. There are many IoT platforms to choose from along with the option to build your own. It is important to understand the capabilities and limits when evaluating a platform (see What is a Software Platform). Some IoT platforms, for example, will only enable communication between devices that are certified for the platform. This limits your device selection. Other IoT platforms may limit capabilities to data ingestion with the expectation that you will consume data through an API. Bridgera’s built-to-spec IoT software is tailored to your needs, offering custom user interfaces, custom device integration, and more.
It is also important to understand the skills you need if you plan to customize the IoT platform to meet the requirements of your use case. Below is a description of a comprehensive IoT software application:
This is generally a network program that is connected to the internet. The listener should “always be on” and capable of substantial scaling. It should guarantee secure messaging between the device and the rest of the application software services. High availability requires complex distributed processing logic that ensures backup mechanisms are in place when servers fail or overload.
A good listener service as architecture is a highly configurable solution, so that it may be configured to talk to various devices quickly. It should also support multiple communication channels and protocols.
The data ingestion service must be compatible with the communication protocol used by the device. Apache NiFi coupled with a message broker like Kafka or RabbitMQ can work well as an effective IoT data ingestion engine.
This is where the business functions occur. Account setup, user registration, access control, payment processing, device interactions, data validation, error handling, and logging are all part of this layer. The design should facilitate multi-threading to support large user volumes.
This layer is responsible for communication with existing business applications. Just because you have a new IoT solution does not mean you can do away with the rest of your application portfolio! This is often underestimated and overlooked when deciding on a new IoT solution. A strong integration service allows two-way communication: Expose RESTful APIs to provide IoT data to external systems and consuming external APIs to bring relevant data into the IoT solution. External interfaces may be SOAP or RESTful.
The level of personalization and usability of the user interface is highly dependent on the IoT use case. IoT UI’s can range from very unique user experiences to dashboard graphs and widgets. User interfaces should provide easy access to deployed devices. All device commands are formatted based on user actions that are permitted through the UI. In general, a good UI will provide:
Considering the proliferation of IoT devices, it is highly recommended that your data storage mechanism is architected using big data technologies. NoSQL databases (MongoDB, Cloudant, DynamoDB, etc.) are excellent choices and allow clustering and unlimited horizontal scaling. They are also flexible because they are typically ‘schema-less’ and designed for high performance.
Finally, to realize the full potential of an IoT solution, it is important to drive business value through insights gained from the mass amount of data collected from your devices. There are several powerful proprietary and open source technologies that can be plugged into your IoT solution to derive business insights through analytics and visualization.
Ideally, analytics is custom-built within the IoT solution using technologies within the Hadoop stack. HortonWorks, Cloudera, and MapR are the most popular Hadoop distributions in the market that have leveraged Spark’s analytics capabilities. Splunk is a proprietary solution option for log analytics. While Tableau, Qlikview, and PowerBI are popular for visualization; however, D3 is a powerful, open source alternative.
Look for subsequent blog posts on how to optimize the operations of an IoT solution using a DevOps team to ensure your solution scales cost-effectively and reliably, to meet your growing business needs.
About the Author: Kamalesh Nayudu is CEO and co-founder of Bridgera LLC. He has three decades of global IT delivery experience working with companies of all sizes from Fortune 500s to startups. He is now leading the effort to establish Bridgera as a leader in Big Data and IoT services.