Todos os profissionais (sejam de TI ou de qualquer outra área) irão passar por três grandes fases em suas carreiras: a formação (quando eles definem as competências & habilidades necessárias para o sucesso, de acordo com o seu perfil profissional), o amadurecimento (quando eles buscam o aperfeiçoamento necessário para se tornarem melhores e mais qualificados) e a transformação (quando eles começam a promover mudanças em seu perfil profissional, para se adequarem as novas realidades ou desafios). Quanto a mim, confesso que estou transitando entre o amadurecimento e a transformação…
“Although most of the software development lifecycle is now automated, infrastructure continues to be a largely manual process requiring specialized teams. Yet with infrastructure demands rapidly growing, more organizations now look toward automation for help. GitOps uses Git project repositories as the single source of truth for managing application configuration and deployment information, says Elliot Peele, senior manager of software development at analytics software provider SAS…”
— by Information Week.
Por isto, tenho voltado as minhas atenções para a área de desenvolvimento e de serviços, em vista das exigências das Redes Definidas por Softwares (SDN) e da Computação em Nuvem, buscando desenvolver as competências & habilidades exigidas por estas demandas. Neste meio-tempo, conheci uma série de novos conceitos e padrões, os quais geralmente recebem diversas siglas “pomposas” para representá-los da melhor maneira possível. Eis o GitOps, uma nova metodologia que consiste em aplicar os conceitos de DevOps em desenvolvimento de softwares, para a gestão automatizada das infraestruturas através de código (IaaC).
John Edwards (editor do portal Information Week) publicou um belo artigo sobre o uso da metodologia GitOps, com ênfase na utilização do repositório de projetos Git e as práticas já consagradas da metodologia DevOps (daí, o seu nome). Em sua visão, a gestão e o provisionamento da infraestrutura deveriam ser executados de forma automatizada e não manual, tal como vinha sendo feito tradicionalmente há anos e para isto, podemos contar com a utilização de scripts ou templates declarativos, os quais irão definir os recursos que serão utilizados para rodar as aplicações e os serviços desejados. Tudo isto, de forma consistente, automatizada e previsível, através dos recursos oferecidos pelo Git!
As vantagens são inúmeras: além de estabelecer as bases para uma boa gestão da infraestrutura, o GitOPs também promove o mesmo nível de controle e automação que os desenvolvedores já desfrutam há anos, além de reduzir os erros manuais, permitir uma maior frequência de implantação e melhorar a confiabilidade de todo o sistema. Tal como o DevOps, o GitOps também irá promover uma colaboração mais próxima entre as equipes de desenvolvimento e de operações, já que ambos irão utilizar a mesma base de repositórios Git para gerenciar a codificação dos aplicativos e as definições de recursos da infraestrutura, necessárias para o seu funcionamento.
Embora a gestão da infraestrutura como código não seja algo relativamente novo e provedores de serviços na nuvem já ofereçam serviços para isto, como o AWS CloudFormation e outros equivalentes, na prática confesso que eu via estes dois grupos de profissionais (infraestrutura e desenvolvimento) como entidades distintas e por isto, não interagiam entre si para estabelecer os requisitos que as aplicações e serviços necessitam para rodar. Por isto, a combinação das práticas DevOps já conhecidas e consagradas, com os recursos oferecidos pela ferramenta Git para a gestão do código e o estabelecimento de uma base de repositórios, certamente irá facilitar muito o trabalho dos profissionais envolvidos!
Para variar, ainda teremos o AIOps inserido dentro deste contexto… &;-D