Recursos/White Papers

Tecnologia

Seis etapas para o sucesso do DevOps

Tirar o máximo proveito de um switch para DevOps requer novas ferramentas, novos processos e uma mudança cultural significativa. Veja como continuar sua jornada para melhorar a prestação de serviços de TI e otimizar custos

Adam Bertram, da CIO/EUA

Publicada em 19 de dezembro de 2017 às 11h01

Desde a sua criação, a adoção de DevOps foi objeto de debates nos círculos de TI. Alguns consideraram moda; outros acreditaram, desde cedo, que  revolucionaria as operações de TI. Ano após ano, os analistas prevêem um crescimento rápido. Mas o fato é que o DevOps é um movimento que cresce a um ritmo constante, e ainda não passou a ser regra em muitas organizações. 

O Devops evoluiu a partir de uma metodologia para reunir as equipes de desenvolvedores e da área de operações ao redor de uma estratégia para transformar o negócio, com rapidez e segurança. Ao facilitar uma maior comunicação, colaboração e integração em toda a organização, o DevOps melhora significativamente a agilidade da prestação de serviços de TI e simplifica o gerenciamento de TI ,ao mesmo tempo em que otimiza custos.

Na prática, DevOps é uma filosofia e prática que reúne equipes de desenvolvimento, operações e testes em equipes multifuncionais, cada uma das quais responsável por todo o ciclo de vida de um produto ou serviço. No caso da TI, produtos ou serviços de software. Ao reunir equipes colaborativas em toda a organização, o DevOps cria um ambiente operacional estável para lançar o código mais rápido no mercado, reduzindo erros sistêmicos e humanos, aumentando o controle das versões, otimizando os custos e recursos.

devOps1

A jornada DevOps começa explorando seus procedimentos comerciais atuais e os pipelines de entrega, e identificando objetivos claros que você deseja que sua estratégia de desenvolvimento alcance. Você precisará decidir se deseja enfrentar a implantação Greenfield ou Brownfield. As implantações do Greenfield são criadas a partir do zero, tornando-as mais fáceis de implementar, mas propensas ao tempo de inatividade à medida que os serviços são provisionados através da nova metodologia de implantação. As implementações Brownfield resultam em menos tempo de inatividade, mas muitas vezes são mais difíceis de implementar devido à necessidade de confiar em metodologias de implantação paralelas. 

Seja o que for que você escolher, é melhor executar um projeto piloto primeiro. Por exemplo, se o seu objetivo é alcançar um time to market mais rápido, você pode mover um produto que tenha prazos rígidos para testes e verificação de impacto.

Uma vez que você tenha um projeto em mente, as seis etapas a seguir são essenciais para o sucesso.

1. Prepare-se para uma mudança cultural
A Devops integra pessoas, processos e ferramentas em um conjunto voltado para transformar uma organização em uma única entidade. Como tal, a mudança cultural é a espinha dorsal do modelo, e mudar a cultura da sua empresa será um dos desafios mais difíceis que você enfrentará. Introduzir novas políticas e procedimentos, embora bem sucedidos, inicialmente, poderão falhar no longo prazo , a menos que a cultura organizacional subjacente também seja alterada.

DevOps é um movimento de toda a empresa, desde os executivos C-level. Você precisará dissociar o nome da função e garantir que os desenvolvedores e o pessoal de operações estejam informados sobre o valor que cada um traz para a organização antes de reuni-los em equipes multifuncionais.

Para facilitar sua mudança cultural, os incentivos também devem mudar. O modelo de incentivo mais eficaz é recompensar as equipes multifuncionais para oferecer uma melhor experiência ao cliente, ao mesmo tempo em que faz com que as falhas sejam tão baratas quanto possível. Algumas organizações pedem aos desenvolvedores que trabalhem on-call para que eles possam entender os desafios das operações. Alguns aceleram a mudança cultural ao identificar os desenvolvedores de rock-star e equipes de operações para ajudar a motivar outros membros da equipe. Outros ajudam a preparar um líder agradável para cada equipe para ajudar a tornar a transição para o DevOps muito mais suave.

2. Criar uma integração contínua e uma plataforma de entrega contínua
Uma vez que a organização inteira está a bordo, seu foco deve se voltar para a própria equipe DevOps. Aqui, a principal questão é fornecer aos desenvolvedores informações precisas e atualizadas sobre o ambiente de produção para que possam planejar a implantação adequadamente. Isso garantirá que os desenvolvedores possam se concentrar em uma abordagem coordenada de "construir e executar", na qual o desenvolvedor que constrói um produto ou serviço, ele "possui" esse produto ou serviço até a produção. Esta "propriedade" pode prolongar-se por um período de tempo definido, para garantir que os principais erros sejam abordados antes da entrega, por toda a vida útil do produto ou serviço . Ambas as abordagens funcionam.

