MAD — Microservices Architecture Dynamics
MAD is a domain specific language to simulate microservices architecture. MAD focuses on their dynamics, that is how various defensive mechanisms get along, including autoscaling rules, throttling policies, back-off protocols, timeout and the likes.
The simple possible architecture you can describe, say in the file 'sample.mad' is shown below. It captures a single services offering an operation 'Select' that takes 10 simulation steps to complete. A client, here called 'Browser', query this operation every 5 unit of steps.
service DB {
settings {
autoscaling {
period: 10
limits: [1, 20]
policy: rule-based(utilisation, 70, 80)
}
}
operation Select { think 10 }
}
client Browser {
every 5 { query DB/Select {timeout: 23} }
}
MAD will simulate their behaviour and output traces for both service and clients, including queue length, emission rate, utilisation and many other measures.
Install
$> pip install mad
Use
$> python3 -m mad sample.mad 1000
Doesn't work?
If you give it a try, please report any bugs, issues, feature request or missing documentation using the issue tracker. Should you need any further information, feel free to email me