Towards understanding the energy efficiency of different software architecture styles in cloud-based environments : a case study comparing microservices and modular monolith based on two variants of an example system

Thumbnail Image

Date

2024

Journal Title

Journal ISSN

Volume Title

Publisher

Abstract

Context. Currently, overcoming the climate crisis is a major and essential task for us humans, to which the software industry can and must also make a contribution. This thesis deals with possibilities to reduce the energy consumption caused by software, which is one aspect of Green Software Engineering. Problem. Software can require different amounts of energy for the same functionality, depending on how it is implemented and operated. This has received relatively little attention, partly because of a lack of awareness and knowledge. There is a need for more transparency and simple methods to measure the energy efficiency of software applications. There is also a lack of concrete recommendations for practical action on howto design and implement energy-efficient software. Objective. The objective of this thesis is to develop recommendations for architectural decisions for cloud-based web applications with the aim of improving energy efficiency. For this purpose, the two backend architecture styles microservices and modular monolith are compared with each other. Method. First, two applications with the same functionality are provided, one in a microservices architecture and one as a modular monolith. Then, measurements are performed with the Green Metrics Tool in an isolated measurement environment and with Kepler in a Kubernetes cluster to draw conclusions about the energy efficiency of the two architectural styles. Result. The results of the measurements with the Green Metrics Tool show that the monolithic reference system performs significantly better in simple scenarios. This is mainly due to higher response times in the microservices system as a result of network communication and data processing. Microservices have advantages as soon as scaling is required. Unfortunately, no representative measurements could be carried out with Kepler within the time frame of this thesis, so no concrete statements can yet be made in this regard. Conclusion. The scalability requirement of a software system plays a critical role in determining optimal architectural decisions for maximum energy efficiency. The pursuit of unlimited scalability can potentially negatively impact performance and energy efficiency when it is not needed at all. However, in scenarios with dynamic and high loads that require efficient scalability, fine-grained architectures such as microservices offer advantages. The migration from a microservices architecture to a modular monolith has also shown that modularity can be realized in both architectural styles, but with less complexity in the monolithic system.


Kontext. Die Bewältigung der Klimakrise ist derzeit eine große und essentielle Aufgabe für uns Menschen, zu der auch die Softwareindustrie einen Beitrag leisten kann und muss. Diese Arbeit befasst sich mit Möglichkeiten, den durch Software verursachten Energieverbrauch zu reduzieren, was einen Aspekt von Green Software Engineering darstellt. Problemstellung. Software kann für dieselbe Funktionalität unterschiedlich viel Energie benötigen, je nachdem, wie sie implementiert und betrieben wird. Diesem Aspekt wurde bisher relativ wenig Aufmerksamkeit geschenkt, was zum Teil auf einen Mangel an Bewusstsein und Wissen zurückzuführen ist. Es besteht ein Bedarf an mehr Transparenz und einfachen Methoden zur Messung der Energieeffizienz von Softwareanwendungen. Außerdem fehlt es an konkreten Handlungsempfehlungen für die Praxis, wie energieeffiziente Software entworfen und umgesetzt werden kann. Zielsetzung. Ziel dieser Arbeit ist es, Empfehlungen für Architekturentscheidungen für Cloudbasierte Webanwendungen zu entwickeln, die eine Verbesserung der Energieeffizienz bewirken sollen. Zu diesem Zweck werden die beiden Backend-Architekturstile Microservices und modularer Monolith miteinander verglichen. Methode. Zunächst werden zwei Anwendungen mit der gleichen Funktionalität bereitgestellt, eine in einer Microservices-Architektur und eine als modularer Monolith. Anschließend werden Messungen mit dem Green Metrics Tool in einer isolierten Messumgebung und mit Kepler in einem Kubernetes-Cluster durchgeführt, um Rückschlüsse auf die Energieeffizienz der beiden Architekturstile zu ziehen. Ergebnis. Die Ergebnisse der Messungen mit dem Green Metrics Tool zeigen, dass das monolithische Referenzsystem in einfachen Szenarien deutlich besser abschneidet. Dies liegt vor allem an den höheren Antwortzeiten im Microservices-System, die durch die Netzwerkkommunikation und die Datenverarbeitung bedingt sind. Microservices sind im Vorteil, sobald eine Skalierung erforderlich ist. Leider konnten im Zeitrahmen dieser Arbeit keine repräsentativen Messungen mit Kepler durchgeführt werden, so dass diesbezüglich noch keine konkreten Aussagen getroffen werden können. Schlussfolgerung. Die Anforderung an die Skalierbarkeit eines Softwaresystems spielt eine entscheidende Rolle bei der Bestimmung optimaler Architekturentscheidungen für maximale Energieeffizienz. Das Streben nach unbegrenzter Skalierbarkeit kann sich potenziell negativ auf die Leistung und Energieeffizienz auswirken, wenn sie gar nicht benötigt wird. In Szenarien mit dynamischen und hohen Lasten, die eine effiziente Skalierbarkeit erfordern, bieten feingranulare Architekturen wie Microservices jedoch Vorteile. Die Migration von einer Microservices-Architektur zu einem modularen Monolithen hat zudem gezeigt, dass Modularität in beiden Architekturstilen realisiert werden kann, allerdings mit weniger Komplexität im monolithischen System.

Description

Keywords

Citation

Endorsement

Review

Supplemented By

Referenced By