Edge Developer Design Patterns
The edge application market will explode for real when the base developer principles are defined and the supporting toolchains and SDKs/APIs enable the simple adoptions of the resulting abstractions. We taste the start of these in the same way as we tasted them in 2004 with web 2.0 development.
What is edge development in the mind of a software developer?
We can clearly state what it is not. From a developer perspective, edge is absolutely not a location. If a solution is designed specifically for known locations then that design is at the best a cloud design with a bit more distribution but probably more likely be a bespoke solution that will not scale. Edge development must be independent of deployment locations. Edge deployment and operation must be managed through business and performance policies.
Edge is distributed software development.
This is a known design pattern and existing tools and approaches support this. For example, the actor model is well known. This also aligns with another existing and growing trend, that of micro-services. Both are the disaggregation of monolithic software structures into reusable, distributable, independently scalable software units.
A good distributed software solution works with distribution n=1 the same way as distribution n=infinity
And this addresses the issue of designing edge software-based on known locations. It needs to be designed independently of physical locations and the resulting deployment policies define the needed locations to support such a solution. Since the beginning of time with software development, coders have coped with creating magic where magic should not be possible. Software is not mathematics, there are many solutions to the same problem. I remember playing chess against a computer with 16K of memory. I lost. Policies can define maximum efficiencies through distribution but enable less distribution until the economics of infrastructure deployment catch up. This is how mobile telephony rolled out. Nobody needed to upgrade a phone when a new base station was deployed, nobody knew. The same needs to be true for edge computing applications.
For a simple example of distributed edge design patterns play with the imagebus repo. This is a combination of a pipeline design with messaging bus and asynchronous distributed collaboration.
Some useful links.
What does an edge computing use case candidate look like? See here for some suggestions.
Join the Seamster community. See here
Watch the Seamster launch webinar. See here