16 ms·
A nice talk at kubecon last year spoke about visualizing protocols and more complex multi-party exchanges. The suggestion it made was to look across module bou
by crdrost 4y ago
A nice talk at kubecon last year spoke about visualizing protocols and more complex multi-party exchanges.
The suggestion it made was to look across module boundaries or microservice boundaries, while making a particular request. So I go to update a Project with a new Pipeline, and I find out that the project service talks to the pipeline service which then has to create resources for which it talks to various resource services, all of that.
Since there aren't great digital tools for doing this, for visualizing these things, it was suggested in that talk that one of the more outside the box things you could do is to just take cardboard and modeling clay and strings and cut out some shapes to represent the different services, let each string be an RPC, and the actual diagram you would imagine being alive in time, like little beads flying across these strings, to indicate requests going out and then responses coming back... But the key was less to witness the time but more to get a timeless sense of connection, “oh, it turns out ResourceService is very hairy in these diagrams, it is kind of the central hub for this microservice cluster.” and for that it was helpful that the visualization had a certain physicality to it, it had weight and structure and engaged more senses than just the visual...
I've actually thought about just digitizing these ideas, even though it misses half the point LOL. I think that could be some wonderful documentation and diagrams in our onboarding for new folks.
- cimi_ 4y agoThere are tools that help with visualising requests between services, provided the information is augmented with some extra observability data. Most APM/distributed tracing products have ways of visualising distributed traces so we can see starting from a specific call which services were involved and how much time is spent in important operations (e.g. db, etc). Here's an example: https://www.datadoghq.com/product/apm/#end-to-end-tracing https://www.datadoghq.com/product/apm/#end-to-end-tracing Datadog builds this service map automatically for you from APM and RUM data: https://docs.datadoghq.com/tracing/visualization/services_map/ https://docs.datadoghq.com/tracing/visualization/services_ma... AFAIK you can consume the data via API so you can build other visualisations on top of it if you don't want to stick with the flame chart or service map. Since this is runtime information it won't be as comprehensive as static code analysis but it does show what's actually happening in the system. disclaimer: I work for Datadog edit: add link to service map