Cloud Configuration Ecosystem at Intuit
SpringOne Platform 2017
Marcello de Sales, Intuit
"Configuration management at Intuit has been reshaped over the last 18 months since the adoption of Spring Cloud Config Server. This work represents a breakthrough in configuration management practices that are changing how Intuit implements configuration management since the company’s inception over 20+ years ago. In essence, any application ranging from desktop and service monoliths started their migration to the cloud without breaking their own DNA: configuration was still part of the binary built on Continuous Integration to be deployed in different data centers. As a consequence, we were still facing the same old challenges: what happens when a new configuration change is required for the entire fleet on multiple private data centers and the cloud? The new answer lies in the adoption of the Spring Cloud Config Server as our One Intuit Configuration Service using the SaaS model, which represents a new shift from manual Operational changes to the simple Pull Requests on related Github Enterprise repositories.
Needless to say, ranging from small internal services to the giants of TurboTax and Quickbooks that are used by millions of users worldwide, there are amazing results with the adoption of this Configuration practice and service such as the decreased time to change configuration from hours to minutes without involving Operations team while getting consistent configuration across a fleet of services. On the other hand, the strong adoption rate brought up a set of new challenges for us to support this new approach in the Enterprise: how to properly architect Spring Cloud Config to be deployed as a SaaS application in the Enterprise? how can we guarantee that users are pushing valid configuration properties to their repo? How can we help them debug their properties consistently, but without relying solely on Github Pull Requests? Finally, what if we need to replicate this solution for Mobile clients? Do we need to deploy hundreds of Configuration servers in the Cloud, and consequently, take the bite on cost?
Overall, the solutions to the questions above are comprised of SaaS deployment of the Spring Cloud Config with some enterprise tweaks for security and performance. Then, we have created a Github Pre-receive hook called Spring Cloud Config Validator to validate user’s config repositories and a web application called Spring Cloud Config Inspector that helps users debug their config keys as associated values, secrets, etc. Lastly, our Spring Cloud Config Publisher solution allows users to use their applications to console a subset of their config properties from an Amazon S3 bucket that the publisher will be publishing to at every new valid commit.