23 Aug 2021 |
Research article |
Information and Communications Technologies
Developing and Operating Multicomponent Systems
Purchased on Istockphoto.com. Copyright.
Software systems today are increasingly “multicomponent-based,” which consist of systems made up of several independently designed, developed, and maintained components. Microservices, distributed systems, and plugin-based software systems (like WordPress) all have multicomponent system architectures. Netflix with its hundreds of microservices or OpenStack with its dozens of components are two typical examples of multicomponent systems. These systems behave differently from single-component systems and present new and unique challenges, which are not covered by the literature. Unfortunately, current scientific literature on software engineering largely focuses on single-component systems or a single component in a multicomponent system, without considering its interactions with other components. At ÉTS, we want to fill this gap and equip engineers (developers and operators) to better develop and operate multicomponent systems.
The Crux of the Issue: Configuration
Configuration of a software system aims to customize its behaviour, to deploy it, and to adapt it to a specific environment without modifying the source code of the system. The configuration choices that are made have a significant impact on the proper functioning, efficiency and security of the system. For example, it was a configuration error that caused the Equifax breach a few years ago. In a multicomponent system, the options for each component are developed independently, which can lead to upwards of several thousand configuration possibilities. No wonder even experts become overwhelmed!
Configuration errors are the most common issue in operating multicomponent systems. In addition to being frequent, they are often serious and difficult to debug. Sometimes, the component that sends error messages is not the one that is misconfigured—the problem may come from the misconfiguration of another component. Our research aims to assist users in configuring multicomponent systems by developing a set of best practices and recommendation systems.
We plan to establish quantitative and qualitative analysis techniques that will benefit from the exploration of software and configuration repositories like Github and DockerHub.
Multicomponent System Integration
Finally, we plan to extend our work to the integration of multicomponent systems. Indeed, these systems are often formed from heterogeneous components, each of which is built by a different team that follows its own development and release strategy. We want to come up with an integration approach that takes into account this great variability and guarantees synergy among the individual components.