DevOps pela visão de um QA

É sabido que comumente as organizações tendem a separar os "departamentos" de Desenvolvimento, Operações de TI e Controle de Qualidade, segmentando desta forma os processos, dificultando a comunicação e assim criam um abismo entre os profissionais. Além de adicionar um fator estressante e de alto risco nas entregas das atividades destas várias equipes envolvidas.

O atual e popular termo DevOps (amálgama de Desenvolvedor e Operações), tem se apresentado como uma união entre esses "departamentos" e que vem promovendo um conjunto de processos e métodos para levar ao novo pensamento sobre a comunicação e a colaboração entre esses.

Mas antes de mais nada, vamos voltar um pouco e conhecer de onde nasceu.

Um pouco de história

Segundo consta o termo não nasceu - ou começou a ser citado - em um local só e isolado, desta forma sabe-se que vários locais apresentam algumas pistas sobre a real origem do termo, no entanto informações mais relevantes apontam que o mesmo nasceu em meados de 2008. Ano este que começaram a utilizar então o termo Infraestrutura Ágil em uma série de listas de discussão e também nessa época no Agile 2008 sugiram algumas conversas que abordavam o tema de como a metodologia ágil serviria para a administração de infraestrutura, sendo assim inspirada no modelo ágil de desenvolvimento.

Apesar de que foi em uma lista europeia com os estusiastas Patrick Debois (@patrickdebois) e Andrew Shafer (@littelidea) que o terno agile-sysadmin foi inicialmente citado e abordado com propriedade necessária para que desse inicio a popularização do mesmo e fosse criada a ponte entre developers e sysadmins.

Ainda assim, apenas em 2009 que o termo foi efetivamente criado na conferência Velocity da O’Reilly, por meio da apresentação do trabalho do John Allspaw (Etsy.com) e Paul Hammond (Typekit): 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr.

10+ Deploys Per Day: Dev and Ops Cooperation at Flickr from John Allspaw

O material apresentado acabou deixando Patrick Debois ainda mais entusiasmado com o tema, que nasceu a ideia de um encontro, o qual passou a ser chamado de DevOpsDays, que ocorreu ainda no mesmo ano em Ghent e nos anos que se seguiram os encontros foram levados à outras localidades de diversos países, disseminando assim um discreta revolução no mundo da TI.

Agora vamos entender a relação Infraestrutura versus Desenvolvimento

Infra Vs Dev

De um lado temos um grupo de profissionais cuja "missão" é manter e garantir que os sistemas estejam funcionando, realizando assim deploys e rollbacks das aplicações. Monitorando o funcionamento, a performance, avaliando e propondo melhorias, mantendo assim as aplicações que estão sobre seus cuidados e responsabilidade em pleno funcionamento. Em outras palavras, é de sua responsabilidade manter o ambiente de produção perfeitamente intacto. Além de também possuirem preocupações com a segurança, estabilidade e nível de serviço (SLA).

E do outro um segundo grupo de profissionais que trabalham aliados a lógica e criatividade. Estando sempre criando, aprimorando e validando suas aplicações, resultando em novas versões, que precisam ser disponibilizadas aos seus clientes.

Em resumo, a Infraestrutura se preocupa em manter Protegido o Valor do Negócio. Enquanto o Desenvolvimento mantém sua preocupação ligada à Aumentar o Valor do Negócio.

E desta forma nasce naturalmente um conflito de interesses, onde de um lado os desenvolvedores querem lançar as aplicações no menor tempo possível, enquanto os sysadmins de outro precisam ter certeza absoluta de que a aplicação é estável e não vai gerar nenhum tipo de incidente.

O Conflito

Enquanto a equipe de desenvolvimento está sempre em busca de métodos mais ágeis e eficientes para desenvolver um software, o pessoal de operações procura um jeito de gerenciar de forma mais eficaz a operação de TI. E esse conflito foi e é latente no mundo de TI.

Para gerenciar tal, algumas empresas apresentam regras rígidas, que por exemplo permitem - ou restrigem - apenas um deploy por semana, em casos mais extremos apenas um por mês e isso não combina em nada com o Desenvolvimento Ágil. Forçando assim que a Infraestrutura por sua vez se desenvolvesse. Onde em outro momento o cenário era de um deploy por mês, passou a ser vários por dia.

Esse cenário gerou um novo impasse, na escala que a Infraestrutura não daria vazão as demandas, o Desenvolvimento por sua vez, não possuia infra adequada para fazer o desenvolvimento de forma contínua. Além de que o desenvolvimento não possuia conhecimentos e não tem como prever aspectos importantes relativos a infra.

Embora sejam áreas diferentes, elas estão interligadas e o profissional DevOps é o responsável por isso.

Integrar Equipes

Na cultura DevOps, os profissionais das duas áreas precisam ter conhecimentos sobre ambas. Isso significa que o sysadmin deve ter noções de programação e o desenvolvedor necessita de algum conhecimento sobre sistemas operacionais e demais aspectos de uma infraestrutura de TI.

  • A infra previsa evoluir, e precisa fazer isto rapidamente: começar a trabalhar de forma automatizada e dinâmica, precisa ser mais veloz para subir novos ambientes ou mesmo reconstruir/duplicar os ambientes existentes para suprir as necessidades.

  • O dev precisa ter controle de todas as fases do deploy: conseguir passar para infra suas necessidades de forma clara, e tem que se esforçar para fazer a infra entender isto.

