Not logged in.

Contribution Details

Type Master's Thesis
Scope Discipline-based scholarship
Title Microservices-Based Feature Models: Using Heimdall for Correctness Checking and Configuration Validation
Organization Unit
Authors
  • Oliver Leumann
Supervisors
  • Harald Gall
  • Gerald Schermann
Language
  • English
Institution University of Zurich
Faculty Faculty of Business, Economics and Informatics
Date 2017
Abstract Text The microservices architectural style is quickly becoming the standard for designing continuously deployed software applications. The concept of small, independently deployable services complements well with today's possibilities that we have with cloud computing and modern DevOps practices and all of these trends allow for faster time-to-market cycles. Not only does this enable to get earlier feedback from customers, but it also facilitates faster detection of new runtime faults, performance regressions, or changes in business metrics. However, none of these trends are silver bullets and building, deploying, and maintaining such systems can become quite complex in environments with a high release frequency. Keeping track of all the currently existing microservices of an application, the possible multiple versions that exist for the services, and the dependency structures between them, can become hard to maintain manually. Service combinations can have compatibility issues due to services that explicitly require (or exclude) specific versions of a certain service and resolving defective service dependencies to ensure valid service configurations can quickly exceed manual maintenance capabilities. In this paper, we map software product line concepts to the microservices domain in order to introduce a formal model for microservices-based feature models. We present Heimdall as a prototypical Node.js based application that allows software and DevOps engineers to define microservices applications and their dependencies as feature models. Automated analysis techniques adopted from the software product line area enables correctness checking of complex microservices-based applications, the derivation and validation of service configurations, and the recommendation of fixes for invalid service configurations. All these methods are based on satisfiability techniques and a quantitative evaluation of the prototype shows that most of the methods can be performed with a promising performance, even for microservices-based feature models with hundreds of different services.
Zusammenfassung Der Microservices Architekturstil wird immer mehr zum Standard beim Entwerfen von kontinuerlich eingesetzten Software Anwendungen. Das Konzept kleiner, unabhängig voneinander veröffentlichbarer Services ergänzt sich hervorragend mit den heutigen Mittel die uns Dank Cloud Computing und modernen DevOps Praktiken zur Verfügung stehen und all diese Trends ermöglichen schnellere Produkteinführungszyklen. Damit können nicht nur früher Rückmeldungen von Kunden entgegengenommen werden, sondern auch neue Laufzeitfehler, Performanceeinbussen und Änderungen in Geschäftskennzahlen können schneller festgestellt werden. Keiner dieser Trends ist jedoch eine Wunderwaffe und das Erstellen, Einsetzen und Warten solcher Systeme kann schnell sehr komplex werden, vorallem in Umgebungen mit regelmässigen Releases. Das Bewahren des Überblicks über all die momentan existierenden Microservices einer Anwendung, die verschiedenen Versionen der Services und deren Abhängigkeitsstrukturen untereinander ist nicht einfach und schwer durch manuelle Wartung zu bewältigen. Service Kombinationen können Kompatibilitätsprobleme aufweisen wenn Services explizit eine spezifische Versionen eines bestimmten Services benötigen (oder ausschliessen) und das Auflösen von fehlerhaften Service Konfigurationen kann schnell das Vermögen Manueller Wartung überschreiten. In dieser Abhandlung bilden wir Konzepte von Software Product Lines auf die Domäne von Microservices ab um ein Formales Model von Microservice-basierten Feature Modellen einzuführen. Wir präsentieren Heimdall als Node.js-basierte Prototyp-Anwendung welche Software und DevOps Ingenieure dazu befähigt Microservices Anwendungen und ihre Abhängigkeiten als Feature Modelle zu definieren. Automatisierte Analyse Techniken, welche vom Software Product Line Bereich übernommen werden, ermöglichen das Überprüfen der Korrektheit von komplexen Microservices-basierten Anwendungen, das Ableiten und Validieren von Service Konfigurationen und das Empfehlen von möglichen Lösungen für ungültige Konfigurationen. All diese Methoden basieren auf Satisfiability Techniken und eine quantitative Evaluierung des Prototypen zeigt auf, dass die meisten dieser Methoden mit einer vielversprechenden Performance ausgeführt werden könnnen, auch für Microservices-basierte Feature Modelle mit hunderten von verschiedenen Services.
PDF File Download
Export BibTeX