21 research outputs found

    Reactive Microservices - An Experiment

    Get PDF
    Os microserviços são geralmente adotados quando a escalabilidade e flexibilidade de uma aplicação são essenciais para o seu sucesso. Apesar disto, as dependências entre serviços transmitidos através de protocolos síncronos, resultam numa única falha que pode afetar múltiplos microserviços. A adoção da capacidade de resposta numa arquitetura baseada em microserviços, através da reatividade, pode facilitar e minimizar a proliferação de erros entre serviços e na comunicação entre eles, ao dar prioridade à capacidade de resposta e à resiliência de um serviço. Esta dissertação fornece uma visão geral do estado da arte dos microserviços reativos, estruturada através de um processo de mapeamento sistemático, onde são analisados os seus atributos de qualidade mais importantes, os seus erros mais comuns, as métricas mais adequadas para a sua avaliação, e as frameworks mais relevantes. Com a informação recolhida, é apresentado o valor deste trabalho, onde a decisão do projeto e a framework a utilizar são tomadas, através da técnica de preferência de ordem por semelhança com a solução ideal e o processo de hierarquia analítica, respetivamente. Em seguida, é realizada a análise e o desenho da solução, para o respetivo projeto, onde se destacam as alterações arquiteturais necessárias para o converter num projeto de microserviços reativo. Em seguida, descreve-se a implementação da solução, começando pela configuração do projeto necessária para agilizar o processo de desenvolvimento, seguida dos principais detalhes de implementação utilizados para assegurar a reatividade e como a framework apoia e simplifica a sua implementação, finalizada pela configuração das ferramentas de métricas no projeto para apoiar os testes e a avaliação da solução. Em seguida, a validação da solução é investigada e executada com base na abordagem Goals, Questions, Metrics (GQM), para estruturar a sua análise relativamente à manutenção, escalabilidade, desempenho, testabilidade, disponibilidade, monitorabilidade e segurança, finalizada pela conclusão do trabalho global realizado, onde são listadas as contribuições, ameaças à validade e possíveis trabalhos futuros.Microservices are generally adopted when the scalability and flexibility of an application are essential to its success. Despite this, dependencies between services transmitted through synchronous protocols result in one failure, potentially affecting multiple microservices. The adoption of responsiveness in a microservices-based architecture, through reactivity, can facilitate and minimize the proliferation of errors between services and in the communication between them by prioritizing the responsiveness and resilience of a service. This dissertation provides an overview of the reactive microservices state of the art, structured through a systematic mapping process, where its most important quality attributes, pitfalls, metrics, and most relevant frameworks are analysed. With the gathered information, the value of this work is presented, where the project and framework decision are made through the technique of order preference by similarity to the ideal solution and the analytic hierarchy process, respectively. Then, the analysis and design of the solution are idealized for the respective project, where the necessary architectural changes are highlighted to convert it to a reactive microservices project. Next, the solution implementation is described, starting with the necessary project setup to speed up the development process, followed by the key implementation details employed to ensure reactivity and how the framework streamlines its implementation, finalized by the metrics tools setup in the project to support the testing and evaluation of the solution. Then, the solution validation is traced and executed based on the Goals, Questions, Metrics (GQM) approach to structure its analysis regarding maintainability, scalability, performance, testability, availability, monitorability, and security, finalized by the conclusion of the overall work done, where the contributions, threats to validity and possible future work are listed

    Kollaboratives Reengineering und Modularisieren von Softwaresystemen

    Get PDF
    Software systems evolve over their lifetime. Changing requirements make it inevitable for developers to modify and extend the underlying code base. Specific requirements emerge in the context of open source software where everybody can contribute and requirements can change over time. In particular, research software is often not structured with a maintainable and extensible architecture. Furthermore, often databases are employed for retrieving, storing, and processing application data. Insufficient knowledge of the actual structure and behavior of such software systems and related databases can entail further challenges. Thus, understanding these software systems embodies a crucial task, which needs to be addressed in an appropriate way to face inevitable challenges while performing software changes. Approaches based on alternative display and interaction concepts can support this task by offering a more immersive user experience. In this thesis, we introduce three complementary approaches to support the evolution and particularly understanding of software systems in different aspects. Our main contributions are (i) an approach named CORAL for enabling collaborative reengineering and modularization of software systems, (ii) a gesture-based, collaborative, and multi-user-featuring Virtual Reality approach named ExplorViz VR for the software city metaphor, and (iii) a database behavior live-visualization approach named RACCOON for database comprehension of software systems. An extensive case study shows that our CORAL approach is capable of supporting reengineering and modularization processes. Furthermore, several lab experiments demonstrate the high usability, and efficiency and effectiveness for solving comprehension tasks when using the visualization within our multi-user VR approach ExplorViz VR. All implementations are available as open-source software on www.explorviz.net. Additionally, we provide an extensive experimental package of our latest VR evaluation to facilitate the verifiability and reproducibility of our results

    Modeling and Simulation of Message-Driven Self-Adaptive Systems

    Get PDF
    Dynamische, sich selbst rekonfigurierende Systeme nutzen Nachrichtenwarteschlangen als gängige Methode zum Erreichen von Entkopplung zwischen Sendern und Empfängern. Das Vorhersagen der Qualität von Systemen zur Entwurfszeit ist wesentlich, da Änderungen in späteren Phasen der Entwicklung sehr viel aufwändiger und teurer sind. Momentan gibt es keine Methode, Nachrichtenwarteschlangen auf architekturellem Level darzustellen und deren Qualitätseinfluss auf Systeme vorherzusagen. Existierende Ansätze modellieren Warteschlangen nicht explizit sondern abstrahieren sie. Warteschlangeneffekte sowie Details der Nachrichten-Infrastruktur wie zum Beispiel Flusskontrolle werden nicht beachtet. Diese Arbeit schlägt ein Meta-Modell vor, das eine solche Repräsentation ermöglicht, und eine Simulations-Schnittstelle zwischen einer Simulation einer komponentenbasierten Architekturbeschreibungssprache und einer Nachrichtenaustausch-Simulation. Das Meta-Modell wurde als Erweiterung des Palladio Komponentenmodells realisiert. Die Schnittstelle wurde implementiert für den Palladio-Simulator SimuLizar und eine von RabbitMQ inspirierte Simulation, die dem AMQP 0.9.1 Protokoll folgt. Dies ermöglicht architekturelle Repräsentation von Nachrichtenaustausch und das Vorhersagen von Qualitätsattributen von nachrichtengetriebenen, selbst-adaptiven Systemen. Die Evaluation anhand einer Fallstudie zeigt die Anwendbarkeit des Ansatzes und seine Vorhersagegenauigkeit für Punkt-zu-Punkt-Kommunikation. Außerdem konnten andere qualitätsbezogene Metriken, wie etwa Nachrichtenwarteschlangenlänge, Ein- und Ausgangsraten von Nachrichtenwarteschlangen, sowie Speicherverbrauch korrekt vorhergesagt werden. Das ermöglicht tiefere Einsichten in die Qualität eines Systems. Wir argumentieren weiterhin, dass der Ansatz in dieser Arbeit selbst-adaptive nachrichtengetriebene Systeme, die sich basierend auf verschiedenen Metriken rekonfigurieren, simulieren kann

    QoS-Based Optimization of Runtime Management of Sensing Cloud Applications

    Get PDF
    Die vorliegende Arbeit präsentiert Ansätze und Techniken zur qualitätsbewussten Verbesserung des Laufzeitmanagements von IoT-Anwendungen. IoT-Anwendungen nehmen über die Sensorik von Smart Devices ihre Umgebung wahr, um diese zu analysieren oder mit ihr zu interagieren. Smart Devices sind in der Rechen- und Speicherleistung begrenzt, weshalb viele IoT-Anwendungen über eine IoT Plattform mit elastischen und skalierbaren Cloud Services verbunden sind. Die Last auf dem Cloud Service entsteht durch die verbundenen Smart Devices, die kontinuierlich Nachrichten transferieren. Die Ressourcenkonfiguration des Cloud Services beeinflusst dessen Kapazität. Ein Service Operator, der eine IoT-Anwendung betreibt, ist mit der Herausforderung konfrontiert, die Smart Devices und den Cloud Service so zu konfigurieren, dass eine hohe Datenqualität bei niedrigen Betriebskosten erreicht wird. Um hierbei den Service Operator zur Design Time zu unterstützen, modellieren wir Kostenfunktionen für Datenqualitäten, die durch das Wechselspiel der Smart Device- und Cloud Service-Konfiguration beeinflusst werden. Mit Hilfe dieser Kostenfunktionen kann ein Service Operator nach einer kostenminimalen Konfiguration für bestimmte Szenarien suchen. Existierende Ansätze zur Optimierung von Anwendungen zur Design Time fokussieren sich auf traditionelle Software-Architekturen und bieten daher nicht die notwendigen Konzepte zur Kostenmodellierung von IoT-Anwendungen an. Des Weiteren unterstützen wir den Service Operator durch Lastkontrollverfahren, die auf Kapazitätsengpässe des Cloud Services durch eine kontrollierte Reduktion der Nachrichtenrate reagieren. Während sich das auf die Genauigkeit der Messungen nachteilig auswirken kann, stabilisieren sich zeitliche Verzögerungen und die IoT-Anwendung bleibt auch in starken Überlastszenarien verfügbar. Existierende Laufzeittechniken fokussieren sich auf die automatische Ressourcenprovisionierung von Cloud Services durch Auto-Scaler. Diese ermöglichen zwar, auf Kapazitätsengpässe und Lastschwankungen zu reagieren, doch die erreichte Quality-of-Service (QoS) kann dadurch mit hohen Betriebskosten verbunden sein. Daher ermöglichen wir durch die Lastkontrollverfahren eine weitere Technik, mit der einerseits dynamisch auf Kapazitätsengpässe reagiert werden und andererseits die zur Verfügung stehende Kapazität eines Cloud Services effizient genutzt werden kann. Außerdem präsentieren wir Kopplungstechniken, die Auto-Scaling und Lastkontrollverfahren kombinieren. Bestehende Ansätze zur Rekonfiguration von Smart Devices konzentrieren sich auf Qualitäten wie Genauigkeit oder Energie-Effizienz und sind daher ungeeignet, um auf Kapazitätsengpässe zu reagieren. Zusammenfassend liefert die Dissertation die folgenden Beiträge: 1. Untersuchung von Performance Metriken für Skalierentscheidungen: Wir haben Infrastuktur- und Anwendungsebenen-Metriken daraufhin evaluiert, wie geeignet sie für Skalierentscheidungen von Microservices sind, die variierende Charakteristiken aufweisen. Auf Basis der Ergebnisse kann ein Service Operator eine fundierte Entscheidung darüber treffen, welche Performance Metrik zur Skalierung eines bestimmten Microservices am geeignesten ist. 2. Design von QoS Kostenfunktionen für IoT-Anwendungen: Wir haben ein QoS Kostenmodell aufgestellt, dass das Wirken von Smart Device- und Cloud Service-Konfiguration auf die Qualitäten einer IoT-Anwendung erfasst. Auf Grundlage dieser Kostenmodelle kann die Konfiguration von IoT-Anwendungen zur Design Time optimiert werden. Des Weiteren können mit den Kostenfunktionen Laufzeitverfahren hinsichtlich ihrem Beitrag zur QoS für verschiedene Szenarien evaluiert werden. 3. Entwicklung von Lastkontrollverfahren für IoT-Anwendungen: Die präsentierten Verfahren bieten einen komplementären Mechanismus zu Auto-Scaling an, um bei Kapazitätsengpässen die QoS aufrechtzuerhalten. Hierbei wird die Gesamtlast auf dem Cloud Service durch Anpassungen der Nachrichtenrate der Smart Devices reduziert. Ein Service Operator hat hiermit die Möglichkeit, Kapazitätsengpässen über eine Degradierung der Datenqualität zu begegnen. 4. Kopplung von Lastkontrollverfahren mit Ressourcen-Provisionierung: Wir präsentieren regelbasierte Kopplungsmechanismen, die reaktiv Lastkontrollverfahren oder Auto-Scaler aktivieren und diese damit koppeln. Das ermöglicht, auf Kapazitätsengpässe über eine Kombination von Datenqualitätsreduzierungen und Ressourcekostenerhöhungen zu reagieren. 5. Design eines Frameworks zur Entwicklung selbst-adaptiver Systeme: Das selbst-adaptive Framework bietet ein Anwendungsmodell für IoT-Anwendungen und Konzepte für die Rekonfiguration von Microservices und Smart Devices an. Es kann in verschiedenen Cloud-Umgebungen aufgesetzt werden und beschleunigt die prototypische Entwicklung von Laufzeitverfahren. Wir validierten die Ansätze anhand zweier Case Study Systeme unterschiedlicher Komplexität. Das erste Case Study System besteht aus einem Cloud Service, welcher über eine IoT Plattform Nachrichten von virtuellen Smart Devices verarbeitet. Mit diesem System haben wir für unterschiedliche Anwendungsszenarien die Charakteristiken der vorgestellten Lastkontrollverfahren analysiert, um diese gegen Auto-Scaling und einer Kopplung der Ansätze zu vergleichen. Hierbei stellte sich heraus, dass die Lastkontrollverfahren ähnlich effizient wie Auto-Scaler Überlastszenarien addressieren können und sich die QoS in einem vergleichbaren Bereich bewegt. Im Schnitt erreichten die Lastkontrollverfahren in den untersuchten Szenarien etwa 50 % geringere QoS Gesamtkosten. Es zeigte sich auch, dass sowohl Auto-Scaling als auch die Lastkontrollverfahren in bestimmten Anwendungsszenarien deutliche Nachteile haben, so z. B. wenn die Datengenauigkeit oder Ressourcenkosten im Vordergrund stehen. Es hat sich gezeigt, dass eine Kopplung hierbei immer vorteilhaft ist, um die QoS beizubehalten. Im zweiten Case Study System haben wir eine intelligente Heizungslösung der Robert Bosch GmbH implementiert, um die Ansätze an einem komplexeren System zu validieren. Auch hier zeigte sich, dass eine Kombination von Lastkontrolle und Auto-Scaling am vorteilhaftesten ist und zu einer hohen Datenqualität bei geringen Ressourcenkosten beiträgt. Die Ergebnisse zeigen, dass die vorgestellten Lastkontrollverfahren geeignet sind, die QoS von IoT Anwendungen zu verbessern. Es bietet einem Service Operator damit ein weiteres Werkzeug für das Laufzeitmanagement von IoT Anwendungen, dass einen zum Auto-Scaling komplementären Mechanismus verwendet. Das hier vorgestellte Framework zur Entwicklung selbst-adaptiver IoT Systeme haben wir zur empirischen Beantwortung der Forschungsfragen instanziiert und damit dessen Eignung demonstriert. Wir zeigen außerdem eine exemplarische Verwendung der vorgestellten Kostenfunktionen für verschiedene Anwendungsszenarien und binden diese im Zuge der Validierung in einem Optimierungs-Framework ein

    Architectural Support for Software Performance in Continuous Software Engineering: A Systematic Mapping Study

    Full text link
    The continuous software engineering paradigm is gaining popularity in modern development practices, where the interleaving of design and runtime activities is induced by the continuous evolution of software systems. In this context, performance assessment is not easy, but recent studies have shown that architectural models evolving with the software can support this goal. In this paper, we present a mapping study aimed at classifying existing scientific contributions that deal with the architectural support for performance-targeted continuous software engineering. We have applied the systematic mapping methodology to an initial set of 215 potentially relevant papers and selected 66 primary studies that we have analyzed to characterize and classify the current state of research. This classification helps to focus on the main aspects that are being considered in this domain and, mostly, on the emerging findings and implications for future researc

    Adaptation-Aware Architecture Modeling and Analysis of Energy Efficiency for Software Systems

    Get PDF
    This thesis presents an approach for the design time analysis of energy efficiency for static and self-adaptive software systems. The quality characteristics of a software system, such as performance and operating costs, strongly depend upon its architecture. Software architecture is a high-level view on software artifacts that reflects essential quality characteristics of a system under design. Design decisions made on an architectural level have a decisive impact on the quality of a system. Revising architectural design decisions late into development requires significant effort. Architectural analyses allow software architects to reason about the impact of design decisions on quality, based on an architectural description of the system. An essential quality goal is the reduction of cost while maintaining other quality goals. Power consumption accounts for a significant part of the Total Cost of Ownership (TCO) of data centers. In 2010, data centers contributed 1.3% of the world-wide power consumption. However, reasoning on the energy efficiency of software systems is excluded from the systematic analysis of software architectures at design time. Energy efficiency can only be evaluated once the system is deployed and operational. One approach to reduce power consumption or cost is the introduction of self-adaptivity to a software system. Self-adaptive software systems execute adaptations to provision costly resources dependent on user load. The execution of reconfigurations can increase energy efficiency and reduce cost. If performed improperly, however, the additional resources required to execute a reconfiguration may exceed their positive effect. Existing architecture-level energy analysis approaches offer limited accuracy or only consider a limited set of system features, e.g., the used communication style. Predictive approaches from the embedded systems and Cloud Computing domain operate on an abstraction that is not suited for architectural analysis. The execution of adaptations can consume additional resources. The additional consumption can reduce performance and energy efficiency. Design time quality analyses for self-adaptive software systems ignore this transient effect of adaptations. This thesis makes the following contributions to enable the systematic consideration of energy efficiency in the architectural design of self-adaptive software systems: First, it presents a modeling language that captures power consumption characteristics on an architectural abstraction level. Second, it introduces an energy efficiency analysis approach that uses instances of our power consumption modeling language in combination with existing performance analyses for architecture models. The developed analysis supports reasoning on energy efficiency for static and self-adaptive software systems. Third, to ease the specification of power consumption characteristics, we provide a method for extracting power models for server environments. The method encompasses an automated profiling of servers based on a set of restrictions defined by the user. A model training framework extracts a set of power models specified in our modeling language from the resulting profile. The method ranks the trained power models based on their predicted accuracy. Lastly, this thesis introduces a systematic modeling and analysis approach for considering transient effects in design time quality analyses. The approach explicitly models inter-dependencies between reconfigurations, performance and power consumption. We provide a formalization of the execution semantics of the model. Additionally, we discuss how our approach can be integrated with existing quality analyses of self-adaptive software systems. We validated the accuracy, applicability, and appropriateness of our approach in a variety of case studies. The first two case studies investigated the accuracy and appropriateness of our modeling and analysis approach. The first study evaluated the impact of design decisions on the energy efficiency of a media hosting application. The energy consumption predictions achieved an absolute error lower than 5.5% across different user loads. Our approach predicted the relative impact of the design decision on energy efficiency with an error of less than 18.94%. The second case study used two variants of the Spring-based community case study system PetClinic. The case study complements the accuracy and appropriateness evaluation of our modeling and analysis approach. We were able to predict the energy consumption of both variants with an absolute error of no more than 2.38%. In contrast to the first case study, we derived all models automatically, using our power model extraction framework, as well as an extraction framework for performance models. The third case study applied our model-based prediction to evaluate the effect of different self-adaptation algorithms on energy efficiency. It involved scientific workloads executed in a virtualized environment. Our approach predicted the energy consumption with an error below 7.1%, even though we used coarse grained measurement data of low accuracy to train the input models. The fourth case study evaluated the appropriateness and accuracy of the automated model extraction method using a set of Big Data and enterprise workloads. Our method produced power models with prediction errors below 5.9%. A secondary study evaluated the accuracy of extracted power models for different Virtual Machine (VM) migration scenarios. The results of the fifth case study showed that our approach for modeling transient effects improved the prediction accuracy for a horizontally scaling application. Leveraging the improved accuracy, we were able to identify design deficiencies of the application that otherwise would have remained unnoticed

    Architecture-based Evolution of Dependable Software-intensive Systems

    Get PDF
    This cumulative habilitation thesis, proposes concepts for (i) modelling and analysing dependability based on architectural models of software-intensive systems early in development, (ii) decomposition and composition of modelling languages and analysis techniques to enable more flexibility in evolution, and (iii) bridging the divergent levels of abstraction between data of the operation phase, architectural models and source code of the development phase

    Architecture-based Uncertainty Impact Analysis for Confidentiality

    Get PDF
    In Zeiten vernetzter Systeme ist Vertraulichkeit ein entscheidendes Sicherheitsqualitätsmerkmal. Da die Behebung von Vertraulichkeitsverletzungen kostspieliger wird, je später sie entdeckt werden, sollten Softwarearchitekten diese bereits in der Entwurfsphase berücksichtigen. Während des Architekturentwurfsprozesses treffen Architekten Entwurfsentscheidungen um Ungewissheit zu reduzieren. Allerdings unterliegen Entscheidungen oft Annahmen und unbekannten oder ungenauen Informationen. Annahmen können sich als falsch erweisen und müssen revidiert werden. Dies verursacht erneut Ungewissheit. Ungewissheiten zur Entwurfszeit machen genaue Schlussfolgerungen über die Vertraulichkeit des Systems daher unmöglich. Es ist also notwendig, ihre Auswirkungen auf Architekturebene zu bewerten, bevor eine Aussage über die Vertraulichkeit getroffen wird. Bisher ist diese Bewertung manuell und mühsam und erfordert ein großes Maß an Wissen. Derzeitige Ansätze berücksichtigen Ungewissheiten nicht zur Entwurfszeit, sprich in Softwarearchitekturen, sondern in anderen Bereichen wie z.B. bei selbst-adaptiven Systemen. Diese Lücke wollen wir wie folgt schließen: Erstens stellen wir einen neuen Ansatz zur Kategorisierung von Ungewissheiten vor. Darauf aufbauend stellen wir eine Ungewissheitsschablone zur Verfügung, die es Architekten ermöglicht, Typen von Ungewissheiten und deren Auswirkungen auf Architekturelementtypen für eine Domäne strukturell abzuleiten. Zweitens stellen wir eine Ungewissheits-Auswirkungs-Analyse vor, die es Architekten ermöglicht zu spezifizieren, welche Elemente direkt von Ungewissheiten betroffen sind. Basierend auf strukturellen Ausbreitungsregeln leitet die Analyse automatisch weitere Elemente ab, die potenziell betroffen sein könnten. Es wird die strukturelle Qualität, Anwendbarkeit und Zweck der Schablone evaluiert. Wir erläutern, dass die Kategorien Prinzipien wie Orthogonalität, Vollständigkeit und Unterscheidbarkeit erfüllen. Außerdem zeigen wir, dass sie dabei hilft Ungewissheitstypen und deren Auswirkungen abzuleiten, sowie Wiederverwendbarkeit und Bewusstsein schafft. Schließlich veranschaulichen wir die Relevanz der Schablone, indem wir zeigen, dass sie im Vergleich zu bestehenden Taxonomien Ungewissheiten in Softwarearchitekturen genauer klassifizieren und somit präzisere Aussagen über deren Auswirkungen machen kann. Die Analyse wird im Hinblick auf Benutzerfreundlichkeit, Funktionalität und Genauigkeit bewertet. Wir demonstrieren, dass die Analyse die Benutzerfreundlichkeit erhöht, indem sie die erforderliche Menge an Fachwissen beim Umgang mit Ungewissheiten im Vergleich zu einer manuellen Analyse reduziert. Anhand der Kontaktnachverfolgungs-Applikation Corona-Warn-App zeigen wir, dass die Analyse die Anzahl der zu untersuchenden Elemente im Vergleich zu einer manuellen Analyse um 85% reduziert. Darüber hinaus veranschaulichen wir, wie sie Architekten ermöglicht, Ungewissheiten während der Entwurfszeit explizit zu verwalten. Anhand der Fallstudie zeigen wir, dass die Analyse eine 100%ige Ausbeute bei einer Präzision von 44%-91% hat
    corecore