GitOps: mais um termo da moda ou uma revolução na automação?

GitOps: mais um termo da moda ou uma revolução na automação?

A maioria de nós, ao notar mais um novo termo na blogosfera de TI ou em conferências, mais cedo ou mais tarde se pergunta: “O que é isso? Uma palavra da moda, um 'buzzword' ou realmente algo que merece atenção, estudo e promete novos horizontes?” O mesmo aconteceu comigo com o termo GitOps há algum tempo. Armado com uma série de artigos já existentes, bem como o conhecimento de colegas da empresa GitLab, tentei entender o que é essa novidade e como sua aplicação pode se parecer na prática.

Aliás, a novidade do termo GitOps também é destacada em uma pesquisa recente que realizamos: mais da metade dos entrevistados ainda não começou a trabalhar com seus princípios.

Então, o problema da gestão de infraestrutura não é novo. Muitos provedores de nuvem estão disponíveis ao público há mais de uma década e, aparentemente, já deveriam ter tornado o trabalho das equipes responsáveis pela infraestrutura mais simples e descomplicado. No entanto, ao compararmos com o processo de desenvolvimento de aplicações (onde o nível de automação atinge novos patamares), os projetos de infraestrutura ainda muitas vezes envolvem diversas tarefas manuais e requerem conhecimentos e especialistas especiais, especialmente considerando as atuais exigências de resiliência, flexibilidade, escalabilidade e elasticidade.

Os serviços de nuvem atenderam a essas exigências de forma muito eficaz e foram eles que impulsionaram significativamente o desenvolvimento da abordagem IaC. E faz sentido. Afinal, foi graças a eles que se tornou possível configurar um centro de dados totalmente virtual: não há servidores físicos, racks ou componentes de rede, toda a infraestrutura pode ser descrita usando scripts e arquivos de configuração.

Então, qual é, de fato, a diferença? GitOps de IaC? Именно с этого вопроса я и начал свое расследование. Пообщавшись с коллегами, у меня получилось выработать следующее сравнение:

GitOps

IaC

Todo o código é armazenado em um repositório git

A versionamento de código não é obrigatória

Descrição declarativa do código / Idempotência

Aceita tanto descrição declarativa quanto imperativa

As alterações entram em vigor utilizando mecanismos de Merge Request / Pull Request

A aprovação, validação e colaboração são opcionais

O processo de implantação de atualizações é automatizado

O processo de implantação de atualizações não é padronizado (automático, manual, cópia de arquivos, uso de linha de comando, etc.)

Em outras palavras, GitOps surgiu exatamente graças à aplicação dos princípios IaC. Primeiro, a infraestrutura e as configurações agora podem ser armazenadas da mesma forma que os aplicativos. O código é fácil de armazenar, compartilhar, comparar e aproveitar as funcionalidades de versionamento. Versões, branches, histórico. E tudo isso em um local acessível a toda a equipe. Portanto, era uma evolução natural a utilização de sistemas de controle de versão, especialmente o git, que é o mais popular.

Por outro lado, surgiu a possibilidade de automatizar os processos de gerenciamento da infraestrutura. Agora isso pode ser feito de forma mais rápida, confiável e barata. Além disso, os princípios de CI / CD já eram conhecidos e populares entre os desenvolvedores de software. Era necessário apenas transferir e aplicar os conhecimentos e habilidades já conhecidas a uma nova área. No entanto, essas práticas ultrapassavam a definição padrão de Infraestrutura como Código, daí surgiu o conceito GitOps.

GitOps: mais um termo da moda ou uma revolução na automação?

Curiosidade GitOps, claro, está no fato de que não é um produto, plugin ou plataforma ligada a qualquer fornecedor. É mais uma paradigmática e um conjunto de princípios, análogo a outro termo familiar: DevOps.

Na empresa GitLab elaboramos duas definições desse novo termo: teórica e prática. Começaremos pela teórica:

GitOps é uma metodologia que utiliza os princípios avançados de DevOps, aplicados ao desenvolvimento de aplicativos, como controle de versão, colaboração, conformidade, CI/CD, e os aplica para resolver questões de automação na gestão da infraestrutura.

Todos os processos GitOps operam utilizando as ferramentas já existentes. Todo o código de infraestrutura é armazenado em um repositório git já conhecido, as mudanças passam pelo mesmo processo de conformidade que qualquer outro código de software, e o processo de implantação é automatizado, o que minimiza os erros humanos, aumenta a confiabilidade e a reprodutibilidade.

Sob a perspectiva prática, descrevemos GitOps da seguinte forma:

GitOps: mais um termo da moda ou uma revolução na automação?

Infraestrutura como Código já discutimos, como uma das principais componentes desta fórmula. Vamos imaginar os demais participantes.

Merge Request (nome alternativo para Pull Request). No que diz respeito ao processo de MR, é uma solicitação para aplicar alterações de código e o subsequente mesclagem de ramificações. Mas, em termos de ferramentas que usamos, é mais sobre a possibilidade de obter uma visão completa de todas as mudanças realizadas: não apenas a diferença de código compilada a partir de um número de commits, mas também o contexto, resultados dos testes e o resultado final esperado. Se falamos sobre código de infraestrutura, é importante entender como exatamente a infraestrutura mudará, quantos novos recursos serão adicionados ou removidos, alterados. Preferencialmente em um formato mais conveniente e legível. No caso dos provedores de nuvem, seria bom saber quais serão as consequências financeiras dessa mudança.

Mas MR também é uma ferramenta de colaboração, interação e comunicação. O local onde o sistema de pesos e contrapesos entra em ação. Desde comentários simples até aprovações formais e validações.

E a última parte: CI/CD, como já sabemos, permite automatizar o processo de implementação de mudanças na infraestrutura, testes (desde uma simples verificação de sintaxe até uma análise estática de código mais complexa). E também, na sequência, detectar drift: diferenças entre o estado real e o desejado do sistema. Por exemplo, como resultado de alterações manuais não autorizadas ou falhas do sistema.

Sim, o termo GitOps não nos apresenta nada absolutamente novo, não reinventa a roda, mas simplesmente aplica a experiência acumulada em uma nova área. Mas é exatamente isso que representa sua força.

E se você ficar interessado em como tudo isso se parece na prática, convido você a assistir ao nosso masterclass, onde explico passo a passo como, usando GitLab:

  • Implementar os princípios básicos do GitOps

  • Criar e fazer alterações na infraestrutura em nuvem (usando Yandex Cloud como exemplo)

  • Automatizar a detecção do drift do sistema em relação ao estado desejado por meio de monitoramento ativo

GitOps: mais um termo da moda ou uma revolução na automação?https://bit.ly/34tRpwZ

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster