Foundations of Scalable Software Architectures
Abstract: This tutorial covers the landscape of distributed system architectures through the lens of scalability. System scale is one of the defining qualities of our times, and the massive scale systems we see today will undoubtedly be dwarfed by those in the years to come. This tutorial is aimed at software architects, researchers and graduate students who wish to gain an understanding of the foundational architectural approaches needed for scalability. While it’s impossible to divorce scalability from other architectural qualities, scalability is the focus of discussions. Other qualities, including performance, availability and consistency are discussed when trade-offs are necessary.
Building scalable systems requires design approaches that facilitate elasticity of processing at both the service implementation and the persistence layer. We briefly characterize scalability, concentrating on issues of large scale, Internet-based systems that handle massive request spikes and huge volumes of data. We then focus on the architecture design approaches and distributed systems mechanisms necessary to design scalable systems. Scalable service implementation requires some fundamental design tactics. These include concurrency, stateless services, load balancing, caching and asynchronous processing. We illustrate these by progressively constructing a scalable service architecture example. We then describe how this foundational design is supported on cloud-based serverless platforms such as AWS Lambda and Google App Engine. Scaling the persistence layer also requires a collection of distributed systems architecture design approaches. We explain the inherent architecture trade-offs that persistence layers must address concerning consistency, availability and performance. We then show how these approaches and trade-offs manifest themselves in widely used distributed databases.
Finally, we describe a case study that illustrates the complexity of tuning applications to provide the required level of performance and scalability at the lowest possible cost. The case study illustrates using a Design of Experiments (DoE) approach to explore the huge configuration parameter space associated with service platforms. We show how this approach can be used to select parameter values that provide the required performance at a minimal cost. We also demonstrate how the results from a DoE study can be used to predict the performance and cost characteristics of configurations that have not been explicitly tested.
Ian Gorton is a Professor of Computer Science at Northeastern University. He has presented multiple conference tutorials for over 20 years at conferences such as ICSE, OOPSLA, FSE, ICSA, SATURN, and APSEC. This tutorial is based on his experience designing and building scalable systems
in scientific research and development. The materials are also drawn from his book, Foundations of Scalable Systems, to be published by O’Reilly in 2022. This tutorial has not been presented in its current form, but components of it have been trialed and refined in various venues including an FSE tutorial
in 2016, and several invited (eg APSEC, ICSA) in the last 3 years.
Vijaya Rayavarapu is a graduate student at Northeastern University. His interests are cloud computing, distributed systems and modeling and prediction using machine learning approaches.
Mastering Eventual Consistency
Abstract: Distributed data-intensive systems are increasingly designed to be only eventually consistent. Persistent data is no longer processed with serialized and transactional access, exposing applications to a range of potential consistency and concurrency anomalies that need to be handled by the application itself. Controlling concurrent data access in monolithic systems is already challenging, but the problem is exacerbated in distributed systems. To make it worse, only little systematic engineering guidance is provided by the software architecture community regarding this issue. Susanne shares her experiences from different case studies with industry clients, and novel design guidelines developed by using action research. In this hands-on tutorial, you will learn settled and novel approaches to tackle consistency- and concurrency related design challenges. After the tutorial, you will know how to use them in practice, and in combination with Domain-Driven Design (DDD).
The goals of this tutorial are:
- You learn the most fundamental basics of ACID transactions, distributed transactions, Sagas, Multilevel Transactions, Eventual Consistency, Conflict-Free-Replicated Data Types (CRDTS), ACID 2.0, and the CALM Theorem.
- You learn the general recommendations of DDD in relation to consistency, transactions, and concurrency control.
- You learn and practice novel design guidelines and patterns extending the DDD philosophy. These will enable you to design distributed data-intensive systems in such a way that you can exploit the benefits of eventual consistency, and at the same time avoid its common pitfalls.
Tutorial participants should already have some basic knowledge in distributed systems, database transactions, and DDD.
Susanne Braun is a software architect and researcher at Fraunhofer IESE, a large organization for applied research in Germany. She has more than 12 years of professional experience and worked as consultant at two IT consulting companies before joining Fraunhofer IESE. In her PhD she researches on distributed systems, eventual consistency and software architecture design. She is a regular speaker at conferences, active member of the java user group community, program committee member of a large conference for java professionals and software architects (JavaLand), and co-organizer of a virtual meetup series on software development (CyberLand). The tutorial has been held two times before as half-day “workshops” at two well-known practitioners conferences in Germany, the DDD Summit 2021 and the Software Architecture Gathering 2021. Susanne Braun did receive with her co-authors the best full paper award at ESEM 21 for her paper “Tackling ConsistencyRelated Design Challenges of Distributed Data-Intensive Systems”.
Architecting Blended Modelling Environments for Software Architectures
Tutorial cancelled due to online limitations
Abstract: Blended modelling enables the modelling of diverse architectural aspects through multiple editing notations seamlessly, interchangeably, and collaboratively. To manually architect and build a blended modelling environment is not trivial. Therefore, to support architects in this task, in the scope of the ITEA3 BUMBLE project, we have designed and developed a blended modelling framework that aids architects in designing and semi-automatically generating blended modelling environments for architecting software. In this tutorial, we will demonstrate two major activities in modelling and designing software architectures:
- Given a domain-specific language at hand, we will show how to leverage our framework to semi-automatically generate the blended modelling environment, including editors and synchronization transformations among notations, for the specific language in the tool ecosystem (Eclipse Modeling Framework).
- Once the blended modelling environment is generated, we will show how to architect software systems by using the generated blended modelling environment, demonstrating its seamless synchronization capabilities across different modelling notations and collaborative editing features.
Federico Ciccozzi is an Associate Professor (Docent in Computer Science) at Mälardalen University (Västerås, Sweden), leader of the Automated Software language and Software engineering (ASSO) research group and Head of Research Education in Computer Science and in Electronics. His research focuses on several aspects of modelling, architecting and engineering complex (often embedded) systems with domain-specific languages. Among them, he specializes in: definition of modelling languages, automatic model manipulations through transformations, system properties preservation, just to mention a few. Moreover, he conducts research in the area of multi-paradigm modeling, model versioning, (co)evolution and synchronization, as well as the application of MDE and CBSE techniques to complex cyber-physical systems. Federico Ciccozzi has co-authored 100+ publications, served in 40+ program committees and 35+ organization committees (including ICSA, ICSE, MODELS). He has run a technical briefing on engineering of robotic software at ICSE 2018.
Muhammad Waseem Anwar is a Post-Doctoral Researcher in Embedded Systems at Mälardalen University, department of Innovation, Design and Engineering in Västerås, Sweden. He completed his PhD degree in Software Engineering from National University of Sciences & Technology (NUST), Pakistan in 2021. He successfully completed several research projects such as Development of Open source HMI and MOdel-based DEsign Verification for Embedded Systems (MODEVES). He is currently working on the ITEA3 BUMBLE project.
Malvina Latifaj is a Ph.D. candidate at Mälardalen University (Västerås, Sweden), part of the Automated Software language and Software engineering (ASSO) research group. Her research interests include model-driven engineering with a special emphasis on blended modelling. More specifically, she focuses on the definition of domain-specific modelling languages, mapping modelling languages, and automatic model synchronization from model transformations.
Ivano Malavolta is an Assistant Professor in the Department of Computer Science and Director of the Network Institute, Vrije Universiteit Amsterdam, Amsterdam, The Netherlands. His research interests include data-driven software engineering, with a special emphasis on software architecture, mobile software development, robotics software, and Model-Driven Engineering. He authored several scientific articles in international journals and peer-reviewed international conferences proceedings. He is program committee member and reviewer of international conferences and journals in the Software Engineering field and Associate Editor of IEEE Software (responsible for the Software Design and Architecture area). He received a Ph.D. in computer science from the University of L’Aquila, Italy. He is a Member of IEEE, ACM, VERSEN, Amsterdam Young Academy, and Amsterdam Data Science. He has run a technical briefing on engineering of robotic software at ICSE 2018 and a tutorial on Web-based hybrid mobile apps at MOBILESoft 2016.
Kousar Aslam is a Post-doctoral researcher in the Department of Computer Science at Vrije Universiteit Amsterdam. Her research interests include Model-Driven engineering, software reverse engineering and collaborative modelling. She received a Ph.D. degree in computer science from Eindhoven University of Technology, The Netherlands. She has done several research projects in collaboration with industry. She is currently working on the ITEA3 BUMBLE project.
Modelling and Analysing Predictable Software Architectures for Embedded Control Systems
Tutorial cancelled due to online limitations
Abstract: The main objectives of this tutorial are to provide: i) an overview of the software development for predictable embedded control systems such as automotive embedded systems, ii) understanding rudiments and value of timing analysis of the software architectures for this domain, and iii) overview of the state-of-the-art and practice of the area especially industrial processes for architecting and analysing the software by means of hands-on practice and demonstration via tools. In particular, we will leverage a certified industrial tool-chain from the automotive domain.
Alessio Bucaioni is a software engineer currently working as an assistant professor in computer science at Mälardalen University. He received his Ph.D. degree from Mälardalen University in 2018. His research focuses on several aspects of the development of complex software-intensive systems from software architecture to model-driven development. Currently, he is investigating new paradigms such as BizzDevOps, Digital Twin, Low-Code Development.
John Lundbäck holds a Master degree from the Royal Institute of Technology (KTH), Sweden. Currently, he is the CEO of Arcticus Systems that provides model-based software development tool chain to the vehicle industry. He has previously worked as the manager for the tool chain development at Arcticus Systems since 1999. He is also leading the research unit at Arcticus Systems. He has co-authored over 15 research publications in international peer-reviewed journals, conferences and workshops.
Saad Mubeen is an Associate Professor at Mälardalen University, Sweden. He received his Ph.D. in Computer Science and Engineering from Mälardalen University Sweden in 2014. He has previously worked in the vehicle industry as a Senior Software Engineer at Arcticus Systems and as a Consultant for Volvo Construction Equipment, Sweden. He is a Senior Member of IEEE and a Co-chair of the Subcommittee on In-vehicle Embedded Systems within the IEEE IES Technical Committee on Factory Automation. He is co-leading the Heterogeneous systems – hardware software co-design (HERO) research group at Mälardalen University. His research focus is on model- and component-based development of predictable embedded software, modeling and timing analysis of in-vehicle communication, and end-to-end timing analysis of distributed embedded systems. Within this context, he has co-authored over 150 publications in peer-reviewed international journals, conferences and workshops. He has received several awards, including the IEEE Software Best Paper Award in 2017. He is a PC member and referee for several international conferences and journals respectively. He is a guest editor of IEEE Transactions on Industrial Informatics (TII), Elsevier’s Journal of Systems Architecture and Microprocessors and Microsystems, ACM SIGBED Review, and Springer’s Computing journal. For more information see http://www.es.mdh.se/staff/280-Saad_Mubeen.