I like C4. I'd previously discounted the "context" diagrams that inevitably show "User -{do their job}-> System-of-Record" as useless. Now I see the point.
I'm working through a new piece of system design for a complex system using C4 with our extended teams.
In drawing the top level this time around though I realized that b/c we have a semi-disconnected mobile app (aside from a web UI) we need to degrade certain behaviors gracefully if we don't have certain results yet, either b/c we're offline, or the backend is just slow for some reason.
That rippled down into the next layer of the system as a job queue, which then rippled into the UX, because we can now say definitively which parts of the system may take an unbounded amount of time to complete a request.
I'm sure we'd have gotten to this conclusion eventually but the analysis put the issue front and center.
All because I had to draw a picture with "Remote-User --{Mobile Stuff}--> Backend."
Also whichever tool you use is up to you. I just use draw.io for example with different tabs for each layer. As we elaborate on this at some point we'll break the lower layers out to their own files.
I'm working through a new piece of system design for a complex system using C4 with our extended teams.
In drawing the top level this time around though I realized that b/c we have a semi-disconnected mobile app (aside from a web UI) we need to degrade certain behaviors gracefully if we don't have certain results yet, either b/c we're offline, or the backend is just slow for some reason.
That rippled down into the next layer of the system as a job queue, which then rippled into the UX, because we can now say definitively which parts of the system may take an unbounded amount of time to complete a request.
I'm sure we'd have gotten to this conclusion eventually but the analysis put the issue front and center.
All because I had to draw a picture with "Remote-User --{Mobile Stuff}--> Backend."
Also whichever tool you use is up to you. I just use draw.io for example with different tabs for each layer. As we elaborate on this at some point we'll break the lower layers out to their own files.