Close

O que é a cultura de DevOps?

Como a cultura DevOps ajuda a alinhar pessoas, processos e ferramentas para um foco mais unificado no cliente.

Foto do rosto de Tom Hall
Tom Hall

Representante e Profissional de DevOps


Colaboração

O DevOps é uma abordagem ágil à mudança organizacional que busca conectar equipes tradicionais e em silos e estabelecer novos processos que facilitem uma maior colaboração. Embora o DevOps seja viabilizado por ferramentas e práticas de engenharia ágeis novas, elas não são suficientes para obter os benefícios do DevOps. Sem a mentalidade, os rituais e a cultura certos, é difícil cumprir a promessa completa do DevOps.

As pessoas e a cultura são os principais fatores de uma implementação de DevOps bem-sucedida.
- Pesquisa de Tendências de DevOps da Atlassian de 2020

O que é a cultura de DevOps?


Em sua essência, a cultura de DevOps envolve mais colaboração e responsabilidade compartilhada entre o desenvolvimento e as operações dos produtos criados e mantidos por eles. Ela ajuda as empresas a alinhar funcionários, processos e ferramentas para um foco mais unificado no cliente.

Essa integração envolve a dedicação de equipes multidisciplinares que assumem a responsabilidade por todo o ciclo de vida do produto. As equipes de DevOps trabalham com autonomia e adotam uma cultura de engenharia de software, fluxo de trabalho e conjunto de ferramentas que elevam os requisitos operacionais ao mesmo nível de importância que a arquitetura, design e desenvolvimento. O entendimento de que os desenvolvedores que criam, também executam, aproxima os desenvolvedores do usuário, com uma maior compreensão dos requisitos e necessidades destes. Com as equipes de operações mais envolvidas no processo de desenvolvimento, elas podem adicionar requisitos de manutenção e necessidades do cliente para um produto melhor.

No centro da cultura DevOps está o aumento da transparência, a comunicação e a colaboração entre equipes que trabalhavam em silos de maneira geral. Mas há mudanças culturais importantes que precisam acontecer para aproximar essas equipes. O DevOps é uma mudança na cultura organizacional que enfatiza o aprendizado e a melhoria contínuos, em especial, por meio da autonomia da equipe, feedback rápido, alta empatia e confiança e colaboração entre equipes.

Logotipo do pensamento consciente
Material relacionado

Adote uma mentalidade que dê prioridade ao cliente

Logotipo de troféu
Material relacionado

Saiba mais sobre os benefícios do DevOps

O DevOps envolve responsabilidades compartilhadas. As equipes de desenvolvimento e operações devem ser responsáveis pelo êxito ou falha de um produto. É esperado que os desenvolvedores façam mais do que apenas desenvolver e encaminhar para as operações — eles devem compartilhar a responsabilidade de supervisionar um produto durante todo o ciclo de vida, adotando uma mentalidade "você cria, você gerencia". Eles testam e operam software e colaboram mais com o controle de qualidade e as operações de TI. Quando eles entendem os desafios enfrentados pelas operações, é mais provável que simplifiquem a implementação e a manutenção. Da mesma forma, quando as operações entendem os objetivos empresariais do sistema, elas podem trabalhar com os desenvolvedores para ajudar a definir as necessidades operacionais de um sistema e adotar ferramentas de automação.

As equipes autônomas são outro aspecto importante do DevOps. Para que as equipes de desenvolvimento e operações colaborem com eficácia, elas precisam tomar decisões e implementar mudanças sem um processo de aprovação complicado e demorado. Essas ações envolvem a confiança nas equipes e o estabelecimento de um ambiente onde não exista medo de falhar. Essas equipes devem ter os processos e as ferramentas certas para tomar decisões de maneira mais rápida e fácil, para cada nível de risco para o cliente.

