sexta-feira, 10 de junho de 2022

O que é Implantação Contínua (CD)?

O que é Implantação Contínua (CD)? A implantação contínua leva a prática DevOps de automatizar as etapas de build, testes e implantação ao máximo. Se uma alteração no código passar com êxito por todas as etapas anteriores do pipeline, essa alteração será implantada automaticamente no ambiente de produção sem qualquer intervenção manual. A adoção da implantação contínua significa que você pode entregar novos recursos para seus usuários o mais rápido possível, sem comprometer a qualidade. A implantação contínua é sustentada por uma integração contínua bem testada e etapas de entrega contínua. Pequenas alterações de código são regularmente submetidas ao branch master via commit. Em seguida são submetidas a um processo automatizado de build e testes com promoção através de diversos ambientes de pré-produção e, se nenhum problema for detectado, o serviço é finalmente implantado para entrar em funcionamento. A construção de um pipeline de implantação automatizado robusto e confiável significa que lançamentos poderão se tornar não-eventos que ocorrem diversas vezes ao dia. Embora automatizar o processo de lançamento final para entrar em execução não seja uma solução adequada para qualquer projeto de software, você ainda pode se beneficiar de alguns dos elementos individuais envolvidos na adoção eficaz da implantação contínua. Este artigo vai explorar o que é necessário e o que é preciso ter em mente antes de dar este último passo na direção do "todo contínuo". Fazendo com que a implantação contínua seja uma realidade Se os seus processos de integração e implantação são completamente manuais, com congelamentos de código, estratégias de testes que requerem o envolvimento de todos, a ansiedade de toda a empresa no dia do lançamento e depois a cada hora, a ideia de realizar implantações sem nenhuma interferência pode soar como uma fantasia. Mas a realidade é que muitas empresas estão adotando essa abordagem, desde grandes empresas como Netflix, Etsy e Amazon a empresas menores que tentam acompanhar o mercado. A adoção da implantação contínua permitiu que elas reduzissem sua periodicidade de lançamentos desde semanas ou mesmo meses para horas. Para uma quantidade cada vez maior de setores da indústria, a capacidade de entregar recursos rapidamente e responder de forma ágil ao feedback dos usuários tornou-se essencial. Como uma extensão da integração e entrega contínuas, a implantação contínua depende de um processo de build, testes e implantação totalmente automatizado, para garantir que a velocidade não prejudique a qualidade. Mas para pôr em prática a implantação contínua de maneira eficaz é necessário ter mais do que uma base sólida. Ao planejar como implementar a implantação contínua, uma questão importante a se considerar é como suas alterações serão lançadas. Além de escolher uma atualização que possa ser colocada em execução, em vez de colocar os servidores offline evitando assim interrupções frequentes em serviços online, você também pode fazer com que a distribuição seja uma extensão do seu processo de testes automatizados. Uma implantação canário (canary deployment) limita a implantação do código atualizado a uma pequena porcentagem dos usuários, que se tornam testadores involuntários na produção. Ao monitorar o comportamento e as métricas de uso, você pode verificar se a nova versão não introduziu novas falhas antes de distribuí-la de forma mais abrangente. Algumas empresas têm levado a automação mais longe com uma pontuação de confiança canário, que compara automaticamente uma série de métricas em relação a uma linha de referência. A distribuição continua automaticamente apenas se a pontuação exceder o limite especificado, enquanto a análise da métrica fornece um ponto de partida para uma investigação mais aprofundada de possíveis problemas. Um processo de implantação azul/verde é uma técnica comum para organizações que praticam implantação contínua, já que torna mais fácil reverter uma versão caso haja algum problema, mantendo o código antigo online até que você tenha certeza de que as alterações estejam funcionando conforme o esperado. Se necessário, você pode seguir uma implantação canário inicial com um lançamento azul/verde. Esteja você executando uma implantação azul/verde ou implantando substituições diretas, monitorar a integridade do sistema de produção é essencial se você deseja ser capaz de responder rapidamente a quaisquer bugs que tenham escapado ao processo de lançamento. Ficar de olho nas métricas específicas que indicam a integridade do seu sistema, desde espaço em disco e uso da CPU até o número de solicitações ou transações, e compará-los com uma linha de referência pode fornecer um aviso prévio quando as coisas não estiverem se comportando como deveriam. Você pode então decidir se deseja reverter a alteração ou avançar, introduzindo uma correção através do pipeline. Considerações para a implantação contínua Antes de entrar na onda da implantação contínua, vale a pena reservar um momento para considerar alguns dos problemas que normalmente surgem ao adotar a CD. O ciclo de vida de desenvolvimento de software envolve bem mais que apenas alterações de código. As equipes de pesquisa de usuário, marketing de produto, design de interação, documentação, comercial, jurídica e de suporte têm todas um papel a cumprir. Se você ainda não estabeleceu as bases com suas partes interessadas nem se envolveu com elas para entender as suas necessidades dentro do processo de lançamento, a mudança para a implantação contínua pode fazer com que elas tenham a impressão que o desenvolvimento está fora de controle. Isso pode resultar na introdução de pontos de verificação manuais e estágios de revisão que irão retardar o processo, ou até mesmo a implantação contínua ser rejeitada como um experimento fracassado. É essencial a criação de uma cultura de colaboração. Envolver outras equipes por todo o processo de desenvolvimento para que suas opiniões - quanto a design, questões de segurança, terminologia ou conformidade - possam ser incorporadas desde o início é um exemplo de como ciclos curtos de feedback podem tornar o ciclo de vida de desenvolvimento de software mais eficiente. Tão importante quanto estimular o compartilhamento de opiniões é fornecer visibilidade sobre o que está sendo lançado e quando. Manter as partes interessadas informadas é um processo que pode ser automatizado com a ajuda de um servidor de CI para disseminar informações através de painéis e notificações. Às vezes, a visibilidade do que está sendo feito, por si só, não é suficiente. Quando você está trabalhando num recurso maior ou precisa controlar a programação de um lançamento, simplesmente implantar cada commit e colocar o serviço no ar depois de passar em todos os testes não é o ideal. Sinalizadores de recursos são uma das alternativas para controlar a visibilidade do código em produção, com a vantagem de que o código estará rodando ao vivo, para que você possa monitorar falhas inesperadas. Uma outra abordagem é usar uma branch dedicada, implantada em um pipeline separado que não faz push para a produção automaticamente, combinando dessa forma tanto a entrega contínua, como a implantação contínua para atender às suas necessidades. Resumindo A implantação contínua usa automação ao máximo para entregar funcionalidades aos usuários com rapidez, sem comprometer a qualidade. Um aspecto fundamental para esta prática DevOps é a obtenção de feedback frequente e rápido. Testes automatizados, monitoramento de produção, colaboração com outras funções e comportamento dos usuários, todas essas coisas fornecem dados para o processo de desenvolvimento de software. Ao trabalhar em partes menores e realizar lançamentos com frequência, você pode continuar ajustando o produto com base no feedback dos usuários e melhorar continuamente o produto que está entregando.

Nenhum comentário:

Postar um comentário