Documenting architecture: Wireshark, PlantUML and a REPL to glue them all (2017)
danlebrero.com
danlebrero.com
However, this makes me wonder about the premise of this tool.
Have systems gotten so messy and complicated that we build them without knowing they're actually doing, until after they're built?
In other words, UML diagrams (including sequence diagrams) were intended ways to clarify and reason about systems during design time. This project seems like it could be a reverse engineering tool, but it isn't presented that way.
Generally, I've seen very few projects that have architecture documentation which is kept up to date past the first release. So it's not an insane idea given the on the ground reality, but yes it does seem a bit like shutting the barn door after the horse is already out.
Oh, hey, you've just practically described one popular implicit formulation of Agile. :)
Detailed and coherent design documentation is rare in my experience, even at organizations that are staffed at a level including dedicated staff ostensibly for this purpose. I can think of precisely one place I've worked for that had a design process that produced documentation effective for specifying the project ahead of time and as a reference from then on out. A culture committed to this plus dedicated technical writers who regularly met with a team of a domain expert, tech lead, and UX/UI folks for the purpose of producing project documentation helped a lot.
Other organizations may have had individuals producing documentation but it was a lossy process, magnified when they moved on from the project.
Occasionally, the folks involved actually believe their doco does represent reality. They are invariably wrong, sometimes in small details, usually in large ones. Tools like this are an invaluable check on reality.
> Have systems gotten so messy and complicated that we build them without knowing they're actually doing, until after they're built?
Yes, in general, at least in my world (medium size to enterprise). Agile has made this in practice much much worse.
I wish I had known of these tools 10 years ago, when I had to spend hours in Visio...
If you have multiple levels of inputs and outputs, you might define a set of relationships together that are all related to a single output. In this case shared inputs are not trivially realizable in the text.
E.g.
@startuml
database DB1
database DB2
... lots of other artifacts ...
artifact ArtifactN
DB1 --> Artifact1
... lots of other input to Artifact1 ...
... other relationships grouped based on output - more than a screenful - only some of which have DB1 as input ...
DB1 --> ArtifactN
@enduml
In the above, it might not be clear how often DB1 is an input to an artifact. Whereas the diagram will show the size of the tree pretty clearly.It is unlikely that such a diagram would be very illustrative to its author, but the visual representation may be a much better communication tool to others who are not as intimately familiar with the system in question.
A little off topic, but even though I wrote a UML book a long while ago, I have more or less stopped using hand written UML except for sequence diagrams. Any class diagrams I put in documentation are auto-generated from source code.
Nice work I look forward to delving deeper
I think most LBs terminate TCP and then create a new connection to the backend.
Edit: Not affiliated
You'd need to be running wireshark on a network interface that could see all that traffic, so yeah - sort of "at the server level" - in the sense that you'd need to be sitting on the server's network(s) to sniff that.