Serverless applications are Hyperobjects… and it really matters
When building a complex system, it’s often really hard to hold all the elements of that system in your head. Then things get added to it, and added to it, and after a while, the application is too much for one person to understand except in the broad and abstract “it does this”.
The biggest serverless systems I have seen and the ones I’ve built seem to exhibit this behaviour more quickly. It’s not that there is more complexity in the overall system, but that the pieces are simply less coupled, less connected, and this is by design. A few functions connecting to more managed services than is normal in a non-serverless application leads to great value in areas such as resilience, and long term maintenance, but can be more complex to understand as a whole.
A couple of days ago, esteemed journalist Bill Thompson asked on Twitter what the name for a system so big and complex that we can’t grasp or imagine it is…
Turns out the word he was looking for was “hyperobject” and it’s a concept I’ve come across before, but not for a while. This piqued my interest though as it seemed a good word for how I look at serverless systems.
The idea of a hyperobject is as Bill says, an attempt to describe a system that is so complex that it cannot be fully understood. The original idea is explained on Timothy Morton’s wikipedia page and is probably as useful overview as any (although it has its critics, and understandably so).
I tend to look at the idea of a hyperobject as if it is something similar to the story of the blind men and an elephant. While they all can touch a part of it, they only see partially, and cannot understand the concept without collaboration, and even then how does one explain their understanding to the each of the others? It is not an easy thing to do to explain the feeling and touch of an ear to someone who is touching a tail or a tusk.
Hyperobjects and software
When we build applications and software, there is a great emphasis on trying to understand the wider system. Technologists try to ensure that if you pick up one piece of a system it should be…