Assim a chave está na colaboração entre essas equipes e tem basicamente quatro eixos principais: cultura, automação, avaliação e compartilhamento.

  • Cultura: colaboração / fim das divisões / relação saudável / mudança de comportamento
  • Automação: deploy / controle / monitoração / gerência de configuração
  • Avaliação: métricas / medições / performance / logs
  • Compartilhamento: feedbacks / boa comunicação

Imagens ilustram que implementar uma métrica pode representar apenas uma linha de código, resultando em um gráfico no Graphite

Essa melhoria na relação e colaboração aumenta a eficiência e reduz os riscos da produção associados com mudanças frequentes.

Onde atua esse profissional?

O DevOps terá um pé na infra e outro no dev, em alguns casos também poderá ter o pé na área de garantia de qualidade (QA). Tendo ele como o meio de unir infra, dev e qualidade.

Ele entende profundamente dos tocantes de infraestrutura e tem conhecimento suficiente e de forma ampla dos processos de desenvolvimento.

  • Quanto ao processo de desenvolvimento:

Deve participa dos projetos de desenvolvimento desde o seu nascimento, onde o seu foco é oferecer os recursos para a equipe de desenvolvimento possa trabalhar da forma mais eficiente, além disto, com sua ótica de infra ele toma todas as precauções para que os aspectos de segurança, monitoramento, eficiência e escalabilidade sejam observados desde o primeiro momento do projeto.

Além de que ainda precisará estudar todo o processo de desenvolvimento e definir - em conjunto com o dev - quais ferramentas que irão permitir um processo de desenvolvimento e entrega contínua. Após essa definição ele vai ser o responsável por instalar e manter toda essa infra.

Entretanto ainda existem alguns profissionais de DevOps que conseguem até avaliar o código e identificar problemas relacionados à performance, assim esse tipo de visão sistêmica e raciocínio rápido são diferenciais muito importantes para uma entrega com mais qualidade.

  • Quanto aos tocantes de infraestrutura:

Acaba por ser o principal agente das mudanças, sendo ele que vai e deve puxar para iniciar a implantação de uma infraestrutura ágil, por dominar as ferramentas de orquestração, gerência de configuração e provisionamento e vai usar esse conhecimento para que a equipe passe a trabalhar a infraestrutura como código.

Também vai ajudá-los a mudar seu comportamento e cultura, vai orientá-los nos métodos ágeis de execução de atividades, aqueles inspirados no SCRUM e KANBAN.

Ganhos

No relatório “2013 State of DevOps Report”, publicado pela Puppet Labs, foi então possível notar um grande interesse das corporações pelo movimento. Tal pesquisa, realizada com cerca de quatro mil profissionais de TI — tanto de desenvolvimento quanto de operações — mais da metade (63%) admitiu que as empresas nas quais trabalham já adotam o conceito, o que mostra que a adoção desta prática está cada dia maior.

Essa demanda por DevOps resultou em uma valorização maior do que um analista de suporte, por exemplo, o que resulta em um salário também maior.

  • Em relação à infra:
  • Infraestrutura como código (equipe para de administrar e passa a desenvolver a infra)

  • Infra mais eficiente e rápida usando métodos ágeis

  • Equipe de Infra mais organizada

  • Equipe de Infra se comunicando melhor

  • Infra fazendo mais em menos tempo com menos gente

  • Ambientes de gerência de configuração, orquestração e provisionamento implantados

  • Deploys de infra (novos ambientes) mais rápidos e seguros => entrega rápida

  • Ambiente padronizado e sob-controle

  • Feedback rápido em todas as atividades de infra

  • Em relação ao dev:
  • Dev tem ambiente mais adequado para trabalhar (dev/teste/prod)

  • Dev passa a contar com ambiente de desenvolvimento contínuo

  • Dev passa a contar com testes automatizados

  • Deploys de apps (novas versões) mais rápidos e seguros => entrega rápida

  • Feedback rápido em todas as fases de desenvolvimento

Em suma, um DevOps deve atuar como um agente de mudanças, integrando desenvolvimento e operações. Para isso, é preciso investir em conhecimento e atualização constante.

Links Relacionados:

DevOps

O que é DevOps - Wikipedia

DevOps de zero a 100%: Níveis e passos de adoção

Discutindo DevOps na Prática

The Convergence of DevOps

http://www.slideshare.net/KrisBuytaert/devops-the-future-is-here-its-just-not-evenly-distributed-yet

http://www.slideshare.net/jedi4ever/devops-is-a-verb-its-all-about-feedback-13174519

http://www.slideshare.net/jedi4ever/devops-the-war-is-over-if-you-want-it

http://www.slideshare.net/jedi4ever/devops-tools-fools-and-other-smart-things


Post participante do Desafio AgileTesters 2016