honzaap / Systemizer

A system design tool that allows you to simulate data flow of distributed systems.
https://honzaap.github.io/Systemizer/
GNU General Public License v3.0
1.38k stars 90 forks source link

Simulation functionality #43

Open Shmuma opened 3 years ago

Shmuma commented 3 years ago

It would be awesome to add ability to simulate the system, not just draw the diagram. It not neecesary need to be precise, just automate the “back of the envelope” calculations system architects normally do.

Ideally, with properties specified, it should make possible to identify bottlenecks in the system. Would be priceless utility in all kinds of “what-if” checks (if our DB performance drops 2 times, what will be the impact on the client requests?)

honzaap commented 3 years ago

Yes! This was actually my initial thought of the app, that it would look for and display these kinds of things, I just never knew how to do it (in the sense of what to show and what not to...) I'll try to make something like this, if you have any more ideas on how or what to make, let me know.

Shmuma commented 3 years ago

In principle, as a first step the following extensions could be implemented:

After the simulation, actual flow for every node will become available and should be displayed. It could be done in a vairous ways, like ratio between actual and theoretical flow or actual message rate.

In addition, some kind of report could be generated, showing the slowest components.

Of course, this approach will be very rough, not taking into account many aspects of real systems:

But even with simplest form, it still will be useful as first approximation of architecture analisys. And, of course, more complexities could be added later.

In addition, it might be cool to add "stress test" simulation, when producers' rate is increased monotonically to check which components are saturating first.