Por exemplo, um fluxo de trabalho de desenvolvimento típico pode exigir o envolvimento de vários colaboradores em equipes diferentes para implementar alterações de código. O desenvolvedor faz uma alteração de código e o envia para um repositório de controle de fonte, o engenheiro de compilação cria e implementa o código em um ambiente de teste, o proprietário do produto atualiza o status do trabalho em uma ferramenta de acompanhamento de itens, e assim por diante. Uma equipe autônoma vai aproveitar as ferramentas que automatizam esses processos, de modo que o envio do novo código acione a criação e a implementação de uma nova função em um ambiente de teste e a ferramenta de acompanhamento de itens seja atualizada de maneira automática.

Por exemplo, uma equipe é prejudicada por requisitos como ter que abrir um ticket com uma equipe de operações separada para realizar uma alteração trivial na infraestrutura, como uma nova entrada de DNS. Uma tarefa que deveria ser realizada em segundos acaba levando dias ou semanas. Uma equipe autônoma é capaz de implementar essas alterações por conta própria, seja por ter alguém na equipe que tenha as habilidades e a experiência corretas ou acesso a ferramentas de autoatendimento.

Uma cultura de equipe de DevOps valoriza o feedback rápido que pode ajudar na melhoria contínua de uma equipe unificada de desenvolvimento e operações. Em um ambiente em que as equipes de desenvolvimento e operações estão em silos isolados, muitas vezes há lentidão no recebimento do feedback sobre o desempenho e a estabilidade do software aplicativo em produção pela equipe de desenvolvimento, quando chega até ela. O DevOps garante que os desenvolvedores recebam o feedback rápido necessário para iterar e melhorar com rapidez o código do aplicativo, o que exige colaboração entre a equipe de operações no projeto e implementação de estratégias de monitoramento e relatórios de aplicativos. Por exemplo, qualquer ferramenta de integração contínua adequada e satisfatória vai permitir a compilação e o teste automatizados de novos envios de código, além de proporcionar ao desenvolvedor feedback imediato sobre a qualidade de seu código.

A automação é essencial para a cultura de DevOps, pois permite uma grande colaboração e disponibiliza recursos. Automatizar e integrar os processos entre as equipes de desenvolvimento de software e de TI as ajuda a criar, testar e lançar software com mais rapidez e segurança.

Quais são os benefícios da cultura de DevOps?


A vantagem mais evidente e impactante da adoção de uma cultura de DevOps são lançamentos de software simplificados, frequentes e de alta qualidade. Eles não só aumentam o desempenho da empresa, mas também a satisfação dos funcionários.

Uma cultura de DevOps promove altos níveis de confiança e colaboração, resulta em tomadas de decisão de alta qualidade e níveis ainda mais altos de satisfação no trabalho, de acordo com o livro “Accelerate: Building and Scaling High Performing Technology Organizations”.

Adotar uma cultura de DevOps é fundamental para criar uma organização de engenharia de alto desempenho sem comprometer a satisfação dos funcionários. Todos saem ganhando. Para o engenheiro, não há nada como a sensação de implementar e executar com frequência e facilidade um software estável e de alto desempenho que deixa seus usuários satisfeitos e, para os executivos, os melhores resultados de negócios sendo alcançados.

Quais são os desafios?


De modo geral, a adoção total de uma cultura de DevOps exige que indivíduos e equipes façam mudanças significativas na maneira como trabalham e, portanto, requer adesão nos níveis mais altos da organização.

Um esforço de base pode ser, e muitas vezes é, um ponto de partida importante para obter a adesão dos níveis de gestão e executivo para uma transformação de DevOps. Muitas vezes, o argumento mais convincente a favor de uma adoção mais ampla do DevOps é quando alguns indivíduos ou pequenas equipes adotam uma abordagem de DevOps e começam a demonstrar o seu êxito.

Os altos níveis de autonomia e confiança típicos de uma cultura de DevOps podem ser difíceis de manter se houver um histórico de conflito entre qualquer um dos indivíduos ou equipes envolvidas. Quanto mais em silos as equipes trabalhavam antes de tentar adotar uma abordagem de DevOps, mais difícil vai ser criar conexões.

