Menu
Blog Infra como Código

O que é a cultura DevOps?

O DevOps é uma metodologia de integração entre desenvolvedores e administradores de sistemas que surgiu em 2008, após algumas discussões em fóruns sobre desenvolvimento ágil. Mais do que uma nova tecnologia, o DevOps pode ser interpretado como uma nova cultura que influencia diretamente a estrutura organizacional e de TI de uma empresa.

Patrick Debois, considerado o pai do DevOps, criou o evento DevOpsDays em 2009 com objetivo de compartilhar experiências e soluções para integrar desenvolvedores e administradores de sistema. O objetivo desse encontro era discutir,  enfrentar e encontrar formas de superar os problemas culturais nas áreas de TI doss mais diversos tipos de organizações.

Em 2010 durante a edição Mountain View do DevOpsDays, John Willis e Damon Edwards criaram o acrônimo CAMS que define 4 eixos para o DevOps: cultura, automação, avaliação e compartilhamento. No gráfico abaixo, pontuamos os elementos principais de cada eixo.

 

O que é DevOps?

Em relação às premissas técnicas, um ambiente influenciado pela cultura DevOps normalmente possui as seguintes características:

  • Infraestrutura como código
  • Orquestração de servidores
  • Deploy Automatizado
  • Gerência de configurações
  • Provisionamento dinâmico e automatizado de ambientes
  • Controle de versões compartilhado entre infraestrutura e desenvolvimento
  • Múltiplos ambiente para sistemas (desenvolvimento, teste, produção)
  • Ambientes de entrega e integração contínua (CI/CD);
  • Publicação de novas versões de software passando por um pipeline de testes automatizados que aceitam ou não a versão (TDD/BDD/ATDD);
  • Coleta, Processamento, Armazenamento e visualização de dados dos serviços e sistemas;
  • Monitoramento do ponto de vista do negócio com processamento adequado dos eventos e métricas
  • Capacidade de resposta rápida a incidentes e problemas utilizando automação
  • Backup e restauração confiáveis

 

DICA: Se você quiser saber mais sobre o que é DevOps e como aplicá-lo na sua empresa, confira a nossa palestra gratuita sobre o assunto clicando aqui. 

 

Infraestrutura X Desenvolvedor

 

Infraestrutura deve participar do desenvolvimento desde o início

O desenvolvedor precisa envolver o time de infraestrutura nos projetos desde o seu início, ou seja, um representante da equipe deve participar das reuniões técnicas e do desenho do projeto desde o dia inicial. Sem os recursos de infraestrutura não há projeto, portanto a visão sistêmica de quem vai garantir disponibilidade, segurança, desempenho e monitoração tem que estar presente desde o início. O especialista em infraestrutura deve ter uma voz ativa, participar das tomadas de decisão e ajudar na escolha das tecnologias deste projeto.


Quanto mais falhas forem resolvidas durante o período de desenvolvimento do projeto menor é a possibilidade de problemas serem expostos aos clientes. Quando os times trabalham  junto,s o produto tem maior qualidade e desempenho pois ambos agregam valor e conhecimento ao projeto.

 

Infraestrutura deve participar das reuniões de desenvolvimento

A infraestrutura também precisa observar quais são as metas da empresa a longo prazo, principalmente aquelas ligadas ao desenvolvedor. Ao entender onde o setor de desenvolvimento quer chegar, ela pode se programar melhor para ter certeza que a infraestrutura tecnológica estará preparada para atendê-los quando necessário.

 

Desenvolvimento deve participar das reuniões de infraestrutura

A infraestrutura precisa envolver o desenvolvimento em suas reuniões, deve haver sempre um representante acompanhando as reuniões técnicas para que o desenvolvedor entenda e tenha ciência da realidade de infraestrutura. Dessa maneira, é possível enxergar suas qualidades, atribuições, planos de melhorias, atualizações programadas e agendas de manutenção, além de conhecer os recursos disponíveis e as limitações da equipe (técnicas ou materiais). Além disto, o desenvolvedor pode ser um grande aliado da infraestrutura na solução de problemas, afinal o conhecimento que o desenvolvedor traz pode ajudá-los a melhorar a forma com que administram seu ambiente, tornando o processo mais eficiente, principalmente na parte de automação.

 

Ambiente de entrega contínua

O desenvolvimento precisa adotar alguma metodologia de entrega ou integração contínua para facilitar o trabalho de ambos os times. A infraestrutura também precisa entender esse processo para que juntos criem os ambientes com as ferramentas certas que vão ajudar a agregar valor a organização e aos times.

Entrega automatizada

Uma vez criado um pipeline de entrega, todo o processo de deploy passa a ser automatizado – isto inclui a partes dos testes que farão parte do pipeline. Com a ajuda dos testes, quem define se um software está apto ou não para ser publicado é o próprio pipeline. Ele pode ter todo o tipo de testes integrados: carga (stress), funcional e aceitação (tdd/atdd), compartamento (bdd). Se o software passar em todos os testes, ele pode ser publicado diretamente, passar ainda por uma equipe de QA ou pela aprovação final de algum setor. A infraestrutura nesse caso não interfere na publicação – ela apenas mantém o pipeline funcionando e todo o controle está na mão das equipes que criam a ferramenta.

 

