O que é Infraestrutura Ágil

Por que você deve 'versionar' sua infraestrutura de TI como um Código ?

O conceito "agile" nasceu na área de desenvolvimento de software pois ela está mais perto da área de negócios que pede uma nova funcionalidade a cada momento para atender a demanda do mercado. Para atender bem a área de negócios que quer novidades a todo momento a área de desenvolvimento de software foi se aprimorando para isso. Do outro lado, a área de operações de TI quer o mínimo de alteração possível na infraestrutura, pois cada nova alteração no ambiente de produção gera um novo ponto de instabilidade e na maioria das vezes de difícil identificação. Se o desenvolvimento de software é ágil para atender a demanda do negócio a infraestrutura também tem que ser. A boa notícia é que se você utilizar os conceitos de "agile" em sua infraestrutura de TI e quiser trata-la como um código (software), já existem bons softwares livres que permitem isso.

Os métodos ágeis fizeram a área de desenvolvimento de software evoluir muito, através do desenvolvimento de softwares baseados em testes, garantindo entregas contínuas. Da mesma forma que este processo foi essencial para esta área, é fundamental estabelecer padrões que tornem sua infraestrutura ágil e possibilitem a evolução dos SysAdmin para a era DevOps.

Muitas vezes as equipes de desenvolvimento e operações das empresas estão em unidades corporativas separadas. Isso nos traz um dos problemas mais desafiadores no desenvolvimento de software em momentos em que é necessário corrigir instâncias ou realizar acionamentos para a equipe de operações. Isso ocorre porque, em geral, o ambiente leva horas, dias ou até semanas para ser configurado, o que vai na contramão das práticas DevOps.

Conheça algumas técnicas para tornar sua infraestrutura ágil seguindo as práticas DevOps

  • Ambientes Automatizados

Automação de infraestrutura é o processo de criar scripts, desde a instalação de um sistema operacional até a instalação e configuração de serviços. Este processo também atende por outros nomes como gerenciamento de configuração ou gerenciamento de TI. Ferramentas como Puppet e Ansible ajudam o SysAdmin a manter tudo automatizado.

Automatizando a implementação e gerenciamento dos ambientes, reduz-se os riscos de erros de execução, além de garantir a padronização. Seguindo a premissa de que nada será modificado em produção a menos que seja através de um script (manifest, playbook, scripts em python, etc) que estará versionado e faz parte de um caminho único (pipeline de entrega) até chegar na produção, certamente sua gestão de TI será mais padronizada e menos sujeita a riscos.

  • Infraestrutura com Testes​

Uma das consequências positivas de se automatizar a infraestrutura de TI é a possibilidade de configurá-la baseando-se em testes funcionais, ou seja, antes de colocar algum serviço em produção ou até mesmo realizar alterações, são executados testes para garantir que aquela alteração não impactará  o serviço ou a continuidade do negócio.

Uma infraestrutura acionada por testes resulta em problemas que aparecem antes de entrar em produção, porque as mudanças na infraestrutura são integradas a testes por meio de um sistema de integração contínua como o Jenkins, por exemplo.

  • Controle de Versão

Com sistemas de controle de versão como o GIT, é possível definir a infraestrutura como código da mesma forma que você faz com seus arquivos de software.

O controle de versão é um sistema que registra as mudanças feitas em um arquivo ou um conjunto de arquivos ao longo do tempo de forma que você possa recuperar versões específicas. Um dos pré-requisitos para ser possível a criação de todas as "versões de sua infraestrutura" é a automatização da infraestrutura.

Imagine que toda a sua infraestrutura esteja baseada em manifests do Puppet e em Playbooks do Ansible! Neste caso, bastaria "commitar" todas essas configurações no Git e você teria uma garantia de que tudo está sendo versionado e rastreável!

  • Ambientes Temporários

Em economia, escassez de recurso é um problema de grandes dimensões, pois frequentemente nos deparamos com situações em que as necessidades são maiores que os recursos que, de fato, temos disponíveis. A boa notícia é que a virtualização e a computação em nuvem auxiliam a reduzir essa busca por mais recursos, principalmente se a Infraestrutura estiver preparada para trabalhar com ambientes temporários, em que ambientes “nascem e morrem” de acordo com a necessidade.

O ideal é que todos os ambientes sejam temporários, ou seja, os ambientes que não são de produção duram o mínimo possível, trazendo não só uma redução de custos, mas principalmente um controle absoluto da infraestrutura, pois esses ambientes existirão apenas para executar um conjunto de testes automatizados antes de uma nova implementação entrar em produção e terão um fim assim que todos os testes forem validados e for realizado o "deploy" em produção.

Uma alternativa para ambientes temporários é usar containers em Docker para todo o ambiente de desenvolvimento e homologação. O Docker é uma plataforma aberta que pode ser usada por desenvolvedores e administradores de sistemas para construir, executar e distribuir "máquinas". Dessa forma, é possível ter uma melhor utilização de recursos, pois ao finalizar o uso de ambientes que não estão mais sendo utilizados, há liberação de capacidade para outras utilidades.

  • Pipeline de Entrega

Pipeline de entrega é um processo no qual diversos tipos de tarefas são executadas com base no sucesso da tarefa anterior, ou seja, um fluxo. Com um servidor de integração contínua como o Jenkins, é possível configurar um pipeline de entrega para definir uma sequência de ações que precisam ser feitas para uma determinada configuração entrar em produção, como também criar dependências em que, por exemplo, havendo erro nos testes em ambiente de homologação, nada é alterado em produção.

Essa abordagem garante a redução dos riscos, pois cria-se uma pipeline que irá validar todas as etapas para que uma nova implementação ou uma alteração, entre em produção.

  • ​Monitoramento

É fato que só conhecemos nosso ambiente com Monitoração! A implantação da Monitoração deve ser uma das primeiras preocupações de um SysAdmin. Ela tem que nascer junto com o ambiente, assim, na medida em que o ambiente cresce existe a garantia de que tudo está sendo monitorado.

Um monitoramento eficaz é aquele que visa a continuidade do negócio, que monitora os SLA’s de disponibilidades, que gera dependências entre ativos monitorados para reduzir os falsos positivos, que ajusta métricas e eventos conforme a necessidade de cada ambiente dentro de uma empresa e que vai além de monitorar métricas físicas e lógicas, mas foca na experiência do usuário fazendo simulações de acessos a aplicações como, por exemplo, contabilizar o tempo que demora para acessar uma aplicação ou site. Uma ferramenta OpenSource que possui uma gama de recursos para se realizar o monitoramento completo de uma infraestrutura é o Zabbix.

Conclusão

A novidade é que os SysAdmins precisam transformar a infraestrutura que gerenciam em um projeto de desenvolvimento de software. Essa transformação possibilitada por uma convergência de automação, ferramentas, colaboração e melhores práticas, irá possibilitar cada vez mais que a entrega de novos softwares e versões dos aplicativos torne-se mais rápida, melhor e mais barata sem infringir a estabilidade do ambiente de produção que é o maior desafio da área de operações.

Conheça a 4DevOps. 4DevOps é a unidade de serviços da 4linux especializado em serviços de consultoria para o mundo DevOps e Cloud. Nele você vai encontrar em detalhes os serviços da 4Linux para o mundo DevOps e também poderá baixar gratuitamente o e-book ‘4 DevOps em 3 fases’.

Consultoria Infra Ágil Curso Infra Ágil E-book grátis