O que é infraestrutura ágil ? Como ela pode facilitar seu trabalho ?
Com as demandas do mercado pedindo sempre alteração mais rápida e eficiente os times de Dev acabam adotando práticas ágeis para conseguir atender essa necessidade. Porém para conseguirmos colocar um sistema em produção, nós precisamos da infraestrutura que hospedará esse novo sistema. E aí começam alguns conflitos com a equipe de Operações (Ops).
A área de operações não quer que o ambiente fique alterando a todo momento. Cada alteração no ambiente como: adicionar um novo servidor, reconfigurar algum componente, configurar uma nova porta de comunicação, traz um possível ponto de falha, podendo gerar instabilidade e com isso derrubando alguma aplicação ou servidor. E um dos principais objetivos da equipe de operações é justamente manter o ambiente ativo e sem problemas.
E aí, como faz para conseguir atender a demanda de alteração requisitada pelo mercado ? É aí que entra o modelo de infraestrutura ágil.
Os métodos ágeis possibilitaram a equipe de desenvolvimento a evoluir muito utilizando técnicas que vão garantir a qualidade do sistema como por exemplo testes, CI e CD. São exatamente esses mesmos processos que devem ser aplicados na área de infraestrutura para conseguirmos ter a velocidade imposta pelo mercado e diminuir o risco de trazer instalabilidade para o ambiente a cada alteração e com isso transformando nossa infraestrutura padrão em uma infraestrutura ágil.
Infraestrutura ágil é poder fazer as alterações demandadass de forma rápida e eficiente e com isso responder rápido as novas necessidades trazidas pelo mercado.
E como podemos fazer isso ?
O primeiro passo é transformar a infraestrutura em código. E para isso, precisamos criar scirpts que vão criar as nossas imagens das máquinas virtuais, scripts de configuração da dessas máquinas. Atualmente nós possuímos várias ferramentas que nos facilitam esse trabalho, por exemplo o Packer, Terraform, Ansibele, Chef, Pupet, entre outras ferramentas.
Transformando a nossa infra em código, nós conseguimos ter o benefício de poder usar o versionador de código e com isso já temos uma rastreabilidade do que foi alterado no nosso ambiente, servindo como evidências para auditorias. Através da análise do histórico do código-fonte nós conseguimos analisar e ver exatamente o que foi introduzido naquela mudança específica.
Automatizando a criação dos ambientes, nós conseguimos reduzir erros de execução como por exemplo, esquecer de alguma configuração importante para o ambiente da aplicação. Sabendo que as alterações em produção, ou qualquer ambiente, serão feitas apenas através de scripts, nós conseguimos implementar um modelo de instalção e configuração de ambientes padronizados.
Outra vantagem é poder testar a infraestrutura e ver se ela está respondendo as expectativas que a aplicação necessita sem impactar o que já estava configurado. Como a nossa infra virou código, ela precisa passar pelas melhores práticas de desenvolvimento e uma das melhores para garantir a qualidade e constância é através da execução de testes em cima do estado que estamos descrevendo nos nossos scripts. Isso vai nos garantir que antes de colocar algum serviço novo em produção, nós vamos executar uma bateria de testes no ambiente que validará se a alteração afetou alguma coisa ou não da nossa infraestrutura.
Da mesma forma que fazemos com o código, nós precisamos ter um pipeline de execução. Com esse modelo nós conseguimos reduzir riscos de alterações, pois eles vão passar por vários ambientes e serão executados testes para validação e só depois ir para o ambiente em produção. O pipeline nos permite colocar aprovações e validações que permitem que só iniciemos o próximo estágio se alguém aprovar ou alguma informação for verdadeira, como por exemplo não possuir nenhum alerta da sua ferramenta de monitoramento.
Com o versionamento e a automatização através de um pipeline nós conseguimos melhorar e muito a auditoria sabendo quem fez o que, quando, porquê (através do comentário), quem aprovou a subida para produção e quando foi ela.
Com o modelo de infraestrutura ágil, nós conseguimos trazer a equipe de operações para um novo patamar, onde não teremos mais medo de fazer alterações pois sabemos que teremos vários controles e testes que serão executados para garantir que essa alteração não afete o ambiente.
Espero que tenha gostado e se tiver alguma dúvida específica me manda um e-mail ou deixe nos comentários.
Até a próxima, Claudio Romão
-
Tags:
- DevOps
- Azure
- Infraestrutura
- Infra Agil
- Git
30/01/2020 | Por Claudio Romão | Em Técnico | Tempo de leitura: 4 mins.