Application config management: Lightweight but enterprise-ready
Wednesday, 01 December, 11:00AM – 11:25AM (UTC)
Learn how to leverage dynaconf + flask to handle web-application configs in an elegant way. And be nimble for lightweight application deployment, but easily rise to enterprise grade management with secret management, configuration web interfaces, user specific configurations, validators, and more!
Any good application uses configurations to power it. Some organizations use simple environment variables powered by shell scripts, some use large scale enterprise applications which manage their configurations. As an application developer, you need to ensure you use the right tool for the job - something that is easy enough to use for small applications, but that can give you a lot of flexibility for larger applications too. In this talk, we go through a case study where my company’s software “Corridor Platforms” was undergoing a security audit from one of the largest international banks. And how we upscaled our configuration management to handle enterprise level requirements within a matter of days. This talk will go into some methods of classifying common configurations and what needs to be thought through for each of them (with examples using dynaconf). For example: - Based on usage: - Infrastructure configs - Which are required before your application starts - Application behavior configs - Which modify capabilities in your application - Based on source: - Externally managed - Fetching configs on the fly from external sources like Vault - User configs - Allowing users to modify some behaviors of your application - Secret configs - Encryption methods to handle configurations We touch upon configuration management methods like: - Grouping strategies - Handling dev/testing/production setting groups - Validators - Validating the configurations in a generic way - Merge strategies - How to handle levels of configuration files and merging them - Formats for storage - Storage formats like json/yaml/.py files/etc. - Dynamic loading strategies - Avoiding application restarts or downtimes to load configurations While the talk goes in depth with the methods we used to handle these cases with dynaconf, we will also discuss comparisons of dynaconf with other well known packages which provide configuration management. Specifically: - Flask’s configuration management - Traitlets - Configparser - And others