Após muito tempo atuando com métodos ágeis, venho me deparando com o crescente cenário de DevOps nas operações e clientes que tenho contato. Empresas de todos os tamanhos estão conseguindo evoluir de forma constante a adoção dessa nova forma de pensar, afinal as \"promessas\" desse modelo são muito atraentes, dentre elas:
- Integração entre a equipe de Infraestrutura e Desenvolvimento.
- Maior velocidade na geração e implantação de novas versões da sua aplicação. Podendo inclusive serem realizadas diversas vezes ao dia.
- Automação nos testes da aplicação, reduzindo o tempo de investimento em validação de sistemas e testes de regressão.
- Redução nos custos de retrabalho e atividades manuais.
- Automação da infraestrutura e criação de novos ambientes.
Fico muito feliz com esta evolução e interesse das empresas em seguir por esta linha, afinal os resultados de aplicar este tipo de pensamento é algo que a curto prazo já trás bons resultados.
Porém, não é algo simples. Não é algo que apenas o ferramental vai resolver os seus problemas (como muitas vezes vejo esse pensamento). Não é algo que você vai conseguir implantar sozinho. Não é algo que você conseguirá sem apoio da alta gestão. Não é algo que você precisa investir em licenças para ter retorno. Não é algo que você irá implantar sem esforço e capacitação.
Mas como podemos começar?
Aqui vai minha contribuição para os colegas que querem seguir por essa linha: dicas simples e sem rodeios.
1. Aprenda a trabalhar com ágil primeiro: Se sua equipe demora meses para gerar uma nova versão da aplicação, DevOps não é um problema para você ainda. Implante metodologias ágeis primeiro e capacite sua equipe. Faça entregas pequenas e constantes. Somente depois disso pense em DevOps, você tem bastante coisa para evoluir antes no seu time de desenvolvimento.
2. Integração Contínua: Essa é a forma mais simples de mostrar valor no DevOps. Gerar versões de forma rápida, automatizada e sem a necessidade de grandes documentos chamados \"Planos de Implantação\". Primeiro: automatize versões para o ambiente de Dev. Depois: para o ambiente de Testes/QA.
Por último, vá para Produção, e apenas depois que tanto o time de infra como desenvolvimento estiverem convencidos que os scripts de automação estão funcionando perfeitamente. Sugiro o uso do Jenkins, é simples, gratuito e fácil de implantar.
3. Busque apoio da alta gestão: Será necessário \"mexer no queijo\" de muitas pessoas para o DevOps rodar de verdade. Se não existir apoio, você irá esbarrar em grandes muros e resistências.
4. Controle de Versões: Se eu posso opinar: adote Git. Se não é possível, utilize aquele que melhor se adaptar para o seu cenário ou que o time está acostumado. Organize bem o seu controle de versões, faça uso dos branches.
Implante gestão de configuração. Isso é importante, afinal as versões serão geradas automaticamente, e o controle de versões precisa estar organizado! Não adianta gerar versões de forma rápida, para branches que não funcionam ou que tem funcionalidades faltando.
5. Testes Automatizados: Você vai precisar, e MUITO! E são testes automatizados de todos os tipos: interface, performance, integrados, etc. Como você vai gerar versões diversas vezes ao dia, se sua equipe precisa de 1 semana (ou mais) para garantir que a aplicação está estável? Estude sobre TDD. Comece com Testes Unitários (JUnit, NUnit, etc..)
6. Baby Steps: Vá com calma. Quando começamos a aplicar e estudar DevOps vemos que existem diversas soluções. Centenas de ferramentas. Se você tentar implantar tudo de uma vez, não vai funcionar. Comece por aquilo que gera mais problemas para sua empresa, ou que tem um grande tempo manual e repetitivo de execução.
7. Automatize o seu banco de dados: Gosto muito da ferramenta FlyWay. Estude sobre esse tema, irá trazer grandes vantagens para sua operação. Trata-se de uma solução que vai gerenciar os scripts para você, controlando o que já foi executado ou não em cada ambiente/banco de dados. Perfeito para Jobs de integração contínua.
8. Versione seus ambientes: Estude sobre Vagrant e Docker. Muitas equipes estão adotando e funciona muito bem. Excelente para ganhar tempo na montagem de ambientes, ou para simular configurações iguais a de produção.
9. Não monte uma \"equipe DevOps\": Isso não existe. DevOps não é um cargo, tão pouco um setor ou departamento, é uma cultura. O que você precisa são de facilitadores que vão guiar o restante da equipe nessa linha.
10. Automatize o peer review. Adote o SonarQube. Você não irá precisar \"parar\" um profissional da sua equipe para revisar o código desenvolvido por outro desenvolvedor. Com o uso do Sonar, você saberá que as boas práticas de desenvolvimento estão sendo seguidas.
Por fim, montei abaixo um modelo para sugerir aos colegas o que seria um primeiro formato interessante de integração contínua e métodos ágeis para começar:
É possível criar uma solução mais completa do que esta sugerida? Sem dúvida que sim.
Mas lembre-se: baby steps sempre. Apresente valor para cada pequena vitória e resultado que você obter, pois desta maneira o DevOps irá crescer naturalmente na empresa.
Aventure-se.
* Mateus Trasel Dias é gerente de projetos na Stefanini. Esse artigo foi publicado originalmente no LinkedIn.