Mudar é difícil. Mesmo em ambientes onde existe um alto nível de harmonia entre os indivíduos e as equipes existentes, se as vantagens da mudança não forem articuladas e compreendidas com clareza, pode ser difícil incentivar a aceitação e a disposição para colocá-la em prática.

É compreensível que as organizações com uma sólida mentalidade de engenharia adotem na hora ferramentas e tecnologias para solucionar os desafios empresariais. Sim, existem ferramentas e tecnologias que podem ajudar sua organização a fazer a transição para uma abordagem de DevOps. Mas mudar ferramentas e tecnologias sem a mudança de cultura costuma ser chamado de “DevOps de culto à carga”, pois muda a fachada sem abordar a desvantagem na base.

Considerações sobre a transição para a cultura de DevOps


Comunicação aberta

Um dos desafios mais importantes que o DevOps visa combater são os silos de conhecimento, experiência e trabalho em diferentes unidades organizacionais. Quando os programadores que criam código e os administradores do sistema que o implementam e fazem a manutenção não se comunicam, é provável que haja ineficiências.

A capacidade de cometer erros

Muitas organizações, equipes e indivíduos exercem uma pressão extraordinária sobre si mesmos e aos outros para nunca cometer erros. Se falhar não é uma opção, é menos provável que um indivíduo ou equipe tente uma nova abordagem para solucionar um problema ou desenvolver funções inovadores.

Essa mentalidade se reflete na antiga obsessão em medir o “Tempo Médio Entre Falhas” (MTBF) em relação ao “Tempo Médio de Recuperação” (MTTR). O MTBF utiliza ferramentas como “análise de causa raiz” para identificar a origem das falhas e tentar impedir que elas ocorram de novo. O MTTR reflete uma visão dos aplicativos de software como sistemas complexos que podem falhar de maneiras imprevisíveis e se concentra na recuperação rápida quando esses problemas acontecem.

Uma “retrospectiva sem apontar culpados” é uma função comum na cultura de DevOps. Os resultados podem ser melhorados quando uma equipe se reúne no final de um sprint ou projeto para discutir o que correu bem e o que poderia ser melhorado, em um ambiente aberto e seguro.

Uma visão que não aponta culpados para falhas funciona, de modo parcial, tão bem porque adota uma mentalidade de crescimento, reconhecendo que erros acontecem, mas trabalhando com a premissa de que as pessoas e as organizações são capazes de aprender, crescer e melhorar.
- "DevOps eficaz" de Jennifer Davis e Katherine Daniels

Um novo conjunto de processos

Cultivar uma cultura de DevOps requer o desenvolvimento de abordagens novas para problemas antigos. O DevOps envolve a mudança do processo em silos de programadores que criam códigos de aplicativo e os "encaminham" para uma equipe de operações que implementa e opera o aplicativo. A abordagem de DevOps requer que as equipes de desenvolvimento e as operações trabalhem juntas durante todo o ciclo de vida do projeto.

Com frequência, a integração e a entrega contínuas (CI/CD) são consideradas necessárias para uma cultura de DevOps. Um terceiro processo, a implementação contínua, é adotado e promovido por organizações de grande porte como a Netflix, mas não é adotado (ou obrigatório) com frequência na maioria das empresas de menor porte. Essa situação ocorre porque a implementação contínua de novas funções em um ambiente de produção requer um alto grau de confiança de que o novo código foi testado de maneira adequada e pode ser implementado com segurança (por exemplo, por trás da alternância de funções). Portanto, a menos que sua organização implemente muitas vezes ao dia, talvez não valha a pena investir nos processos que apoiam essa abordagem.

Na maioria dos casos, realizar uma variação do “desenvolvimento baseado em troncos” vai simplificar muito os esforços de CI/CD. Neste modelo, a equipe elimina ramificações de funções de longa duração e faz confirmações frequentes para a ramificação do “tronco” do código.

Um componente importante do desenvolvimento baseado em troncos é o teste automatizado abrangente: unidade, integração e regressão. Ele ajuda a garantir que todas as novas confirmações para a ramificação do tronco tenham sido examinadas por completo quando enviadas ao repositório.

