π€ AI Summary
This study addresses energy efficiency optimization in microservice systems under constraints of performance and maintainability. Method: Leveraging the OpenBoutique benchmark deployed on Kubernetes/Docker, we conduct controlled experiments integrating JMeter-based load generation, Prometheus+Node Exporter for hardware-level energy monitoring, SonarQube for code quality assessment, and comprehensive performance benchmarking. Contribution/Results: We systematically quantify, for the first time, the three-dimensional trade-offs among energy consumption, performance, and maintainability across three architectural tactics and three design patterns under varying workloads. Our analysis reveals a general energy-saving trend under high load but also uncovers an inherent negative coupling between energy efficiency and software quality attributes. We propose an βenergy-efficiency-firstβ design paradigm. Empirical results show an average energy reduction of 5.6%; certain techniques concurrently improve performance (response time β72.5%, throughput β34.0%), though most incur a measurable decline in maintainability.
π Abstract
Context: Microservice-based systems have established themselves in the software industry. However, sustainability-related legislation and the growing costs of energy-hungry software increase the importance of energy efficiency for these systems. While some proposals for architectural tactics and patterns exist, their effectiveness as well as potential trade-offs on other quality attributes (QAs) remain unclear. Goal: We therefore aim to study the effectiveness of microservices tactics and patterns to reduce energy consumption, as well as potential trade-offs with performance and maintainability. Method: Using the open-source Online Boutique system, we conducted a controlled experiment with three tactics and three patterns, and analyzed the impact of each technique compared to a baseline. We also tested with three levels of simulated request loads (low, medium, high). Results: Request load moderated the effectiveness of reducing energy consumption. All techniques (tactics and patterns) reduced the energy consumption for at least one load level, up to 5.6%. For performance, the techniques could negatively impact response time by increasing it by up to 25.9%, while some also decreased it by up to 72.5%. Two techniques increased the throughput, by 1.9% and 34.0%. For maintainability, three techniques had a negative, one a positive, and two no impact. Conclusion: Some techniques reduced energy consumption while also improving performance. However, these techniques usually involved a trade-off in maintainability, e.g., via more code duplication and module coupling. Overall, all techniques significantly reduced energy consumption at higher loads, but most of them sacrificed one of the other QAs. This highlights that the real challenge is not simply reducing energy consumption of microservices, but to achieve energy efficiency.