1 - 4 of 4
ItemArchitectural Principles for Autonomous Microservices( 2020-01-07)In the last decade architectural patterns like microservices and event-driven architectures have emerged to meet the challenges of distributed computing. This paper explores recent practices and research in microservice- and event-driven architectures to identify the challenges in architecting such systems. With a proof-of-concept study approach, we distilled a set of design principles to address these challenges, creating asynchronous and agnostic microservice architectures. Further, we provide a generic toolkit for implementing such architectures. An example of this architecture was implemented in the company TechnipFMC. Concurrently, an architecture trade-off analysis was performed using a utility-tree based approach, highlighting the impact and importance of our proposed principles and their generalizability. The evaluation provides evidence for the viability of the proposed design principles.
ItemThe JDownloader Immune System for Continuous Deployment( 2020-01-07)Continuous deployment can reduce the time from a source code change to a newly deployed application significantly. Increased innovation speed can make all the difference in a competitive market situation. However, deploying at high frequency requires high speeds of discovering bugs in the deployed software. Using the JDownloader file download manager as our example, we present a fitness model to evaluate a continuously deployed software during operation for expected behavior, present the design and implementation of a monitoring component, and evaluate the model and its implementation using data from JDownloader’s multi-million member strong user base. Our evaluation finds that there had been thousands of undetected bugs, and that newly created bugs can be detected and reported 16 times faster than before.
ItemActive Loop Programming for Adaptive Systems( 2020-01-07)We describe a new approach to adaptive system construction, based on our belief that there are no one-way functions in biology. For example, no sensor is a one-way input device, and no effector is a one-way output device. We choose to mimic the fact that all biological systems have many active processing loops running at all times, at various different time and space scales, and all of them both produce and consume data. We wanted to see how far this notion can carry us towards highly adaptive computational systems, in combination with computational reflection and certain other biological principles of organization. We show that it carries us surprisingly far, by describing a system architecture that uses it as a fundamental organizing principle. We define what active loop programming is, show how it provides enormous flexibility in a software-intensive system, and show how it can be implemented with Wrappings, our integration infrastructure for self-modeling systems.