Dynamic Configuration Management in Distributed Systems — Part 1

  • Configuration Management in Monolithic vs Distributed systems
  • The configuration management classes
  • The best practices of Configuration management
  • The options to store or update a service configuration.
  • The push and pull models as the two types of approaches to configuration management.

What was our main research driver for this topic?

In 2015, Facebook released a white paper that introduced Facebook’s holistic configuration management solution.

With this paper, we came across this golden rule: how to make a change to your application without changing the source code, in other terms, without having to restart your application to reflect changes?

This question made us know that configuration management is a crucial piece that can help manage every part of your application. Especially that Web and mobile applications are exposed to many online configuration changes.

The Opening :

Dynamic configuration management is an extremely important part of a modern distributed system, allowing the system to be tuned and its behaviour and functionality to be changed without having to redeploy the entire system.

Now let’s get to the heart of the matter!

Configuration management is an essential part of modern applications. It can be challenging for monolithic systems, but not as challenging as for distributed systems where many services interact with each other, have many dependency relationships and may have shared configurations between two or more services.

Monolithic vs Distributed Systems Architecture

  1. The Monolith approach

Configuration Management in Monolithic vs Distributed systems:

  1. Configuration Management in Monolithic system

The Benefits of a good Configuration Management :

More and more companies are adopting configuration management tools and practices because the benefits they offer are truly game-changing. So let’s take a look at the most important benefits of configuration management.

  • Prevent changes that cause downtime.
  • No need to reinvent the wheel every time major changes are applied.
  • Reduced performance and scaling requirements

The Challenges of configuration management in a distributed environment:

With modern software and systems being complex, configuration management can be a delicate undertaking to implement. It’s not just a question of opting to try configuration management and getting great results the next day.
When starting to implement configuration management, there will be a few key challenges:

  • Keeping consistency across several different teams and environments (e.g., test, production and staging) can be very tricky.
  • The more complex your applications are, the more complicated they will be to manage.
  • Having to work with several different vendors in various geographies and time zones makes it even more of a struggle to manage your systems.
  • It’s much tougher to implement configuration management in companies that don’t embrace agile and DevOps principles.

Configuration Management Classes:

Static vs. Dynamic Configuration Management process

The task of maintaining configuration settings is one of the most vital parts of the process. It demands careful analysis and monitoring, planning and deployment. In addition, it requires you to be mindful of system requirements and the integrity of your configuration files. Reading variables such as parameterized variables, whether from global or environment-specific variables during system development, is the most fundamental part of any application, there are conditions based on these values that you must cover in a programmatic way and manage them in a separated configuration file.

The Options to update a Service Configuration:

Here we will describe the different ways we can use to store/update a service configuration.

Option 4 Existing Tools

  1. Consul Template

Pull vs Push Models

Two types of approaches to configuration management exist.

  • Easier scalability: Since nodes can be started automatically and independently of other nodes, this means that scaling such a configuration is much easier.
  • Easy to implement
  • Easier to use: Push configuration management tools, such as Ansible, are generally much easier to set up and start. Also, because nodes don’t pull information from the main server, development is more straightforward, as you can easily test your scripts without worrying about a node accidentally picking them up or changing agent settings.

Conclusion

In conclusion, configuration management, with its various classes and options, is an essential part of modern applications, as it offers real game-changing benefits.

Bibliography

  • BMC Blogs. “Creating Using ConfigMaps in Kubernetes.” In: (2021).
  • Carlos Casanova. “Configuration Management, Why bother?” In: (2016).
  • Facebook Research. “Holistic Configuration Management at Facebook.” In: (2015).
  • Gayatri S Ajith. “Beginner Fundamentals: Push Pull Configuration Management Tools”. In: (2019).
  • HashiCorp Learn. “Service Configuration with Consul Template — Consul.’” In: (2021)

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store