Basicamente, grande parte do que deveríamos fazer como desenvolvedores é automatizar tarefas. Lembro até daquele caso de um dev que automatizou todo o seu trabalho e sei lá quantos anos demoraram para descobrir que era tudo automatizado.
Quando pensamos em desenvolvimento e principalmente em: entrega, subir para produção, deploy ou qualquer outro nome que referenciamos à entregar o código para o ambiente de produção de modo seguro. É interessante também pensarmos em como podemos automatizar esse processo. Não estamos mais na era onde tudo é regido pelo FTP e temos que subir arquivo por arquivo de um site da web manualmente.
O que é DevOps?
DevOps (desenvolvimento + operação) é uma cultura que preza o estreitamento entre as áreas de desenvolvimento e infraestrutura, através de ferramentas e metodologias, de modo que seja possível automatizar, monitorar, observar, testar e metrificar todas as etapas de desenvolvimento, até o deploy, fez com que ficasse ainda mais simples e rápido a melhoria na qualidade de código e do desenvolvimento como um todo.
Dentro os processos que visam o aumento dessa qualidade e também a facilitação de colocar um projeto em produção é o que chamamos de CI e CD .
O que é CI DevOps?
CI (Continuous Integration ou Integração Contínua) é uma prática em desenvolvimento utilizando DevOps em que DEVs frequentemente integram suas alterações de código em um repositório central. Após isso, são executados builds e testes para verificar a confiabilidade do código. Basicamente, a cada modificação relevante o código de uma pessoa DEV, o código será integrado com esse repositório central.
Normalmente, cada DEV desenvolve separadamente a funcionalidade em que está trabalhando em uma branch própria e só depois de terminado o desenvolvimento da funcionalidade essa branch é integrada com o repositório central. No CI, de tempos em tempos esse código modificado é integrado automaticamente com o repositório central e feito as devidas builds e testes.
A ideia com isso é receber um feedback rápido sobre as modificações que estão ocorrendo no código do projeto, adiantar e prever possíveis falhas, facilitando assim o processo de melhoria do código, reduzindo o tempo de validação desse código e de lançamento de uma nova atualização no software em questão.
Testes em CI DevOps
Dentre os testes que seriam ideais para a realização do processo de CI, temos:
- Testes de unidade: onde são testados unitariamente cada unidade do código (em geral cada método das classes do projeto);
- Testes de API: onde são testadas as integrações do software com serviços que fornecem dados internos ou externos ao sistema;
- Testes Funcionais: onde são testados os fluxos de trabalho dos usuários do software.
Com feedbacks mais rápidos de qualidade as pessoas desenvolvedoras podem corrigir mais rapidamente os erros em seus códigos e garantir que o código em si está entregando as funcionalidades que deveriam. Aumentando a confiabilidade do time com o código do software. Além de evitar conflitos entre as branchs quando muitas funcionalidades são desenvolvidas ao mesmo tempo.
O que é CD DevOps?
CD (Continuous Delivery – Entrega Contínua e/ou Implantação Contínua) é uma prática em desenvolvimento utilizando DevOps em que os times de desenvolvimento lançam novas funcionalidades de forma constante e automatizada. A ideia aqui é que quando uma nova funcionalidade é finalizada, automaticamente ela será disponibilizada no ambiente de testes e posteriormente no ambiente de produção (em alguns casos já vai direto para produção).
Como o código é testado regularmente por causa da CI, em geral os times que utilizam CI/CD tem uma confiabilidade maior de disponibilizar as novas funcionalidades mais rapidamente para seus clientes.
Com a CD são criadas sequências lógicas, chamadas de pipelines, para aplicação de checagens para validar se está tudo ok com o código e a funcionalidade. Facilitando também a desabilitação e/ou fácil correção de bugs ou algumas situações inesperadas.
Uma técnica muito utilizada por equipes que fazem o uso de CD é o teste A/B. Nesse caso consiste em liberar a nova funcionalidade para um número pequeno de usuários e validar se está tudo ocorrendo conforme o esperado. Caso a validação seja concluída com sucesso. A nova funcionalidade será disponibilizada para os demais usuários da aplicação.
Como tudo estará automatizado, em caso de erros, basta voltar a aplicação para a versão anterior para que as pessoas devs possam trabalhar na correção.
Algumas grandes empresas utilizam esses conceitos de CI e CD em suas equipes de desenvolvimento, e com certeza esse tipo de processo faz com que as equipes sejam mais autônomas e confiáveis, dando maturidade as pessoas desenvolvedoras, facilitando e tornando mais rápido todo processo de criação de novas funcionalidades e disponibilização das mesmas.
Desejo que tenha gostado do conteúdo, até a próxima!
Quer ter mais performance nos seus projetos? Conheça a Hospedagem Dedicada da Locaweb!
CLIQUE AQUI!