Foggy about The Fog?By Tom Carpenter On 05/10/2020
This brief article is intended to bring clarity to the concept of fog computing as it relates to IoT and other networking functions and services. For many, the fog is a mystical thing and I hope to clear up any confusion in this article.
We have the cloud and the edge. The cloud is stuff happening somewhere on a network (either on-premises or on the Internet). The edge is where (or close to where) your devices live (IoT and other devices) and it is roughly equivalent to on-the-edge-of-the-premises. Therefore, there is little difference between edge and private cloud (on-premises cloud) other than the fact that private cloud computing would nearly always take advantage of virtualization or dynamic microservices and edge computing may not.
For example, if you have a physical server processing data from your IoT devices and it is installed on your network, this could be categorized as edge computing. A common concept states that edge computing works on stream data or live data while cloud computing works on big data or stored data. But this differentiation quickly disappears in today's cloud environments where real-time data processing is supported. It is better to define edge computing as on-premises, near the network edge, real-time processing while cloud computing is defined as virtualization-based or microservice-based computing with full abstraction of physical hardware. This is a more meaningful differentiation and applicable to technologies in use today.
The primary motivator for edge computing of real-time data, as opposed to cloud computing of the same, is the reduced latency. If you have IoT actuators in your environment and decisions and actions need to be made and taken within a fraction of a second, sending the decision data to an Internet-based cloud to make the decision may take too much time. Instead, edge computing can be used to provide the decision process with lower round trip times.
That's the cloud and the edge, so what is the fog? Well, imagine that you install a private cloud at the edge of your network. What would you have? Technically, you would have a private cloud; however, you have also implemented a fog architecture. Why differentiate between a private cloud at the edge and a fog architecture? That's a great question and, to be honest with you, I was slow to grasp it. For the first several months of contemplating fog computing and where it fits into distributed application design (that's what it's all about in the end), I was in the "it's just a private cloud at the edge" camp. However, with further thought, and many hours of contemplation, I have decided that it is actually beneficial to think of the fog as something different from a private cloud at the edge. For me, the primary difference is that the fog is integrated with the public cloud (Internet-based cloud) in most implementations, whereas a strictly private cloud is not.
By the way, in all this time of contemplation, I spent a lot of time reading what others thought about the fog and it became obvious that many were, well, a bit foggy themselves about what it really is. Consider this definition from the Wikipedia article on Fog Computing:
Fog computing... is an architecture that uses edge devices to carry out a substantial amount of computation, storage and communication locally and routed over the Internet backbone.
What? So it's just a fancy word for edge... um... computation, or edge computing? Well, no. A key word in the definition differentiates it from edge computing: architecture. At first glance, this definition seems to say that fog computing is simple edge computing with a different name, but remember that edge computing is just that - computing. Fog computing happens in the fog and if there is a fog, there is more than just computing. Let's explore another definition to understand why this is true.
In a paper from 2011, fog computing was defined as:
a highly virtualized platform that provides compute, storage, and networking services between end devices and traditional Cloud Computing Data Centers, typically, but not exclusively located at the edge of network.
F. Bonomi, R. Milito, J. Zhu, and S. Addepalli. Fog Computing and Its Role in the Internet of Things. 2012.
Note the use of the term platform in this definition. We have the terms architecture and platform, which begin to reveal how fog is different from "edge" even though it may be implemented at the edge. Edge computing requires only that computing happen at the edge and demands no platform or architecture. A platform is a collection of technologies on which a solution is built. An architecture is the logical design of a system and the connections that exist between the components of a system. You could say that the platform is physical and the architecture is logical (though the lines here are often blurred as well). With this understanding, you can see that edge computing is a technology used by the fog architecture or fog platform. In the same way, edge storage may be used by the fog as well as edge networking services. Therefore, fog networking references the networking services of the fog architecture, fog computing references the edge computing of the fog architecture, and fog storage references the storage in the fog architecture. I won't even bother to address the previously cited 2012 definition's use of the phrase, "but not exclusively located at the edge of the network," except to say that fog architectures, at least originally, are intended to integrate with the cloud as well regardless of whether they are at the edge or elsewhere on your network. Therefore, you could say that a hybrid cloud (which uses an on-premises private cloud and an Internet-based cloud) implements a fog architecture on premises as the private cloud, given that the hybrid model integrates private and public cloud technologies. In fact, OpenStack, a well-known open source private cloud solution, has a special committee focused on ensuring it can be implemented effectively for fog solutions.
To further clarify the different between a fog architecture and a fog platform, consider that you can define a fog architecture without ever stipulating the actual devices, operating systems and specific services that will be used to build it. However, if you implement FogLAMP or OpenVolcano (two open source fog solutions), you are implementing a specific platform.
It is my belief that the phrase fog computing should be used literally for computing in the fog so that we can have clarity in our discussions. Fogging or "the fog" can be used to reference the architecture or platform that provides fog computing and possibly fog storage and fog networking. It's no wonder that many simply think fog computing is edge computing, because, in most cases, it is nothing more than that; however, the fog is something different. It is that solution, inclusive of many of the same components as the cloud, that resides most often at the network edge and interacts with both the public cloud and the local devices/systems.
In summary, if the fog has been foggy to you, don't feel bad. I hope this article has helped to clarify and bring some insight to the reality that fog is an architecture and platform implemented on-premises and using many cloud architecture concepts in order to bring processing and decision analytics closer to the devices that need them. Additionally, I have not attempted to be exhaustive in this article to allow you to read it more quickly; however, you should know that additional benefits of fog solutions include those beyond reduced latency, such as regulatory compliance, dependability (if the Internet goes down, the fog doesn't have to), and new management models... to name a few.Tagged with: fog computing, fog architecture, fog platform, fog IoT