Experimental evaluation of architectural software performance design patterns in microservices
<|reference_start|>Experimental evaluation of architectural software performance design patterns in microservices: Microservice architectures and design patterns enhance the development of large-scale applications by promoting flexibility. Industrial practitioners perceive the importance of applying architectural patterns but they struggle to quantify their impact on system quality requirements. Our research aims to quantify the effect of design patterns on system performance metrics, e.g., service latency and resource utilization, even more so when the patterns operate in real-world environments subject to heterogeneous workloads. We built a cloud infrastructure to host a well-established benchmark system that represents our test bed, complemented by the implementation of three design patterns: Gateway Aggregation, Gateway Offloading, Pipe and Filters. Real performance measurements are collected and compared with model-based predictions that we derived as part of our previous research, thus further consolidating the actual impact of these patterns. Our results demonstrate that, despite the difficulty to parameterize our benchmark system, model-based predictions are in line with real experimentation, since the performance behaviors of patterns, e.g., bottleneck switches, are mostly preserved. In summary, this is the first work that experimentally demonstrates the performance behavior of microservices-based architectural patterns. Results highlight the complexity of evaluating the performance of design patterns and emphasize the need for complementing theoretical models with empirical data.<|reference_end|>
@article{meijer2024experimental,
    title={Experimental evaluation of architectural software performance design
  patterns in microservices},
    author={Willem Meijer, Catia Trubiani, Aldeida Aleti},
    journal={arXiv preprint arXiv:2409.03792},
    year={2024},
    doi={10.1016/j.jss.2024.112183},
    archivePrefix={arXiv},
    eprint={2409.03792},
    primaryClass={cs.SE}
}