Almost everyone sees the potential of the Internet of Things (IoT). For businesses to truly unlock that potential, they need to be able to ingest data at very high speeds, in a secure way, from a variety of sources.
But it’s not enough to just ingest and store that data. Companies must be able to glean business insight from the huge amount data that is being generated and, most importantly, to take action.
To top it off, all of this has to happen in real time.
Like any other disruptive change in the industry, the underlying technologies used to realize the IoT vision evolve at a rapid rate. A wide variety of both commercial and open-source technologies that claim to help with the IoT vision are emerging. So IoT service providers have to be agile and innovative in exploring new technologies and providing new capabilities to their customers. To keep up with the technological changes that are happening, IoT service providers should be able to try new technologies and should not be afraid of failing.
The old adage, “fail fast and fail often” holds true in the IoT space. But it’s not enough to simply fail fast. Providers must learn from those failures and enhance their products while not impacting the customer. For failing fast to be a good practice, the developer needs an environment that provides quick realization of an innovation to learn the effectiveness, adoption, and acceptance of the solution. This environment is made possible with the ability to leverage cloud services, a plethora of open-source packages, and dev/op tooling. A good litmus test for success in IoT is if someone you never trained can extend your IoT service in ways you never envisioned.
Failing fast may also have two dimensions – component level and solution level. Principles like exposing services/APIs to abstract away a particular component allows that component to be “reshaped” or even replaced based on the lessons learned. Sometimes, a fast-failing solution allows you to move to a completely new idea quickly instead of spending time re-iterating on a doomed solution. Staying with a solution that is failing is a good way to fail slowly, and an even a better way to go out of business.
Innovating rapidly with consistent incremental function (e.g., A/B testing) is the new way to deliver services in this new IoT world. Even though innovating rapidly will make failures common, the ability to provide consistent functionality is important to keep the customers unaffected by the changes. Even though it might look like an oxymoron, patterns and technologies available today make it easy to achieve this objective. Here are some simple principles that can help deliver a successful IoT service.
Design loosely coupled systems. Loosely coupled systems will let you enhance different components independently without having to enhance the entire system. This lets you innovate on the various components individually. Loosely coupled systems also allow you to have multiple components providing the same functionality when needed. Take the example of providing some simple analytics: If a new technology or service claims to provide superior functionality, you can easily add it to your system, test out the claims, and make it available to your customers without having to take the “old” functionality away.
Use the services. With the cloud, so many services today are available in a hosted fashion. Take NoSQL DB, for example. Most customers use the hosted service instead of setting up their own version. To innovate rapidly, this is an avenue that needs to be considered. Using services costs less money and less time. Once you are confident about the technology, you can decide whether to continue using a service or to stand up your own service.
Create an API layer. To ensure minimal interruption to the system, use APIs to front end all your components. This not only is a good practice but also helps when updating entire components to use a different or newer technology.
Expose functions incrementally. Every function that is being experimented does not need to show up to every customer. Functions should be exposed to customers incrementally. Use analytics on the usage behavior to determine whether it is a good function to open up to all your customers. Here again, for analytics, use the hosted functions instead of bringing up the entire analytics suite.
With the patterns and technologies available today, it is becoming a lot easier to experiment and innovate while reducing the impacts of failure. This should make it much more appealing to boldly go where no man has gone before.
Dinakaran Joseph is Lead Architect for IoT, IBM Cloud Services Division. Mac Devine is Vice President and CTO, IBM Cloud Services Division. Mac recently presented a webinar on Data Informed, The Perfect Storm of Data, Cloud, and the Internet of Things: How to Navigate the Challenges and Capitalize on the Opportunity. To view an on-demand replay of the webinar, click here.
Subscribe to Data Informed for the latest information and news on big data and analytics for the enterprise.