As Internet of Things applications become more widespread software complexity with the system will grow exponentially. The IoT is not a single monolithic system but a system of systems. To cope, we must be able to create better architectures to manage these complex systems of systems.
Hardware has progressed tremendously in the last 40 years by encapsulation and Miniaturization. Numerous technologies have been encapsulated into single chips and miniaturized. This has sped time to market, processing speed and a host of benefits that have allowed Moore’s Law to be proven true. Software however has not scaled this way relying on monolithic architectures built around centralized databases that define how the pieces talk and work together. As systems architects we are designing IoT systems in much the same way as we design our applications. Some central brain with memory receives signals, makes decisions and sends signals to actuators for implementation.
The Internet scaled because each node (browser) provided processing and could be completely separated. A node operates independently and is separated from all other nodes. This is separation of concerns ideal in most good software design. This has been very successful for the Internet but it appears we are forgetting this lesson with Azure IoT and Samsung’s new Artik among others. When we design our Internet of things architecture we need realize the same separation of concerns but on a larger scale by decoupling our processes so everyone can be independent of each other. Centralized (ie: cloud data analytics) databases and architectures are a high friction architecture that only makes the solutions more complex. Security, communications and scaling being the biggest challenges for this centralized approach.
Nature doesn’t have this centralized “brain”. The swamp does not tell a cattail how to be a cattail, there is no “ecosystem” brain telling the cattail and swamp to communicate between themselves (in this case nutrients, water etc.) Each “thing” in the swamp is its own agent. But we are fundamentally designing the Internet of Things in an old paradigm where there is some central controller orchestrating the dance of the things.
We have to get to a systems thinking view of entire technical ecosystem. There are global goals but most of the thinking is done locally. Today in the environmental movement we hear the slogan “Think Globally act Locally” but this doesn’t say everything. If we literally applied this to the complex technological system world, we would build software architecture’s that have some kind of cloud controller. But what the environmental movement is really saying is to get back to natures’ principals. There is a global imperative, which, considers the entire architecture in its design and goals but the intelligence and actions are collaborative at the lowest level.
That doesn’t say that we only have local control and action. There are layers of control/action. So a group of cattails share a resource and create equilibrium between them. The frog uses the cattails roots as a place to hide its eggs and provides fertilizer to the cattails roots in exchange. And many groups of things (Cattails, frogs, fish etc) form the basis for the swamp and the swamp is one control/action network in a greater ecosystem of the watershed. This brings us to the concept of fractal layers. With fractal layers of control we can break larger systems up into systems of systems (SoS) and those systems into smaller systems. With those new SoS’s designs come possibilities for unique interactions and the optimal control of systems. One of the core principals in Systems of Systems science is how emergent behavior develops out of these interactions. This being a core benefit of AI systems.
On the 29th of April, Harvard Business Review posted an article “The Internet of Things needs Design, not just Technology” where they argue for the need of better product design in the Internet of Things. Producing value for the customer rather than just being a technology looking for a customer. Creating business value in data is driving most of the current solutions in the IoT space. What data can I, as a business, get from having an IoT device in a home? Not what value can I give to the consumer?
I believe the problem is even more fundamental than this business issue, in that we need to start with a fundamental design question. What architecture best serves the interests of the consumer? One that sends all information to the cloud or one that uses systems thinking to develop a more nature focused Systems of Systems that all levels of the ecosystem can benefit from.