Intelligent IoT: in the cloud or in the fog?

In a previous blog post titled ‘Contextualized experiences require more than sensor data’, I have argued that many IoT applications still feel very gadget-alike. An additional layer of intelligence, that takes into account context, can make IoT applications more accurate and more personalized.

In this blog post, I want to look at where that intelligence is best located: in the cloud, on end-user devices such as smartphones and gateways or somewhere in between. For the latter, Cisco coined the term fog computing. Fog computing locates intelligence in switches and routers at the network edge.

The first option is to have the intelligence in the cloud.

A cloud solution is device-agnostic. So whether your logic gets visualized on an Android Smartphone, an iPhone, a tablet or as a webapp (or any combination of the above), the cloud logic only needs to be developed once and can be used to target all of the above devices. By decoupling the user interface (view) from the logic (model and control), an architectural model arises where logic is built once together with a REST API. It can be changed and updated without necessarily impacting any end-user device software. This model reduces development time and increases business agility. You also benefit from all cloud advantages in terms of software maintenance, upgrades, roll-backs,etc.

Cloud logic scales well: cloud-capacity scales horizontally, while distributed HW often needs to be swapped when HW resources are no longer sufficient. In that sense, cloud logic is also more future-proof.

Cloud capacity is a shared resource and hence per-customer costs are substantially lower than for equivalent distributed HW capabilities. This can make a big difference in market segments that are CAPEX-sensitive. Solutions that rely primarily on cloud may be better suited towards a subscription model with smaller initial CAPEX investment for customers. Gateways are usually considered to be price-sensitive.

In case you start combining sensor information with information from the Internet such as social media data, generic API information or user profile information (which is by definition not bound to any particular device), the cloud is the natural place for these things to come together.

Similarly when integrating multiple IoT vertical solutions, e.g. the integration of an alarm system from vendor A with a home automation system of vendor B, that integration is likely to happen via APIs exposed in the back-end, rather than via direct integration between devices in the home. Using battery-powered devices to retrieve all this information from the cloud for local execution of the logic may drain battery resources.

Finally, cloud intelligence also allows to easily generate analytics regarding the usage of the logic itself. Which rules fired and why? How often?

Given that many good reasons for intelligence in the cloud, why would anyone still develop on-device or fog intelligence?

In some cases, bandwidth is expensive or the amount of data is so large that connectivity and bandwidth are the bottleneck, i.e. data does not get easily into the cloud. You can think of applications relying on camera video feeds or certain industrial applications, e.g. General Electric Co. has said that in a single flight, one of its jet engines generates half a terabyte of data.

In those cases, local (on-premise) processing or preprocessing, compression or buffering of data conserves bandwidth and associated costs. In a multi-tiered architecture, local preprocessing complements core logic that still resides in the cloud.

In other use cases, availability and latency are crucial aspects of a service, e.g. in process control in industry. For time-critical applications that require response times in the order of milliseconds, cloud-based logic can be replaced by fog or onsite logic.

In sum, there are compelling arguments to push intelligence as much as possible to the cloud but some verticals have boundary conditions that do not allow to do that. At waylay, we have developed a real-time, intelligent decision engine that is exposed as a REST service and allows to reuse logic across devices. The waylay technology is cloud-based. If required, it can also be deployed on on-site server infrastructure and its technology may also be suited to eventually get deployed in a fog model.