Pular para o conteúdo principal
BlogFerramentas para desenvolvedoresDeclarativo vs. Imperativo no IaC

Declarativo vs. Imperativo no IaC

Declarativo vs. Imperativo no IaC

Infra-estrutura como Código (IaC) é um paradigma poderoso para prever, configurar e implantar um ambiente de TI. No modelo IaC, um sistema de computador não é construído manualmente, mas é descrito em um arquivo usando uma linguagem especializada. Uma ferramenta de automação então lê o arquivo e constrói o sistema de acordo com as especificações do usuário. A eficiência e a versatilidade do IaC fizeram dele um complemento popular do DevOps e da revolução da computação em nuvem.

Várias plataformas de automação suportam o IaC, cada uma com muitas características e benefícios diferentes. Quando você começar a imaginar uma solução IaC, você precisará considerar qual dessas características funcionará melhor para suas necessidades. Uma consideração importante a ter em mente ao comparar as plataformas de automação IaC é se a ferramenta suporta operações imperativas ou declarativas.

Os termos imperativos e declarativos surgem freqüentemente nas discussões da IAC. Ambos os termos referem-se à forma como o usuário fornece a direção para a plataforma de automação. Com uma ferramenta imperativa, o usuário define os passos a serem executados a fim de alcançar a solução desejada. Com uma ferramenta declarativa, o usuário define o estado desejado da solução final, e a plataforma de automação determina como alcançar esse estado.

Os sistemas imperativos são muitas vezes inicialmente mais fáceis. Pode-se dizer que um sistema imperativo é organizado mais como um ser humano pensa. Os sistemas imperativos permitem que você continue pensando na configuração como uma série de ações ou passos, cada um aproximando você do objetivo. Outro benefício da linguagem imperativa é que ela permite que você automatize configurações muito detalhadas e complexas através da construção de múltiplas camadas de comandos. E, como um sistema imperativo dá ao usuário mais controle sobre como realizar uma tarefa, muitas vezes é mais eficiente e fácil de otimizar para um propósito específico do que um sistema declarativo.

Com todas as vantagens dos idiomas imperativos, você pode estar se perguntando por que os idiomas declarativos estão tão em voga. As ferramentas declarativas vêm ganhando popularidade há vários anos e, sem dúvida, são o formato dominante para a automação do IaC. Uma razão para a popularidade das ferramentas declarativas é que elas requerem menos conhecimento da parte do usuário, pelo menos uma vez que você entenda como elas funcionam.

Com uma ferramenta imperativa, o usuário deve ter conhecimento suficiente para dizer à plataforma de automação o que fazer. Com um sistema declarativo, o usuário só precisa definir o estado da configuração final, e a plataforma determina como chegar lá. A complexidade da execução passo a passo é escondida do usuário.

Outro benefício de uma linguagem declarativa é que ela é mais idempotente. O conceito de idempotência se refere a um processo que pode ser executado várias vezes com o mesmo resultado. Como uma linguagem declarativa apenas define o estado final, você sempre acaba no mesmo lugar, não importa por onde você comece. Por outro lado, uma linguagem imperativa prevê uma tarefa como uma série de etapas pré-definidas que poderiam levá-lo a um ponto final diferente, dependendo do ponto de partida.

As principais plataformas de automação IaC ocupam vários lugares no espectro desde o imperativo até o declarativo, embora muitas ferramentas tenham pelo menos alguma capacidade para suportar ambas as abordagens. O chef é geralmente conhecido como uma ferramenta imperativa. Terraform e Puppet são considerados declarativos. Ansible e Salt são em sua maioria declarativos, mas oferecem algum apoio aos comandos imperativos.

Você terá muitos fatores a considerar quando você comprar uma plataforma de automação IaC. A escolha de imperativo versus declarativo é apenas um critério em uma matriz maior de opções. Entretanto, quando você começar a projetar seu futuro ambiente IaC, é importante passar algum tempo visualizando se uma solução imperativa ou declarativa seria mais adequada para sua organização.


Comentários

Deixe uma resposta

Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados com *