Continuous Delivery x Continuous Deployment

Quando o tema é DevOps, falamos muito sobre automação e de práticas que visam elevar o nível de qualidade, confiabilidade e segurança das nossas aplicações. Acaba se tornando muito comum falarmos sobre CD, que em alguns cenários pode significar Continuous Delivery (Entrega Contínua) ou Continuous Deployment (Publicação Contínua).

É muito comum lermos declarações — até de profissionais reconhecidos do mercado — que confundem os conceitos de Continuous Delivery e Continuous Deployment. Muitas vezes, as pessoas falam de um quando na verdade desejam citar o outro processo — ou simplesmente acham que os dois são “a mesma coisa”.

Ambas são metodologias modernas aplicadas no ciclo de desenvolvimento de software, seu objetivo é diminuir o tempo de lançamento de novas funcionalidades, as liberando em pequenos ciclos, de maneira padronizada, segura e confiável, sem a necessidade de processos burocráticos e demorados de gestão de mudanças.

Image for post

Podemos dizer que Continuous Deployment é uma metodologia para times de desenvolvimento com um maior nível de maturidade, pois sua única diferença em relação a Continuous Delivery é que num fluxo de Continuous Delivery um humano precisa apertar o botão para que a implantação seja realizada, enquanto no fluxo de Continuous Deployment, cada alteração é liberada automaticamente no ambiente produtivo.

Passos para o sucesso

Como qualquer processo do ciclo de desenvolvimento de software, um fluxo de CD maduro, deve ser planejado desde o momento da construção do código de negócio, pensando em quais tipos de testes serão aderentes e como medir o sucesso dos testes construídos.

Não existe uma receita única para o sucesso de um CD, cada empresa tem um parque tecnológico personalizado e podem ter passos personalizados que fazem total sentido para seu contexto. Pensando em uma estrutura base para micro serviços, podemos pensar na seguinte estrutura:

Image for post

Por boa prática, podemos considerar que nenhuma aplicação deve conhecer seus dados sensíveis, deve existir um cofre de senhas que os guarde de acordo com o ambiente, o passo Cofre de Senhas serve para consultar esses dados e apresenta-lo para aplicação no momento da publicação. Vale ressaltar que um dado sensível pode ser um usuário e senha de um banco, uma url de um serviço ou qualquer dado que seja configurável na aplicação.

O passo Publicação representa realmente a publicação de uma aplicação em determinado ambiente.

Ja o passo Testes Regressivo da uma testa se nenhuma funcionalidade que ja estava funcionando parou de funcionar e se as novas funcionalidades estão funcionando conforme deveriam funcionar.

Os Testes de Performance são ideais para medir se uma aplicação pode oferecer para o usuário final a experiencia que foi projetada pelo time de desenvolvimento. Com uma execução constante, podemos pegar facilmente os pequenos ajustes de código, que podem gerar grandes impactos para o usuário final.

Devemos sim pensar em segurança desde o momento da concepção do software, por isso o ideal é que no passo Testes de Segurança existam vários tipos de teste de penetração e analises dinâmicas do código.

Vale ressaltar que esse fluxo de CD demonstrado acima, pode ser aplicado a qualquer ambiente, inclusive no produtivo, o único pré requisito é que os testes que gerem qualquer massa de dados sejam deletados no final do processamento.

Gestão de Mudanças

Muitas empresas ainda possuem comitês de gestão de mudança complexos, lentos e defasados, onde muitas vezes os times de desenvolvimento devem cumprir uma série de pré requisitos que muitas vezes não são suficientes para garantir a qualidade do software entregue.

Podemos dizer que quando metrificamos um processo de CD bem estruturado, que contenha automação de ponta a ponta, estamos criando um processo de Gestão de Mudanças moderno e estruturado, com visibilidade de indicadores de qualidade e segurança.

A visibilidade destes indicadores, muitas vezes gera maior engajamento nos times de desenvolvimento, sempre com o intuito de elevar os níveis de qualidade e segurança das aplicações, gerando maior confiabilidade no software entregue.

Conclusão

Como vimos acima, um fluxo de CD bem estruturado é estratégico para qualquer produto ou empresa, pois alem de gerar uma série de indicadores sobre o software produzido, estes que muitas vezes pode auxiliar na tomada de decisões estratégicas, também o nível de competitividade de uma empresa ou produto no mercado, pois diminui o tempo de espera para a publicação de uma nova funcionalidade no ambiente produtivo.

Por Willian da Silva, Arquiteto de soluções no Grupo FCamara


Quer saber mais? Veja todos os artigos que escrevemos dessa série sobre DevOps:
https://blog.fcamara.com.br/categorias/devops/

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *