Fancy Some Chips for Your TeaStore? Modeling the Control of an Adaptable Discrete System
Anna Gallone, Simon Bliudze, Sophie Cerf, Olga Kouchnarenko
TL;DR
This work presents Chips, a language for designing adaptable distributed systems that blends control theory and aggregate programming with a synchronous dataflow style, enabling automated generation of BIP models. Using an Adaptable TeaStore as a running example, the authors demonstrate a complete workflow: requirements analysis, Chips model construction, controller design (PID) for runtime cache adaptation, Chips-to-BIP transformation, and simulation-based validation. The key contribution is showing that a CT-based control loop can stabilize a cloud-like component (image provider) by dynamically tuning the cache size to meet a target response time, with results illustrating convergence toward the desired timing and a full end-to-end modeling pipeline. This approach provides a systematic pathway to design, analyze, and validate adaptivity in complex distributed systems, with clear directions for compiler development and language-extension work.
Abstract
When designing new web applications, developers must cope with different kinds of constraints relative to the resources they rely on: software, hardware, network, online micro-services, or any combination of the mentioned entities. Together, these entities form a complex system of communicating interdependent processes, physical or logical. It is very desirable that such system ensures its robustness to provide a good quality of service. In this paper we introduce Chips, a language that aims at facilitating the design of models made of various entwined components. It allows the description of applications in the form of functional blocks. Chips mixes notions from control theory and general purpose programming languages to generate robust component-based models. This paper presents how to use Chips to systematically design, model and analyse a complex system project, using a variation of the Adaptable TeaStore application as running example.
