Fog Computing is also called Edge Computing because it pushes networking, storage, and computing to the edge of the cloud.
Business publications, like Forbes, and some tech media too, have written about Fog Computing. But they tend to describe that in broad terms without giving any examples. Here we both give a definition and then explain how that architecture applies to the different layers of the IoT computing model.
First of all, there are no fog computing devices, per se. The networking equipment already works that way. What is different is in a fog architecture IoT devices can make decisions themselves, under certain situations, without consulting the cloud.
The best way to explain Fog Computing is by way of an analogy.
It does for IoT what Hadoop did for big data, which is to bring computing power to the data instead of shipping the data to the central computer. Hadoop is what Google and Yahoo use to run their search engines. With Hadoop, each data node is both a computer and a storage device.
This distributed approach to computing has lots of added benefits including reducing latency, letting the system scale without limit, and letting the system keep running when the central computer or network goes down.
This idea works well with IoT systems. You push decision making down to the IoT devices when it is practical and logical to do so. That frees them from their dependence on the cloud. Yet the cloud still oversees the enterprise system.
One part of IoT already works that way: networks, particularly industrial and home automation systems.
Sensors and controllers do not always use an IP network. Instead they use protocols like z-Wave and ZigBee that do not need any kind of network gateway or routers. They are designed to run in relative isolation. They often work in peer-to-peer fashion or in what is called a mesh network. There is no central control. Instead each device hands off its signal to its neighbor. Only the device at the end of the chain needs a network connection.
That is how networking works at the IoT endpoint. What about computing and storage?
An IoT device gathers data and ships that for control or analytics purposes. But it is not always necessary for a device to transmit instructions and data when what needs to be done locally can be determined by the local device.
Consider the example of a machine that is overheating. The engine has a temperature gauge and some kind of computing card, like a $40 Intel Edison, plus a network card or transmitter. That card is nothing but a small computer running Linux, which is the same operating system the big computers in the cloud use. The code running there could call a webservice API over the network to ask the ERP system what to do. Or it make its own decision and shuts the machine off.
Making a decision at the computing end point is the definition of fog computing.
After the engine shuts off, the next steps is to send data about that up to the mother ship. This creates a maintenance work order in the ERP system. And data about the broken device feeds the predictive preventive maintenance model used across the enterprise. The point is following steps do not need to happen in real time. So there is no point in waiting for the cloud.
An architecture like this has all the benefits of the distributed Hadoop file system. The endpoints are more reliable as they do not need an online connection to the cloud in all cases. And it lets the system scale because the computing cards increase the overall computing capacity of the enterprise IoT system.
Cisco invented the term Fog Computing and says that storage is one aspect of that. But that is less obvious. For example, in a streaming application system, like machine streaming data, data is held in the memory of the application. It never shuts off, so there is nothing to save to disk.
Second, if data is needed for analytics then that has to be shipped to the big data system. You cannot run that at the edge of the network, because that storage is too small.
There is one part of the IoT system that you cannot push to the edge. That is the IoT cloud. That is distinct from the application cloud. The IoT cloud is the platform that provisions IoT devices to the network, reboots then when necessary, sends out operating system updates, and marks them offline as needed.
The application cloud is the central computing apparatus. You can think of that as being RackSpace, Amazon EC2, etc. That is where the analytics and operational software resides.
But in a fog environment, part of that business logic is embedded in the IoT device itself in its local computer. Or it could be in a hub somewhere near the device. For example, the hub in an electrical substation would be making decisions over devices under its control.
In sum, the Fog Computing architecture pushes business logic down to computing endpoints thus reducing their dependency on any central point and speeding up their operation. It also makes the system more reliable and increases computing power by putting more CPUs and memory to work.