Avançar para o conteúdo principal
BlogFerramentas de desenvolvimentoDeclarativo vs. Imperativo no IaC

Declarativo vs. Imperativo no IaC

Declarativo vs. Imperativo no IaC

A Infraestrutura como Código (IaC) é um paradigma importante para a previsão, configuração e implementação de um ambiente de TI. No modelo IaC, um sistema informático não é construido manualmente, é descrito num ficheiro utilizando uma linguagem especializada. Uma ferramenta automatizada lê o ficheiro e constrói o sistema em função das especificações do utilizador. A eficiência e a versatilidade de uma IaC fez dela um complemento popular para DevOps e para a revolução da computação cloud.

Várias plataformas suportam IaC, cada uma com muitas funcionalidades diferentes e benefícios. Quando começar a imaginar uma solução IaC, terá de considerar quais dessas funcionalidades estarão mais adequadas às suas necessidades. Uma questão importante a ter em consideração quando se comparam plataformas de automatização IaC é saber se a ferramenta suporta operações imperativas ou declarativas.

Os termos imperativo e declarativo aparecem frequentemente nas discussões sobre IaC. Ambos os termos referem-se à forma como o utilizador direciona a plataforma de automatização. Com uma ferramenta imperativa, define os passos a executar de modo a alcançar a solução desejada. Com uma ferramenta declarativa, define o estado desejado para a solução final e a plataforma de automatização determina a forma de alcançar tal estado.

Os sistemas imperativos são frequentemente mais fáceis de início. Pode dizer-se que um sistema imperativo é organizado de uma forma mais similar ao pensamento humano. Os sistemas imperativos permitem-lhe continuar a pensar sobre configuração enquanto uma série de ações ou etapas, em que cada uma se aproxima mais ao objetivo. Outro benefício da linguagem imperativa é o de que lhe permite automatizar configurações complexas e muito detalhadas ao construir camadas múltiplas de comandos. E, devido ao facto de um sistema imperativo dar ao utilizador mais controlo sobre como levar a cabo uma tarefa, é frequentemente mais eficiente e fácil de otimizar para uma finalidade específica que um sistema declarativo.

Com todas as vantagens das linguagens imperativas, irá perguntar, então qual é o motivo pelo, qual as linguagens declarativas estão tanto em voga. As ferramentas declarativas estão a ganhar popularidade desde há vários anos até agora e argumenta-se que são o formato dominante para a automatização de IaC. Uma razão para a popularidade das ferramentas declarativas é a de que exigem menos conhecimentos por parte do utilizador, pelo menos a partir do momento que entende a forma como funcionam.

Com uma ferramenta imperativa, o utilizador tem de ter conhecimentos suficientes para dizer à plataforma de automatização o que tem de fazer. Com um sistema declarativo, o utilizador necessita apenas definir o estado da configuração final e a plataforma determina a forma como chegar a tal configuração. A complexidade da execução passo-a-passo não é mostrada ao utilizador.

Outro benefício da linguagem declarativa é a de que é mais idempotente. O conceito de idempotência refere-se a um processo que pode ser executado várias vezes com o mesmo resultado. Pelo facto da linguagem declarativa apenas definir o estado final, termina-se sempre no mesmo sítio independentemente do sítio onde se começou. Por outro lado, uma linguagem imperativa concebe uma tarefa como uma série de etapas pré-definidas que pode conduzi-lo a um ponto final diferente dependendo do ponto de partida.

As principais plataformas de automatização de IaC ocupam vários espectros que vão do imperativo ao declarativo, contudo muitas ferramentas têm pelo menos alguma capacidade para suportar ambas as abordagens. Chef é de uma forma geral conhecida como uma ferramenta imperativa. Terraform e Puppet são consideradas declarativas. Ansible e Salt são sobretudo declarativas, mas disponibilizam algum suporte para comandos imperativos.

Terá muitos fatores a ter em consideração quando adquirir uma plataforma de automatização IaC. A escolha de imperativo versus declarativo é apenas um critério numa grande matriz de opções. Contudo, quando iniciar o design do seu ambiente IaC futuro, é importante despender algum tempo para determinar o que melhor se adequa à sua organização, uma solução imperativa ou declarativa.


Comentários

Deixe uma resposta

O seu endereço de correio electrónico não será publicado. Os campos obrigatórios estão marcados com *