9a9043bb6eaf5fc6.tex
1: \begin{abstract} % (fold)
2: 
3: Modern cluster management systems like Kubernetes and Openstack grapple with
4: hard combinatorial optimization problems: load balancing, placement,
5: scheduling, and configuration. Currently, developers tackle these problems by
6: designing custom application-specific algorithms---an approach that is proving
7: unsustainable, as ad-hoc solutions both perform poorly and introduce
8: overwhelming complexity to the system, making it challenging to add
9: important new features.
10: 
11: We propose a radically different architecture, where programmers drive cluster
12: management tasks declaratively, using SQL queries over cluster state
13: stored in a relational database. These queries capture in a natural way
14: both constraints on the cluster configuration as well as optimization
15: objectives. When a cluster reconfiguration is required at runtime, our
16: tool, called \system, synthesizes an encoding of these queries into an
17: optimization model, which it solves using an off-the-shelf solver. 
18: 
19: We demonstrate \system's efficacy by powering three production-grade systems
20: with it: a Kubernetes scheduler, a virtual machine management solution,
21: and a distributed transactional datastore. Using \system, we expressed
22: complex cluster management policies in under 20 lines of SQL, easily added
23: new features to these existing systems, and significantly improved
24: placement quality and convergence times.
25: 
26: \end{abstract}
27: