- Desenvolvimento de Software
Quem trabalha com desenvolvimento de serviços e produtos digitais já deve estar habituado a ouvir o termo DevOps. Mas você sabe o que ele significa e o motivo de ser tão relevante? Quais são os benefícios de adotar essa filosofia ao criar uma solução digital? Nesse artigo, vamos conhecer um pouco sobre essa cultura e de que forma ela pode contribuir para o seu negócio.
Na TI, é difícil conciliar duas áreas tão distintas como operação e desenvolvimento. Enquanto a primeira tem como objetivo garantir a estabilidade do ambiente – ou infraestrutura – a segunda visa entregar valor com novas funcionalidades e melhorias no sistema. A massificação dos métodos ágeis, que promove um formato iterativo e incremental de desenvolvimento, evidenciou essa separação e demandou uma nova forma de comunicação.
Podemos dizer que DevOps é um conjunto de práticas que visa estreitar as relações entre desenvolvedores (Dev) e operação (Ops), permitindo que trabalhem de maneira unificada, colaborativa e entregando valor para o usuário. Embora a necessidade de integração entre as equipes seja discutida há muito tempo, o termo surgiu apenas em 2009 durante a conferência Velocity da O’Reilly. Inclusive, Patrick Debois – um dos participantes dessa conferência – é o criador do evento DevOpsDay.
Podemos dizer que o embrião do DevOps é chamado de infraestrutura ágil. Para adotar essa cultura, é possível contar com ferramentas que irão permitir essa integração constante entre as equipes. Nesse sentido, é importante destacar que nada disso será efetivo caso os colaboradores não estiverem dispostos a criar esse ambiente de colaboração. Por isso, é necessário mudar a mentalidade da equipe para uma cultura ágil, contribuindo ao máximo para o trabalho em conjunto.
Para que os benefícios de implementar uma cultura DevOps possam ser percebidos pela equipe, é importante que as práticas dessa filosofia sejam utilizadas de forma consistente entre os envolvidos. A orientação principal é a que comentamos acima: comunicação e colaboração, dois dos quatro pilares do DevOps. Além desses, temos ainda medição (avaliação) e a automação.
O primeiro refere-se a medir e analisar o máximo de itens, desde a performance até os processos, pois é a partir desta análise que poderemos propor melhorias. Já o último tem o objetivo de automatizar todos os processos possíveis, diminuindo o desperdício de tempo e o risco de falhas humanas. Na automação temos algumas práticas bem difundidas, como:
Infraestrutura como código: para gerenciar e provisionar recursos de forma automática, no lugar de disponibilizar um recurso – ambiente – de forma manual. Essa prática aumenta a velocidade e confiabilidade ao instalar o software em um novo ambiente, por exemplo.
Isso ocorre, pois temos a garantia que todos os itens foram feitos da mesma forma. Além disso, a manutenção desse sistema também se torna eficaz. Aqui, podemos utilizar algumas tecnologias, como por exemplo: Ansible, Chef, Puppet, Vagrant, Docker, Kubernertes.
Integração contínua: nessa prática utilizamos um sistema de controle de versão como o Git, por exemplo. O código-fonte deve ser integrado mais rápido possível, diversas vezes ao dia, em uma ramificação (branch) compartilhada entre os desenvolvedores do projeto.
Esse processo possibilita que eles tenham o código atualizado, evitando possíveis conflitos tanto de código, como regras de negócio. Na integração continua, para cada código enviado ao repositório são realizadas uma compilação e a execução de testes automatizados/unitários. Isso garante que ele esteja pronto para a implantação (deploy).
Entrega contínua: é disponibilizada de forma automatizada, rápida e segura a implantação do sistema. Quando usamos entrega contínua devemos garantir que a ramificação principal do repositório esteja em um estado estável, para podermos fazer a implantação do software em qualquer momento. Normalmente são utilizados pipelines automatizados que fazem a compilação, testes e implantação.
A partir da definição que vimos anteriormente, é possível perceber uma série de benefícios que a adoção dessa prática promove. Uma delas é a confiabilidade do que está sendo entregue, seja novas funcionalidades ou mudanças na infraestrutura. A segurança da operação também é beneficiada a partir da automatização de políticas de conformidade e outras técnicas para gerenciamento.
A velocidade e a capacidade de se adaptar às mudanças também aumenta. Com a filosofia de DevOps é possível corrigir bugs e lançar novas features com mais agilidade e menor risco de downtimes – quedas do sistema – por exemplo. Além disso, a escalabilidade do sistema se torna mais fluída e segura a partir dos processos automatizados e da responsabilidade compartilhada. Dessa forma, com as áreas atuando de maneira integrada, é possível realizar entregas ainda melhores.