A metodologia Dev (Desenvolvimento) + Ops (Operações) visa integrar estas duas áreas de TI com foco em melhorar a execução e confiabilidade da entrega de produtos e serviços.
Sair do desenvolvimento tradicional e aderir ao DevOps gera uma grande mudança organizacional. Por conta disso, antes de adotar esta metodologia, é necessário saber que este é um processo colaborativo e que depende de uma evolução constante. Para iniciar, será necessário ter um especialista responsável pela condução da metodologia, conhecer bem seu time e do apoio da liderança para que o aculturamento dê certo.
Neste conteúdo, abordarei os detalhes de cada um dos passos que precisão ser dados para ter sucesso nesta transformação:
- Entender o ciclo de vida DevOps
- Planejamento
- Focar em aculturamento
- Aderir a ferramentas para facilitar o processo
Ciclo de vida DevOps
As práticas contínuas que formam o ciclo de vida DevOps são representadas através de fases, e é primordial que cada fase do processo seja executada de forma colaborativa para que se obtenham os resultados desejados.
- Planejamento
Nesta fase, as equipes definem metas e organizam as entregas em iterações curtas e de valor, visando aumentar a velocidade e confiabilidade da entrega.
Os objetivos durante o planejamento são de alto e baixo nível, e visam ter uma clareza das funcionalidades que podem ser entregues na próxima release, visão de dependências, bugs a serem corrigidos, padrões de qualidade, entre outros.
É essencial uma abordagem de metodologia ágil, ferramentas de planejamento e colaboração de projeto para esta etapa.
- Desenvolvimento
Com as já metas definidas, o desenvolvimento também precisa ser conduzido de forma ágil, tendo entregas contínuas durante a release. É essencial fazer uso de ferramentas de controle de versão para garantir o monitoramento das versões.
- Testes
Durante o ciclo do DevOps, os testes devem ser constantemente incrementados e automatizados a fim de aumentar a confiabilidade do software desenvolvido e garantir uma maior cobertura das funcionalidades.
A importância dos testes não contempla somente a mitigação de falhas, pois existem diversos tipos de testes que podem ser realizados para garantir uma melhor funcionalidade do software. Eles são:
- Testes de Ponta a ponta (E2E): responsáveis por abranger um fluxo como um todo;
- Testes de unidade: responsável por uma função individual, garantindo que um pequeno bloco não “quebre” com a evolução do sistema;
- Testes de integração: muitos softwares possuem integrações com sistemas ou serviços externos. Este teste é de suma importância para garantir que a integração contínua se comportando conforme o esperado;
- Teste de performance: ter o mapeamento de como o software reage a situações extremas e também ter um comparativo de performance entre as versões do sistema é muito importante para a evolução do projeto. Este tipo de teste é uma ferramenta direta para tomadas de decisão relacionadas a infraestrutura e qualidade do projeto.
Seja para mitigar erros ou monitorar performance, os testes estão presentes em todas as etapas do processo. Tão importante quanto executá-los é planejá-los para que decisões possam ser tomadas a partir deles.
- Integração Contínua (CI) – Build + Test + Release
A integração do código em ambiente compartilhado, juntamente com a execução do build e dos testes automatizados, apoia na detecção de possíveis problemas ocorridos durante a etapa de desenvolvimento. Estes problemas podem ser “quebra” no build, código fora do padrão pré-definido ou, até mesmo, um teste automatizado que, a partir da nova atualização, passou a retornar um erro.
Todo este processo é executado durante a pipeline de Integração Contínua (CI) que deve ser totalmente automatizado para mitigar possíveis falhas no processo.
A pipeline de Integração contínua (CI) é formada através dos seguintes passos:
- Deploy
Nesta etapa, os códigos referentes a release, correções de bugs e automações são preparados e aplicados no ambiente de produção.
Esta etapa do ciclo também deve ser automatizada e contínua, pois gera uma maior confiabilidade e maturidade no processo.
Com a entrega contínua (CD) podemos ter a abordagem de “falha rápida”, ou seja, como recursos são frequentemente implantados ao sistema, podemos rapidamente coletar feedbacks sobre os ganhos do mesmo.
O pipeline CI/CD pode ter diversas etapas de acordo com a necessidade do produto. O ideal é que ele seja constantemente incrementado e validado, garantindo uma maior assertividade no processo.
Figura 1 Exemplo de pipeline CI/CD
- Monitoramento
A última fase do ciclo contempla diversas formas de monitoramento contínuo. É ele quem trará indicadores e métricas, e garantirá que o Ciclo DevOps se mantenha consistente e em constante evolução.
Alguns indicadores e métricas que podemos ter com o monitoramento contínuo são:
- Desempenho do sistema;
- Estabilidade dos ambientes;
- Desempenho de banco de dados;
- Eficácia de ferramentas utilizadas;
- Qualidade das entregas;
- Performance das equipes;
- Falhas durante a execução do software.
Os indicadores e métricas trazem para a equipe os dados necessários para definir quais planos de ação devem ser tomados para potencializar cada uma das fases do ciclo de vida do produto.
Cultura DevOps
A cultura DevOps é totalmente baseada em colaboração. Garantir que as equipes estejam engajadas, dispostas a inovar e trabalhar em conjunto é primordial para que o processo seja contínuo e duradouro.
Para trazer para as equipes uma visão colaborativa, é necessária uma estratégia com pilares claros e bem definidos. Eles são:
- Integração: facilitar a troca de conhecimento e experiências gera empatia e uma atmosfera de objetivo comum entre as áreas. Um exemplo é a participação do time de operações desde o início do desenvolvimento. Ter a visão sistêmica é muito importante para garantir o desempenho, segurança e monitoramento do produto.
- Engajamento: ter a liberdade de propor e debater ideias aumenta a colaboração e, consequentemente, a união do time. Além disso, uma excelente forma de engajamento é investir em conhecimento dos colaboradores através de cursos e palestras, entre outros.
Investir em conhecimento, além de ser importante para o aculturamento, é importante no processo de desenvolvimento de equipes multidisciplinares e na efetividade do processo. - Feedback Contínuo: medir e divulgar resultados é de suma importância para equipes, pois dá visibilidade dos resultados. Isso motiva equipes a serem cada vez mais colaborativas, engajadas e, também, buscarem novas soluções.
Ferramentas
A seleção das ferramentas é fundamental para se atingir as metas e objetivos, por isso, focar na automação de cada etapa do processo faz com que a agilidade e confiabilidade na entrega seja cada vez maior.
Novas ferramentas mais práticas e robustas chegam ao mercado constantemente. Para incrementar e alterar nossas recomendações, criei um artigo que será constantemente atualizado e explica cada uma das ferramentas e em qual etapa do processo ela pode ser utilizada. Para acessar, clique em https://hoeliton.medium.com/devops-7c61b2720c45
A adoção do DevOps impacta diretamente no desempenho e engajamento dos times, na redução de custos, na agilidade e confiabilidade das entregas, nos processos internos e, consequentemente, na satisfação do cliente final.
Adotar essa prática gera diversos benefícios como a otimização de processos, deixando os fluxos de trabalho mais claros, flexíveis, menos burocráticos e impactando diretamente na performance dos times.
Outro benefício é a automação de tarefas. Quando os processos são automatizados, o tempo anteriormente reservado para as execuções passa a ser utilizado para outras funções como, por exemplo, melhorias, documentação, aprendizado e inovações. Além da otimização do tempo, processos automatizados mitigam as chances de falha humana, reduzindo os riscos e tornando os processos mais confiáveis.
Por fim, a integração dos times, comunicação assertiva, automação de processos, monitoramento e feedback contínuo impacta na assertividade do planejamento e na qualidade das entregas, fazendo com que as equipes obtenham um melhor resultado, com menos esforço e em um menor tempo de execução se comparado a metodologias tradicionais. Isso gera a redução de custos que tantas empresas buscam.
Aculturar a empresa, engajar pessoas, identificar os objetivos e definir as ferramentas para a abordagem do DevOps pode parecer muito complexo, porém este processo torna toda área de TI mais eficiente, engajada e integrada. Por isso, se você quer alcançar estes benefícios adote ao DevOps o quanto antes, com certeza, esta mudança transformará a cultura da sua empresa e trará diferentes benefícios e resultados positivos constantemente.
Escrito por Hoeliton Schenoveber.
Referências
- Continuous Integracion
https://martinfowler.com/articles/continuousIntegration.html
- Continuous Delivery
https://martinfowler.com/tags/continuous%20delivery.html
https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd
- DevOps
https://azure.microsoft.com/pt-br/resources/cloud-computing-dictionary/what-is-devops/
https://aws.amazon.com/pt/devops/what-is-devops/
https://martinfowler.com/bliki/DevOpsCulture.html
https://elemarjr.com/por-que-agilidade-cultura-lean-e-devops-sao-fundamentais-para-competitividade/