For decades, the established model for building distributed applications has been the client-server model. However, as we look into a future where Moore's Law may be plateauing, other models—like Edge-computing—can become much more efficient and attractive.
As hardware manufacturers explore alternate ways to increase performance and functionality of their hardware offerings, the cumulative capacity of systems grows exponentially with an intelligent edge. By moving away from centralized architectures, toward a more secure and compute-saturated architecture, we can better utilize all of the resources available to a system
The Conservative Edge
Edge-computing is the method of transferring computation and control away from centralized servers, i.e. the "core", towards devices that are closer in contact with the physical world.
The conservative preconception of "Edge devices" is simply that they are low-powered single-board computers (SBCs), like Raspberry Pi’s, and other gateway-like devices that sit in a closet, that users rarely interact with. They are configured to enable "dumb" high-data-ingestion architectures (i.e. read a bunch of data and send it to the cloud).
Redefining the Edge
This definition of the "Edge" excludes a whole range of devices that also sit in the gradient between virtual and physical.
These are devices that are not traditionally viewed as part of the "Edge:" phones, tablets, smart-TVs, smart-cars, routers, switches, access points, and a variety of home automation devices. Let's expand our idea of the "Edge" to include all of the devices that facilitate the transfer of information to and from the end-user. Let's name this group of edge-computing devices the Computational Last-Mile.
Mobile devices, like phones and tablets, are effectively super-computers that reside in most people's pockets. These devices contain a vast array of input and output options. However, in client-server architectures, they are often relegated to narrow client-like responsibilities.
Micro-controller units (MCUs), single-board computers (SBCs), and embedded devices are becoming increasingly more powerful and also have access to a wide-range of sensorization and actuation capabilities. However, they are seemingly complex to program and integrate into existing architectures.
Finally, web-browsers are ubiquitously used by billions of people every day. Every browser tab is like a dynamic little virtual-machine, complete with a multitude of APIs to interact with the user. And just like mobile devices, when designing a distributed system, web-browsers are often marginalized and under-utilized as client user interfaces.
Collectively, these devices, in conjunction with traditional gateway devices, represent the real Edge potential of a distributed application. Developing intelligent applications that effectively span this "Computational Last-Mile" represents a massive complexity sink in traditional development.
The Complexity in Distributing Applications to the Real-Edge
Today, devices are configured and programmed discretely, each with their own languages and deployment paradigms. This presents a huge inefficiency for architects and developers (particularly with complex systems at the enterprise level) when the device types can rarely communicate directly with each other.
Considering the progress and commoditization of high-powered, low-cost ubiquitous compute, we are on the brink of a massive change in how we develop, deploy and maintain distributed applications. But, we face critical challenges before the new paradigm is realized:
- We must define a vocabulary for designing autonomic applications that execute across a multitude of nodes but also respect end-user agency and privacy.
- We must efficiently bridge the gap between virtual and physical nodes for a truly cooperative and intelligent thin-edge.
- We must create new tooling and infrastructure to unlock the potential of this new compute landscape.
At niolabs, we are tackling these challenges. Our products, the nio Platform and Pubkeeper, simplify the configuration, computation, and communication of massively distributed systems. We want to empower application development for this new kind of distributed system using the "Computational Last-Mile” with a new type of thinking, nio-powered thinking.