this post was submitted on 21 Jun 2023
25 points (96.3% liked)

Experienced Devs

4009 readers
1 users here now

A community for discussion amongst professional software developers.

Posts should be relevant to those well into their careers.

For those looking to break into the industry, are hustling for their first job, or have just started their career and are looking for advice, check out:

founded 2 years ago
MODERATORS
 

We are considering using C4 for our architecture diagrams. Many diagramming tools (including Structurizr which was developed specifically for it) support C4. I wonder if there are others that use it and I would like to hear your experiences.

My initial assessment is as follows:

Pros

  • Diagram as code is a great way to keep things open to change.
  • It allows for better versioning
  • It enforces semantics into the diagrams. Instead of just thinking in terms of boxes and arrows, one need to dig deeper

Cons

  • It has a relative steep learning curve (one needs to study the DSL even though the end result is just boxes and arrows)
  • The tooling is not perfect. One needs to run a docker container to be able to navigate within the diagram (solution: there is also a SaaS offering)
  • Its view of architecture is somewhat limiting. It doesn't seem to be catered for augmenting the diagrams with other forms of diagrams (flowcharts, etc.) or text.
you are viewing a single comment's thread
view the rest of the comments
[–] GameOfHotPotato 3 points 2 years ago (2 children)

I've started using it a few months ago to visualize the current and proposed architecture of some subsystems. It takes a bit of time getting used to writing it but once you get the hang of it it's a nice way to improve discussions. I'm not using Structurizr but rather PlantUML (and a C4 lib) as that integrates rather nicely with our Jira wiki.

It's a nice tool in my toolbox, especially useful when talking about the bigger parts of the system. Nothing beats drawing some boxes and lines on the whiteboard for some quick conversations though.

[–] nibblebit 2 points 2 years ago

Yeah for us, mermaid has been great to through in a documentation git repo and keep some consistencies. But 90% of the utility of a diagraming system is easily being able to draw something on a whiteboard with an almost empty marker and be halfway understood

[–] canpolat 2 points 2 years ago

With Structurizr, you get a site where you can click around to see different levels of the system and different views of of containers, components, etc. Is that also possible with the PlantUML library? Or do you only use it to document one part of the system independent of others? I kind of like the possibility to have the whole system in a single place so that if I change the name of component, it's updated everywhere, but I don't like that it's its own thing separate from the wiki et al.