A equipe do DevOps tocará todos os pontos do ciclo de vida do serviço, desde os requisitos até o planejamento, implantação e manutenção. Esta equipe, com seu profundo conhecimento da plataforma e da infraestrutura, também solucionará problemas - uma função que tradicionalmente recaía sobre o pessoal de operações. Aqui, a chave é criar um pipeline de implantação automático, em que a implantação de um script totalmente automatizado em qualquer ambiente ocorre em poucos minutos. O pipeline de implantação deve integrar integração contínua, desenvolvimento contínuo, testes contínuos e implantação contínua em uma única entidade.

Veja como funciona:

  1. Uma mudança de código comprometida com um sistema de controle de origem desencadeia um processo em um servidor de compilação.
  2. Este processo compila o código, reunindo os artefatos necessários para a implantação de clientes em pacotes implementáveis.
  3. Testes automatizados são realizados nesses pacotes para garantir que a qualidade do código seja mantida e o código seja executado conforme o esperado.
  4. Se o estágio de confirmação for bem sucedido, o aplicativo é implantado em um ambiente de teste onde pode ser inspecionado por uma equipe de garantia de qualidade, por exemplo.
  5. Finalmente, uma vez que o aplicativo foi aprovado, essa mesma versão pode ir direto para a produção.

devops2

3. Criar um ambiente de teste contínuo
Quanto mais rápido você receber feedback sobre as mudanças, melhor será a qualidade do seu software. No processo tradicional, o código completo passa do desenvolvimento para a área de teste e é então empurrado para a produção, caso aprovado. Caso contrário, o código será enviado de volta ao desenvolvimento para edição. Isso leva mais tempo e é menos confiável.

No modelo DevOps, o teste torna-se parte integrante do desenvolvimento, e o pessoal de QA é parte da equipe de transposições multifuncionais. O teste, manual ou automatizado, é realizado continuamente em toda a tubulação de entrega. Toda mudança é tratada como um potencial candidato a liberação, e o objetivo é manter o tempo mais curto possível entre o check-in e a liberação. Como medida de segurança, crie uma entrega de esqueleto com um teste de unidade única e um teste de aceitação único que esteja integrado ao seu script de implantação automatizada. À medida que você avançar, você pode aumentar o número de testes e espalhá-los em toda a tubulação de entrega.

As melhores práticas de teste contínuo incluem:

  • 1 - Automatizar os procedimentos de teste e as fases na maior extensão possível (o teste manual é necessário em determinadas áreas, como testes de usabilidade e testes exploratórios).
  • 2 - Separar os conjuntos de teste para procedimentos de teste fáceis e rápidos (por exemplo, os desenvolvedores podem rapidamente realizar testes de unidades antes de se comprometer, enquanto os testes de integração podem ser executados em servidores de compilação).
  • 3 - Registrar extensivamente.
  • 4 - Testar com antecedência e freqüência.
  • 5 - Certificar-se de adicionar práticas de QA suficientes.

4. Estabelecer um sistema de implementação contínua

A implementação contínua estende a entrega contínua. Cada compilação que passa com sucesso por um ciclo de teste completo é implantada automaticamente. Elimina a necessidade de intervenção humana para decidir o que implementar e quando implementar. Com a implementação contínua, as organizações podem rapidamente fornecer novos recursos e atualizações, ao mesmo tempo em que proativamente modificam o produto.

Como não há verificação manual antes que o código seja implementado, a implementação contínua pode parecer um pouco assustadora. Você não precisa se preocupar em perder o controle sobre o código em produção quando você possui uma tubulação de entrega bem projetada. Além disso, o DevOps pode dar um controle mais detalhado sobre a funcionalidade de um determinado serviço, tornando certas compilações disponíveis apenas para usuários selecionados ou automatizando a liberação de recursos em um momento especificado.

Seus desenvolvedores devem garantir que o código que eles escrevem esteja bem desenhado, e o controle de qualidade deve criar conjuntos de testes que estão sempre atualizados. Quando o seu pipeline de entrega é projetado corretamente, o sistema decide automaticamente o que e quando reter, e o que e quando liberar para a produção e assim por diante.

A implementação contínua deve ser aumentada através de monitoramento contínuo e feedback. Com feedback inicial, os desenvolvedores sabem quais recursos são úteis para usuários finais. Isso os ajuda a concentrar-se nos recursos mais importantes, economizando tempo e esforço.

