  Microservices is an architectural style that structures an application as a
collection of loosely coupled services, making it easy for developers to build
and scale their applications. The microservices architecture approach differs
from the traditional monolithic style of treating software development as a
single entity. Microservice architecture is becoming more and more adapted.
However, microservice systems can be complex due to dependencies between the
microservices, resulting in unpredictable performance at a large scale.
Simulation is a cheap and fast way to investigate the performance of
microservices in more detail. This study aims to build a microservices
simulator for evaluating and comparing microservices based applications. The
microservices reference architecture is designed. The architecture is used as
the basis for a simulator. The simulator implementation uses statistical models
to generate the workload. The compelling features added to the simulator
include concurrent execution of microservices, configurable request depth,
three load-balancing policies and four request execution order policies. This
paper contains two experiments to show the simulator usage. The first
experiment covers request execution order policies at the microservice
instance. The second experiment compares load balancing policies across
microservice instances.
