USEFUL INFO

A bit about Configuration Management

Things you need to know about Configuration Management before using any Configuration Management Consulting company

What is Configuration Management?

Configuration Management tools help maintain a system in a desired state, and are mostly used to manage files, directories and various installations on an operating system, usually on multiple servers at once. They do so using code and configuration that is applied to different groups of servers. In some cases the Configuration Management tools are used to provision infrastructure, deploy applications, and manage the execution and configuration of various scripts.

Why use Configuration Management?

With the rise of Infrastructure-as-Code tools for provisioning infrastructure (such as Terraform), and Orchestration tools for running containers (such as Kubernetes), the need for Configuration Management decreased as it was used mostly to configure Operating Systems and provision resources.

However, there are still use-cases where companies manage the servers' Operating System directly, and they do so using Configuration Management tools.

A number of examples where managing the servers directly is required:

  1. Bare-Metal or On-Premise servers
    Can't provision infrastructure using Infrastructure-as-Code tools (such as Terraform), and can't use fully-managed services for orchestration such as Kubernetes.
    In such cases Configuration Management tools will be used to manage groups of servers, install the applications' dependencies & configuration, and perhaps even install an orchestration tool such as Kubernetes.
  2. Specific system requirements
    A given company might choose not to use an orchestration tool as a result of specific system requirements.
    An example would be a company that provides an SDK that communicates with the company's servers, and is implemented in clients' apps and systems, with a requirement by the clients that the SDK takes less than 5ms to respond.
    In that case the networking toll orchestration systems like Kubernetes have on every request will be unacceptable, and so that company will be forced to optimize for a very simple network topology with minimal "hops" between different parts of the system.

There is also the case where companies started with Configuration Management as their main way of building a platform for the developers, and the coupling to the Configuration Management tool became too complicated to be worth "untangling" in the short-term or even mid-term.