Integração contínua é o processo de automatizar a integração de alterações de código de vários colaboradores em um único projeto de software. Ele vai além das equipes de desenvolvimento e passa por toda a organização. Por exemplo, as equipes de produto devem coordenar quando funções e correções vão ser lançadas em sequência e quais membros da equipe vão ser os responsáveis.

Entrega contínua é uma metodologia organizacional que reúne equipes de engenharia e não engenharia, como design, produto e marketing, para a disponibilização de um produto. Ambientes sem implementação contínua incentivam o comportamento de “passar adiante”, em que os desenvolvedores se concentram na equipe de controle de qualidade como a principal experiência do usuário. Significa que a ramificação do “tronco” do seu repositório está em um estado “implementável” o tempo todo.

A implementação contínua permite que as alterações de código sejam implementadas de modo automático na produção quando realizadas, quer sejam ocultas atrás de um sinalizador de função, implementadas em uma pequena porcentagem de clientes e/ou revertidas com facilidade. Assim, as equipes têm mais flexibilidade para responder às mudanças dos mercados e às demandas dos clientes, já que podem reagir ao feedback e implementar e validar novas funções com rapidez. Elas também podem reverter funções com facilidade, permitindo que as equipes não sejam prejudicadas por interromper a compilação.

Sinalizador de funções, alternância de funções ou implementação para teste de funções são formas comuns de garantir que os novos funções do aplicativo não apareçam ou funcionem quando implementados no ambiente de produção, mas possam ser ativados com o mínimo de esforço. Essa estratégia possibilita a implementação contínua, pois há pouquíssimo risco de gerar impactos negativos aos usuários. Também é comum restringir funções a um subconjunto da base de usuários, dividindo-os por localização ou executando instâncias de servidor separadas e lançando funções para apenas um servidor acessível aos usuários.

Uma cadeia de ferramentas atualizada

A maioria das equipes de desenvolvimento de software utiliza pelo menos um tipo de controle de versão, acompanhamento de itens e ferramentas de monitoramento de aplicativos. Todas essas ferramentas são importantes para dar suporte à cultura de DevOps, mas talvez a adição mais importante ao conjunto de ferramentas tradicional seja o software de suporte à integração/implementação contínuas. Ter um fluxo de trabalho automatizado que realiza confirmações, testes e implementações é, de fato, a única maneira de ter o feedback rápido que a cultura de DevOps exige.

DevOps - uma mudança cultural que gera resultados


Os desenvolvedores estão em busca do sonho de disponibilizar software com mais frequência, menos esforço e menos erros há décadas. Agora, as ferramentas e práticas para transformar esse cenário em realidade estão enfim disponíveis.

A Atlassian descobriu que as empresas que praticam o DevOps afirmam que lançam entregáveis de maior qualidade (61%), com maior frequência de implementação e tempo de disponibilização no mercado mais rápido (49%). E não são apenas as empresas que têm vantagens: profissionais dizem que aprenderam novas habilidades (78%) e receberam aumentos (48%).

Cultivar uma cultura de DevOps pode ser desafiador, mas as recompensas de uma maior satisfação para desenvolvedores, gerentes e clientes valem a pena.

Quer melhorar sua cultura de DevOps? Comece com o Monitor de Saúde da Equipe de Serviços. Além disso, pratique a comunicação, a colaboração e o brainstorming com colegas com as 4 principais táticas para criar uma cultura de DevOps.

Tom Hall
Tom Hall

Tom Hall é defensor e praticante de DevOps, leitor voraz e pianista amador.
Entre suas realizações nos últimos 20 anos estão as certificações da Novell, EMC, VMware e AWS. Ele ajudou a organizar os DevOpsDays em Atlanta em 2016 e em Austin, no Texas, nos anos seguintes.


Compartilhar este artigo

Leitura recomendada

Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Ilustração do DevOps

Comunidade de DevOps

Ilustração do DevOps

Caminho de aprendizagem de DevOps

Ilustração do mapa

Comece gratuitamente

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up