Thanks for posting this! It's a nice breakdown! I've been working on some ways of visualizing our container systems, networks, roles, dependencies, and you know ... the whole ball of wax. It's for a specific app, but I'm going macro level.

I found Karl Wiegers Software Requirements about eight years ago and have been evolving a high level model based off his visual model superset of UML and I've found it not quite to cover the complete roles of the container process. You've helped me bucket some fuzzy black boxes with your colored boxes!

Something I've been chewing on at the middle level of visualizing container roles is not just the role blend you specify here but now the overlap of networks, container technology, federation, and similarity from development, to release staging/production, to customer bare metal deploys, to legacy CI then staggering that over AWS, GKE, my personal OSX machine, my new Linux machine, the rest of my teams OSX machines.

We are a small company that is on the bleeding edge of cloud GPU stuff, we have a code base with some legacy warts that we are growing out of and channels that need to be distributed through them. The containerized GPU ecosystem is growing FAST! OSX is not really going to support nvidia-docker any time soon because of xhyve. The fuzziness of containers just being one thing adds to so much operational confusion! To do a lot of things sometimes the systems and roles you're using containers for can feel like "Who's on first?"

To be clear, I'm aware that I'm over thinking what follows, I think it's interesting and most of it is just built out of a sense of play. I'm still just playing with the concepts as they relate to cluster operations. No models I've used from before quite cover the relationships at a glance that we now have while using containers. Especially to people who are just getting into them it can feel majorly overwhelming because at first they just see them as VMs. I really like your banding for the contexts. I'm totally going to work this into the ops flow.

Anyway here's a whacky thing I'm dreaming up, I started by thinking about the system similarities in buckets that I made into hexes, I put color sections on the hexes for overlap. AWS, GKE, and OSX would be hex tokens. Route53, GoogleDNS, Consul/Dnsmasq would be lets say their yellow corners. Some system deployments rely on different parts so you can look at a key, but I can corner label a green, orange, purple set of hexes then just light up the matching overlap. So like I'm doing a pretty standard UML layout but I can throw some Star Trek style pips on the container and at a glance you can know what it touches. I just got out of the system wide sketch phase with this and I'm really digging it.

I've also been doing experiments[1] with procedural color[2] and shade so instead of picking items at random a base can be picked then branches from it are mathematical so you can infer context, state, or connection even if you have to shift pallet because you've drilled down into a subsystem.

A bit over a year ago I came up with this system relationship flow that I'm calling "The Lotus"[3]. It came from looking at the hexes and trying to put them in appropriately adjacent context then realizing the system "joins" sort of fan over each other and end up making a lotus thing pattern. This spawned from being asked to outline a VERY complex font matching system in a way that was "not technical" it started out as tongue in cheek and still is pretty weird, but inside these experiments I'm starting to see some patterns grow that I really like. Especially as it relates to containers.

This all feels like a massive rambly overshare, but I really liked how you put it together and I thought I would share some of the weird stuff I'm thinking about.

Thanks again!

[1] https://github.com/millerhooks/GraphTerm

[2] http://devmag.org.za/2012/07/29/how-to-choose-colours-proced...

[3] https://github.com/millerhooks/SystemVisualizationConcepts/b...