E os valores humanos?

 

Para a adoção da cultura DevOps funcionar, a equipe precisa observar e exercitar os seguintes valores:

  • Confiança no trabalho de sua equipe
  • Compartilhamento das responsabilidades
  • Respeito pessoal e profissional por todos da equipe
  • Sinceridade sobre eventos e incidentes ocorridos
  • Honestidade sobre as causas dos incidentes (não esconda nada da sua equipe)
  • Entendimento de que o problema é responsabilidade de todos
  • Entendimento de a solução é responsabilidade de todos
  • Entendimento de que os resultados são o reflexo do trabalho de toda a equipe
  • Comunicação efetiva e dinâmica
  • Postura construtiva sempre
  • Espírito de colaboração

Também é recomendável que a equipe:

  • Internalize e adapte métodos ágeis como KABAN, DOJOS, SCRUM, HACKATONS, para seu dia-a-dia fluir melhor
  • Aprofunde estudos em entrega e integração contínua
  • Aprofunde estudos em gerência de configurações e orquestração
  • Aprofunde estudos em coleta de dados e processamento de métricas, sem métricas não há administração eficiente

 

Como a cultura DevOps é aplicada?

Startups

A cultura DevOPs combina muito com startups, pois nesse tipo de empresa normalmente já se trabalha o desenvolvimento utilizando metologias ágeis. Foi inclusive nesse nicho no qual a discussão sobre  infraestrutura ágil – a precursora do movimento DevOps – foi iniciada. Não há grande dificuldade para absorção da cultura DevOps nas startups: elas conseguem compreender os conceitos de colaboração e feedback pois eles já fazem parte do seu dia-a-dia.

Um grande facilitador para a implementação da cultura DevOps em startups é que normalmente a equipe não tem as amarras e vícios da corporação. Não é necessário nenhum tipo de intervenção para internalizar a cultura: a partir do estímulo de um líder as pessoas começarão a estudar e aplicar DevOps naturalmente. A falta de divisões e departamentos também é um facilitador, pois não existem barreiras para a comunicação interna.

 

Ambiente corporativo

A corporação não funciona como a startup, pois há mais burocracia e o uso vicioso de métodos ultrapassados. Dessa forma, não bastará o estímulo da alta hierarquia para que equipes de infraestrutura e desenvolvimento comecem a vivenciar a cultura DevOPs. A estratégia mais eficiente é trazer um profissional externo que conhece DevOPs para que esta pessoa passe a contaminar os demais. Esse processo é lento, mas se o especialista tiver os meios e o apoio do alto escalão, mudanças fantásticas poderão ocorrer.

 

Quais as vantagens de adotar a cultura DevOps?

 

Para a infraestrutura

  • Infraestrutua como código (equipe para de administrar e passa a desenvolver a infraestrutura)
  • Infraestrutura mais eficiente e rápida usando métodos ágeis
  • Equipe de infraestrutura mais organizada
  • Equipe de infraestrutura se comunica melhor
  • Infraestrutura fazendo mais em menos tempo com menos gente
  • Ambientes de gerência de configuração, orquestração e provisionamento implantados
  • Implementações de infraestrutura (novos ambientes) mais rápidos e seguros => entrega rápida
  • Ambiente padronizado e sob controle
  • Feedback rápido em todas as atividades de infraestrutura

 

Para o desenvolvimento

  • Desenvolvimento tem ambiente mais adequado para trabalhar (dev/teste/prod)
  • Desenvolvimento passa a contar com ambiente de entrega e integração contínua
  • Desenvolvimento passa a contar com testes automatizados
  • Desenvolvimento de apps (novas versões) mais rápidos e seguros => entrega rápida
  • Feedback rápido em todas as fases de desenvolvimento

 

Benefícios mútuos entre Infraestrutura e Desenvolvimento

  • Acaba a divisão Infraestrutura vs Desenvolvimento
  • Infraestrutura participa dos projetos e acompanha de perto tudo o que acontece
  • Infraestrutura participando resulta em melhor planejamento do ambiente de produção
  • A participação da infraestrutura resulta em monitoramento mais eficaz da aplicação
  • Desenvolvimento começa a compreender melhor a infra e isso resulta em um produto melhor
  • Equipes trabalhando em conjunto para aumentar o valor do negócio

 

Para a empresa

  • Melhor comunicação entre desenvolvimento e infraestrutura (diminuição de conflitos)
  • As soluções funcionam com maior estabilidade e desempenho
  • Entregas mais rápidas
  • Menor tempo de paradas
  • Diminuição de incidentes
  • Diminuição de custos
  • Diminuição de riscos
  • Aumento do valor do negócio

 

Quer saber mais sobre os resultados da cultura DevOps aplicada em empresas? A Puppet divulgou o Relatório 2016 e apresenta diversos casos de sucesso da implementação de DevOps, além de estatísticas e dados de equipes de alta performance que utilizam a tecnologia. Para saber mais, leia este post que a Instruct separou sobre o assunto.