O que é Gerenciamento de Configuração?

No contexto de desenvolvimento de software e CI/CD, gerenciamento de configuração refere-se ao registro dos detalhes de uma configuração de infraestrutura específica, para que você possa identificar quando alterações foram introduzidas.

Um pipeline de CI/CD inclui vários ambientes para teste e software de preparação antes do lançamento. Para que o pipeline e os testes operem com eficácia, os ambientes de pré-produção precisam replicar a produção o mais próximo possível e permanecer consistentes entre as passagens de testes.

Para conseguir isso, você pode configurar uma série de máquinas físicas ou virtuais para hospedar esses ambientes. Com o tempo, entretanto, conforme patches são aplicados, novos pacotes são instalados ou configurações de rede são modificadas para solucionar problemas específicos, esses servidores começam a se desviar da configuração original de diferentes maneiras.

O resultado é uma sucessão de servidores Snowflake. Pior ainda, suponha que os detalhes de cada alteração não estejam registrados em algum lugar. Nesse caso, torna-se muito mais difícil recriar o mesmo ambiente quando um servidor falha ou precisa ser replicado para dimensionar suas operações de teste. O gerenciamento de configuração procura resolver esse problema.

Armazenar detalhes de configuração no seu sistema de controle de versão fornece visibilidade de quaisquer alterações, tornando mais fácil desfazê-las se algo der errado e aplicar as mesmas alterações em outras máquinas, mantendo assim a consistência.

Se esses detalhes de configuração forem armazenados em um formato estruturado, como um arquivo YAML ou XML, você poderá levar o gerenciamento de configuração um passo adiante e automatizar a configuração de servidores .

Depois que as alterações são confirmadas para o controle de versão, elas são aplicadas automaticamente aos ambientes relevantes.

Adotar uma abordagem de infraestrutura como código torna possível desmontar e recriar máquinas virtuais automaticamente, para que você possa configurar seu pipeline de CI/CD para atualizar os ambientes entre implantações. Isso possibilita lidar com um grande número de máquinas e permite replicar ambientes facilmente quando a demanda por testes aumenta.

Se você estiver usando contêineres para implantar seu software, alguns elementos de configuração, como dependências de softwares, serão movidos para a imagem do contêiner. No entanto, permanece a necessidade de configurar os servidores que hospedam seus contêineres. Ainda há muitos benefícios a serem obtidos com a codificação e automatização da criação desses ambientes.