5. Fazer uso da implementação azul/verde
Para reduzir o tempo de inatividade e mitigar os riscos, as organizações podem considerar o que se conhece como implementação azul/verde. Neste método, quando uma mudança é feita e uma nova implementação (azul) é desencadeada, ela é implementada em paralelo com a antiga (verde). Ambas as implementações funcionam lado a lado e, inicialmente, uma pequena quantidade de tráfego é encaminhada para a implementação azul. Se for bem sucedido, o resto do tráfego é encaminhado lentamente para a implementação azul e a implementação verde é gradualmente removida. Se ele falhar, o tráfego volta para verde e o azul é removido. Isso permite alternar entre ambientes de implementação sem qualquer tempo de inatividade ou falhas no sistema. É assim que sites como Facebook ou Twitter apresentam novos recursos, pois não podem interromper seus serviços a qualquer momento.

6. Monitorar continuamente o desempenho
Em um ambiente automatizado, o monitoramento do desempenho é fundamental, e existem várias ferramentas para ajudar. Antes de escolher suas ferramentas, você precisa identificar as métricas-chave que deseja monitorar. Dado que você terá centenas de serviços e procedimentos executados dentro do seu sistema, você não poderá monitorar tudo. Em vez disso, concentre-se nessas cinco categorias:

  1. Ciclos de desenvolvimento: para ter uma ideia de como o seu pipeline de implementação automatizada está sendo executado, monitore com que frequência o código está sendo alterado, quantos recursos objetivos estão sendo incorporados, quantos erros estão sendo identificados e corrigidos, e assim por diante.   
  2. Implementações: quando uma implementação automática falhar, você vai deserjar ter uma ferramenta que aponte a equipe resposnável. A maioria dos servidores de integração contínua vem com recursos de notificação que alertam o pessoal responsável automaticamente por meio de servidores de bate-papo em caso de implementação ou compilação com falha.
  3. Vulnerabilidades: à medida que o código passa para a produção, as vulnerabilidades devem ser tratadas automaticamente. Seja conhecido vulnerabilidades (por exemplo, as que estão listadas no Banco de Dados Nacional de Vulnerabilidade) ou vulnerabilidades desconhecidas que são resultado de práticas inseguras, você deve ter um sistema para identificá-las e mitigá-las.
  4. Saúde do servidor: o monitoramento do servidor é essencial em quase todos os tipos de infraestrutura. O desempenho e os acordos de nível de serviço (SLAs) do sistema dependem da saúde do servidor. Existem várias ferramentas para executar esta tarefa. Da mesma forma, você deve ter o monitoramento da infraestrutura bem feito.
  5. Desempenho do aplicativo: para identificar questões-chave, como desempenho e regressão de aplicativos, monitorar atividades de aplicativos e tomar decisões de forma proativa. Múltiplas ferramentas podem atender a este propósito, incluindo AppDynamics e New Relic. Essas ferramentas de monitoramento de desempenho de aplicativos (APM) fornecem informações sobre o uso e o desempenho das aplicações.

Você também pode querer analisar logs de aplicativos. As ferramentas de monitoramento de registro coletam grandes quantidades de dados de várias fontes e as centralizam em um banco de dados. O monitoramento da atividade do usuário também é chave. Ao obter informações sobre o uso de recursos e os padrões de comportamento dos usuários, você pode expandir a infraestrutura ao mesmo tempo que apresenta novos recursos ou melhora o desempenho.

Você também precisará atender às regras de compliance. Além de projetar e aplicar políticas de segurança fortes, você deve ter um sistema para monitorar auditorias com falhas ou configurações erradas de segurança. As ferramentas de gerenciamento de configurações, como Puppet, monitoram continuamente sua infraestrutura para padrões de conformidade.

devOps

Principais ferramentas DevOps
Embora o sucesso do DevOps dependa em grande parte da mudança cultural subjacente, as ferramentas ainda são importantes. Aqui está uma breve lista de algumas das ferramentas normalmente usadas em um ambiente DevOps:

  • Repositório de código-fonte: Git, CloudForce, TFS, Subversion
  • Servidor de compilação: SonarQube, Jenkins, Artifactory
  • Gerenciamento de configuração: Puppet, Ansible, Salt, Chef
  • Automação de teste: Selenium, Water
  • Infra-estrutura virtual: Amazon Web Services, Microsoft Azure, VMware vCloud

Passar do desenvolvimento de software tradicional para práticas DevOps é um desafio, pois envolve uma mudança significativa em toda a organização. A chave é atribuir as pessoas certas para os processos certos, ao mesmo tempo que os equipa com as ferramentas certas. Se você seguir as melhores práticas na criação de um pipeline de entrega com integração contínua, testes contínuos, entrega contínua e implantação contínua, uma mudança para DevOps deve gerar recompensas significativas para sua organização.



Reportagens mais lidas

Acesse a comunidade da CIO

LinkedIn
A partir da comunidade no LinkedIn, a CIO promove a troca de informações entre os líderes de TI. Acesse aqui