Configuration testing for Borg at Google
Configuration is used to make generic source code more specific and adaptable to various scenarios, such as different environments and business logic specifics. This helps reduce overall system complexity, which improves development velocity and system quality. Unfortunately configurations rarely stay small.
At Google, an internal configuration language called “Google Configuration Language - GCL” was developed over the years. A notable use case for this language is configuration of binary deployments on Google’s cluster management service Borg. The dialect of GCL used for this is known internally as Borg Configuration Language or BCL. BCL started as a simple templating engine but quickly grew in complexity to a fully Turing complete engine.
With the growth in complexity the configuration is getting harder to understand and reason about. The software engineering industry has in the past successfully used unit testing as one method of dealing with complexity. Providing unit testing for configuration can provide the same benefit to configuration. However, the nature of configuration languages is a limitation. It is much closer to data than code. This fact makes the most popular approach to test source code, unit tests, impractical in most cases. Other approaches should be used which allow users to keep the development velocity but have a reasonable level of safety for configuration.
In this talk, we present a novel tool for unit testing Borg deployment configuration. The tool is used by hundreds of engineers and has been positively received.
Tue 24 OctDisplayed time zone: Lisbon change
16:00 - 17:30 | |||
16:00 22mTalk | Applying Large Scale Diffing to Declarative Configuration Code for Production Safety CONFLANG | ||
16:22 22mTalk | Creed for Speed: Comprehensive Infrastructure as Code Testing CONFLANG Daniel Sokolowski University of St. Gallen, David Spielmann University of St. Gallen, Guido Salvaneschi University of St. Gallen Pre-print | ||
16:45 22mTalk | Configuration testing for Borg at Google CONFLANG Alex Ivanov Google | ||
17:07 22mLive Q&A | Configuration testing Q&A/Discussion CONFLANG |