Processos e cultura são importantes na transformação digital, porém algumas práticas técnicas devem ser seriamente consideradas, pensando também em uma Cultura DevOps. Neste artigo abordarei quais são estas práticas.
Como a Transformação Digital e DevOps são abordados pelo mercado muitas vezes
Transformação digital, além de mudanças e readequação de processos e cultura, envolve também boas e consolidadas práticas tecnológicas.
Porém venho observando que o mercado está muito focado em métodos, frameworks, soft-skills e vem deixando de lado algumas práticas que são premissas para realmente termos transformações digitais.
Utilizando um jargão muito conhecido por profissionais de tecnologia, este artigo será sobre “escovar bits e bytes” e entender conceitos básicos de DevOps.
DevOps – Vamos às cinco práticas:
1) Desenvolvimento orientado à testes
Prática também conhecida como TDD (Test-Driven Development, em Inglês), oriunda da metodologia Extreme Programming, também conhecida como XP.
Nesta prática, o desenvolvedor de software migra de uma abordagem que consiste em desenvolver grandes lotes de código para depois testá-los, o que pode aumentar a chance de maiores bugs e defeitos no produto para uma abordagem onde:
- Define-se o teste a ser realizado
- Desenvolve-se o código de teste, que deve falhar
- Desenvolve-se o código suficiente e necessário para o teste passar
- Executa-se novamente o código de teste
- Em caso de falha, deve-se revisitar o código
- Em caso de sucesso, deve-se ajustar o código deixando-o “limpo” (Clean Code) para seja de fácil compreensão e manutenção.
Algumas ferramentas existentes para o apoio no Desenvolvimento orientado a testes são: JUnit, PHPUnit, NUnit, CUnit, PyUnit, SimpleTest, entre outras.
2) Automação de testes
Um dos princípios fundamentais do Sistema Toyota de Produção, consolidadas na abordagem Lean, é separar o trabalho das máquinas do trabalho dos humanos.
Quando falamos de soluções digitais, os humanos são fundamentais na ideação e desenvolvimento. Porém os códigos de testes construídos na prática de Desenvolvimento Orientado à Testes, uma vez consolidados, devem ser automatizados e não mais serem executados pelas pessoas que desenvolveram.
Dentre as ferramentas mais conhecidas de automação de testes, temos o Selenium e o Cucumber.
3) Arquitetura de microsserviços
Para que as duas práticas anteriores funcionem adequadamente é crucial que a solução digital seja construída através de microsserviços.
Microsserviços é uma abordagem de decomposição da solução em componentes mínimos, independentes e que podem ser testados isoladamente.
Diferente das chamadas “soluções monolíticas”, onde todo o código é desenvolvido em um único bloco, gerando complexidade de manutenção, entendimento e o chamado “acoplamento”, onde uma simples mudança pode impactar toda a solução.
4) Integração Contínua
Integração contínua é um processo automatizado que verifica se um determinado código desenvolvido pode ser “efetivado” ou não.
No geral as ferramentas de integração contínua são programadas para executar passos que verificam o impacto do código desenvolvido na solução como um todo. Estes passos podem ser:
- Execução dos testes unitários automatizados
- Verificação se o código atende padrões de boas práticas (Clean Code)
- Execução de testes integrados automatizados
- Execução de testes de regressão
- Verificação de conflitos de versionamento de código
5) Entrega Contínua / DevOps
A cada dia que passa, as demandas e necessidades dos clientes que consomem soluções digitais estão aumentando exponencialmente.
Isto faz com que a frequência dos lançamentos de versões atualizadas das soluções seja cada vez maior e, para isto, as empresas devem possuir uma estrutura que permita um fluxo automatizado de entrega contínua.
O fluxo de entrega contínua, também chamado de pipeline, é uma consequência dos quatro passos anteriores e uma base fundamental para uma Transformação Digital plena e o que caracteriza o que se chama de Cultura DevOps.
Conclusão
Estes passos não devem ser negligenciados e devem ser trabalhados em conjunto com processos e cultura, afinal de contas Transformação Digital tem relação direta com excelência técnica e tecnológica.
Caso você tenha interesse em se aprofundar nos assuntos abordados neste artigo, recomendo a leitura dos livros:
- Desenvolvimento Guiado Por Testes – Kent Beck
- O Projeto Phoenix – Gene Kim, Kevin Behr, George Spafford
- Entrega Contínua – Jez Humble, David Farley
- Manual de DevOps – Jez Humble, John Willis, Gene Kim, Patrick Debois