Top
Best
New

Posted by x0z 2 days ago

OpenFLOW – Quickly make beautiful infrastructure diagrams local to your machine(github.com)
367 points | 81 commentspage 3
fnord77 1 day ago|
I'm inclined to agree with Edward Tufte - the 3D part doesn't add any information to the diagrams, so it is superfluous
StrangeOrange 1 day ago|
Interesting visuals change the way in which people engage with a diagram. You can think of it as an aspect of storytelling. Personally I find my eyes much more likely to be drawn to these isometric diagrams, compared to a 2D equivalence. The 3D aspect draws my eyes in and keeps them there. So what's being added doesn't need to be raw information that changes the facts of a diagram, it can be an aid to processing. There's a reason that visual design is a thing.
9dev 2 days ago||
This is a little tangential, but I've wondered for a while if there's a better way to visualise the composition of software systems.

Often, there's not only a single way to look at one: There's a user interaction flow through components, but those components also consist of hardware; the hardware might be virtual and composed of several, spread, sub-components, or even containers. You can go down this path pretty deep, and arrive at several different representations of the system that are either impossible to visualise at the same time, or make it incomprehensible.

Ideally, I would want to have a way to document different facets of the system individually, but linked to each other, and be able to change my perspective at anytime. This would allow to flip between UX, network traffic, firewall boundaries, program flow, logical RPC flow, and so on; all while being able to view connected components for a given component at anytime. For example, inspecting an application, then viewing its network ports, then its runtime container, the hypervisor the container runs on, the cloud provider that sits in, and so on.

My idea so far is a graph database that contains all components and the edges between them. The tool would have to be as extensible as possible, so using something like HCL to describe the graph would be great, with extensions for all kinds of components and edges. And finally a viewer to render visual representations of one or more composable layers to flick through, and export etc.

I never got around to working on it yet, but if anyone else had the same idea, I'd be open to collaborating :)

alixanderwang 2 days ago||
At least for the layering + using text aspect, D2 support this:

defining diagrams as multiple layers like so

  x -> y

  layers: {
    inside_x: {
      a -> b
    }
  }
A fleshed out example hosted on our web service: https://app.terrastruct.com/diagrams/664641071
9dev 2 days ago|||
Terrastruct looks really nice, and kind of like a 2D version of the 3D thing I'm thinking of; if you could attach key-value properties to nodes and vertices, and had different rendering modes that made use of any of these properties to render the item differently, that would probably be pretty close. For example, a layer that displays a physical network might only consider vertices with a `kind` attribute of "physical link"; that limits the layer to all nodes with a matching vertex between them, and the layer would also only display those attributes of the nodes relevant for the current view.

Does that make sense?

alixanderwang 2 days ago||
Yeah we do this with globs.

  a.class: backend
  b.class: frontend

  # hide everything
  **: suspend

  layers: {
     backend: {
       # show backend stuff
       **: unsuspend {
         &class: backend
       }
     }
  }

see more here: https://d2lang.com/blog/c4/
nullify88 2 days ago||||
Whoa as an infrastructure guy I had always dreamed of diagrams like this. And while I've used Miro and some OSS homebrew stuff, nothing was as polished as this. Well done.
aitchnyu 2 days ago|||
Wonder why Mermaid has more hype than this.
billyp-rva 2 days ago|||
There are quite a few tools that offer this model-based approach; you define your resources in a model, then use them in multiple perspectives to show different aspects like you describe. Some, like Ilograph[0] (my project), offer interactivity and zooming.

[0] https://www.ilograph.com

aqula 1 day ago|||
Something like the C4 model?

https://c4model.com/diagrams

x0z 2 days ago|||
Some very good points, I totally agree, I suppose as you said you get to a point in your abstraction where it either loses meaning or becomes too complex to view. I think it would be a fantastic thing to try! Go build it!
b0a04gl 2 days ago||
what if we can make these diagrams synchronized with reality. you need the diagram to pull from the same source of truth as your actual infrastructure - whether that's terraform state, kubernetes manifests, or service discovery. that way diagrams become less historical artifacts and more of living documentation
oddlama 1 day ago||
I've written something like this for NixOS a while back [1], which generates infrastructure diagrams directly from the source of truth (albeit not as pretty as isoflow). I'm sure this could be applied to other declarative tech stacks aswell!

[1]: https://github.com/oddlama/nix-topology

x0z 2 days ago|||
That's a great thought, I'd need to make some kind of translation between manifests and the json, getting knowledge of those relationships might be tricky? Service discovery is another route, would hate to get someones IT department angry for aggressive port scanning though lol
jamesponddotco 2 days ago||
Cloudcraft[1][2] can do that with your cloud provider, AWS or Azure. As a bonus, the diagrams also look quite cool.

[1]: https://www.cloudcraft.co/

[2]: I’m part of the Cloudcraft team at DataDog, so obviously, I’m biased.

x0z 2 days ago||
I absolutely love cloudcraft, full disclosure one of our team at work wanted to use it, but we're a public sector org(no money), so I threw this together for him
dr_kretyn 2 days ago|
"beautiful" here is definitely subjective. I only see a diagram and it looks like from PowerPoint presentation from the marketing team to the sales team.

Why JS world frequently uses "beautiful" or "modern" to describe its project? Often that hides something else.

swalsh 2 days ago|
You can just not post if your criticism is mean spirited.
dr_kretyn 1 day ago||
It wasn't mean spirited but now I can see it that indeed it came out as such. Apologies. And thanks for pointing it out!
MisterTea 1 day ago||
Nah, its okay. I too think beautiful is used too often in contexts where it feels exaggerated. Nature can be beautiful. People can be beautiful. But a blue and grey computer diagram? It certainly looks good to me but I would not use the word beautiful. Perhaps if it were exceptionally artistic using a unique aesthetic I would use that word. But that's just like, my opinion, man.
fennecbutt 1 day ago||
Beauty is in the eye of the beholder.