In the first two installments of this blog series, we initially looked at the challenges introduced by cloud-centric architectures and how they motivated the rise of fog computing. Next, we defined what fog computing really means and the kind of problems it solves.
For completeness, we need to also introduce mist computing. Have you ever heard about it?
In my experience delivering talks and keynotes across the U.S., Europe and Asia, I’ve noticed that the number of people familiar with fog computing has steadily increased in the past 12 months. In fact, it is nearly reaching the majority tipping point. By contrast, when I ask an audience about mist computing, I seldom get more than 5 percent of hands up. If I was to ask how many of them understood the difference between fog and mist, that percentage would likely drop to zero.
So, what is mist computing?
As the name implies, mist is closer to the ground than fog, which in turn is closer to the ground than the cloud. But beside the meteorological analogies, what does this really mean? As you’ve probably guessed, especially if you’ve read the previous installments, this means that mist computing is about bringing elastic compute, storage, and communication directly onto the things. Thus, if we continue with the meteorological analogy, cloud infrastructure is high in the data center, fog infrastructure is between the things and the cloud, and mist infrastructure is simply the things.
The goals of mist computing essentially are two:
- Enabling resource harvesting by exploiting the computation, storage, and communication capabilities available on the things
- Allowing arbitrary computations to be provisioned, deployed, managed, and monitored on the things
As you can imagine, things in IoT applications are extremely heterogeneous in terms of platforms, resources, and connectivity. Thus, the main challenge for mist infrastructures is to be sufficiently lightweight to be able to establish a fabric that virtualizes compute, storage, and communication without consuming too many resources.
If we look from a distance at a generic IoT/IIoT system, we will realize that from an infrastructural perspective, we will have to deal with data centers that are in a public or private cloud, edge infrastructure, and the actual things. IoT/IIoT systems will need to exploit resources that span across these three tiers and provision, deploy, monitor, and manage applications and services across the tiers. On the other hand, if we look at the technological landscape, there is a complete fragmentation between the technologies used for cloud computing, fog computing, and the emerging mist computing. This fragmentation makes it difficult to establish a unified end-to-end perspective on the system, and it makes it practically impossible to treat the system as a uniform and virtualized compute, storage, and communication fabric.
At this point the question is, what can we do about it?
The first step toward addressing a problem is recognizing it. To this end, we have been raising the awareness about the challenges that this fragmentation may induce for the past several months. The second step is to establish a vision of how the problem can be solved so that the industry can internalize it and, eventually, address it.
Let’s focus for a moment on what would make sense for the user of an IoT/IIoT platform as opposed to the technical details of whether cloud, fog, or mist is the right answer.
From a high-level perspective, why should a designer of an IoT/IIoT application care whether he or she will be using cloud, fog, or mist computing paradigms? The only thing that really matters is that the platform provides a way to provision, manage, and monitor applications in such a way that applications can meet their functional and non-functional requirements. The functional and non-functional requirements drive the allocation of application on things, fog, or cloud layers – but anything else is just a detail, isn’t it?
Fluid computing is an architectural principle based on the abstraction of the topological details of the computational infrastructure. Fluid architectures provide an end-to-end fabric that can be used to seamlessly provision, deploy, manage and monitor applications, regardless of whether the underlying resource is provided by the cloud infrastructure, the fog infrastructure, or by things.
Fluid computing unifies under a single abstraction cloud, fog, and mist computing. In other words, cloud, fog, and mist computing can be seen as application of fluid computing in a specific, bounded context.
As the IoT/IIoT market evolves, I expect a convergence of cloud, fog, and mist computing platforms toward a fluid computing platform. This convergence will be necessary, if not essential, to accelerate the adoption of IoT.