Microservices Visualized

Ben Halpern's Practical Dev tweeted an enchanting video loop suggesting that it represented microservice architecture or pretty much any software ever. tweet

But oh, if microservices were only this simple.

The artwork by the game company EyezMaze is clever to the point that I wonder how it was produced. post

The three second loop contains around fifty pictures with characters appearing, performing and then vanishing within that cycle. video

Some cycles are made to appear longer by having a group of characters take the place of an identical group which will have started their trek on the previous cycle.

The work must have included planning in space and time, rendering of individual characters, and then compositing into the individual frames. Any two of these would be an interesting programming challenge.

But real microservices are not nearly so well behaved.

They come from multiple teams working with partial knowledge and delivering a long stream of updates in response to the work of other teams.

They operate with variable load from both inside and outside the system, often with planned and unplanned feedback loops.

They run on hardware that is no longer deterministic even when running properly and is almost guaranteed to be intermittent or fully broken somewhere in the datacenter.

They become most interesting in saturation which means there is no remaining bandwidth to record their behavior for study by the programmers who create them.

The code itself for any given service is written to a standard that is not always the focus of language and library designs. See Coding for Performance

Curiously, even a carefully coded individual program can assume many of these woes when it sets out to simulate a distributed system. See Radio Network Simulator