The presentation discusses the design principles and implementation of a new system for managing configuration and deployment of applications. The system aims to strike a balance between exposing changes and ensuring meaningful review, while also accommodating the needs of a wide range of users.
- The system was designed with the goal of making it easy for developers to get started and ensuring commonly needed changes would be simple to make
- The system includes a config CLI and API, a version schema, and a customization system
- The config CLI provides a familiar interactive workflow for developers to modify production configuration
- The config API simplifies the user experience by explicitly encoding the main application properties that developers need to control
- The version schema allows for formal versioning and evolution of the system over time
- The customization system allows for advanced users to leverage the full power of Kubernetes APIs when needed
- The system strikes a balance between exposing changes and ensuring meaningful review, while also accommodating the needs of a wide range of users
The speaker notes that the system was designed based on an analysis of all the applications they had at the time, and that they aimed to provide three buckets of feature sets to accommodate the needs of all users, from those building simple apps to those running key services with considerable customization. They also note that in hindsight, they could have taken the user experience further by hiding default bases and patches behind fields or APIs of their own.