O DevOps surgiu como uma filosofia essencial, colmatando a lacuna entre o desenvolvimento de software e as operações de TI. Vai além da simples utilização de ferramentas DevOps. Uma equipa DevOps bem-sucedida não só acelera o processo de entrega, como também garante qualidade e fiabilidade. No entanto, criar uma equipa deste tipo requer uma combinação harmoniosa de ferramentas, cultura, processos, colaboração e muito mais. Quais são os componentes essenciais de uma equipa DevOps de excelência e como podem as organizações integrá-los para obter resultados ideais? Como parte desta série, tivemos o prazer de entrevistar Dylan Etkin, cofundador e CEO da Sleuth.
Olá, Dylan – Pode partilhar connosco a sua história?
Comecei a minha carreira como engenheiro de software. Tive a sorte de entrar numa pequena empresa emergente, a Atlassian, como o seu 20.º funcionário. Passei 10 anos na Atlassian, aprendendo imenso e vendo a organização crescer de 20 para 1200 pessoas. Trabalhei como um dos primeiros 3 engenheiros do Jira, fui o primeiro arquiteto do Jira e liderei a área de engenharia do Bitbucket, fazendo esse produto crescer de 40 mil para 2 milhões de utilizadores.
Saí da Atlassian e juntei-me a uma pequena empresa emergente, a Statuspage. Um ano mais tarde, a Statuspage foi adquirida pela Atlassian e descobri que estava novamente de volta à casa-mãe. Depois de liderar essa equipa durante 3 anos na Atlassian, decidi lançar-me por conta própria, fundando a Sleuth para transformar em produto aquilo que sempre foi a minha paixão: criar equipas de engenharia eficientes.
Sempre me fascinaram as ferramentas para programadores e a possibilidade de ajudar as equipas a serem eficientes e a aprenderem continuamente.
A quem atribui o mérito de o ter ajudado a alcançar o sucesso?
Muitas pessoas ajudaram-me ao longo do caminho. À medida que fui envelhecendo, apercebi-me cada vez mais da rede especial que criei e de como todos estão disponíveis para ajudar quando lhes é pedido.
Um exemplo que se destaca é John Kodumal, cofundador e CTO da LaunchDarkly. O John e eu éramos colegas na Atlassian. Quando saiu para fundar a LaunchDarkly, partilhava sempre abertamente a sua experiência numa empresa emergente.
Quando comecei a ganhar coragem para fundar a Sleuth, ele apoiou-me a todos os níveis. Desde trocar ideias e conversar abertamente sobre como avançar até inscrever-se como o nosso primeiro cliente, o John ajudou-me sempre em cada etapa do meu percurso.
Pode partilhar connosco três pontos fortes, competências ou características que o ajudaram a chegar a este ponto da sua carreira? Como podem outras pessoas desenvolver ativamente estas áreas?
- Persistência. A competência e a inteligência só o levarão até certo ponto. Voltar repetidamente a um problema é muito mais poderoso. A persistência, mesmo perante vários fracassos, definiu o meu sucesso.
- Atenção ao detalhe. Esta é uma característica que sempre me surgiu naturalmente. Enquanto engenheiro, é uma competência vital que permite realizar as tarefas que tem pela frente de uma forma excecional. Num ambiente de empresa emergente, esta competência é ainda mais importante. Ao orientar um produto desde a visão até à realidade, a atenção ao detalhe fará a diferença entre um produto medíocre e algo que os utilizadores adoram.
- Delegação. Por mais que precise de assumir plenamente a responsabilidade pelo seu negócio, uma empresa emergente transforma-se rapidamente num exercício de contratar pessoas que são mais inteligentes do que você em muitas áreas e aceitar ceder as suas peças de Lego para que outras pessoas possam ter sucesso e fazer avançar o negócio.
Que competências ainda está a tentar desenvolver?
Estou sempre a trabalhar em muitas coisas; nunca faltam competências para desenvolver. Neste momento, o que mais me ocupa o pensamento é a arte de obter o melhor das pessoas. Todos são diferentes e saber proporcionar um ambiente onde cada pessoa possa fazer o seu melhor trabalho é um desafio.
Vamos falar sobre como ter uma equipa DevOps bem-sucedida. Quais são os principais objetivos que uma equipa DevOps pode identificar numa jornada de transformação digital?
As equipas DevOps têm autonomia para levar o trabalho do conceito até ao lançamento bem-sucedido em produção, de forma eficiente. Por isso, o principal objetivo de uma equipa DevOps é criar as ferramentas, os processos e a cultura que permitam a cada programador levar rapidamente o trabalho do conceito até ao lançamento bem-sucedido.
Os objetivos que apoiam a concretização do objetivo principal são:
- Capacidade de definir o trabalho em pequenos lotes
- Um processo de integração e entrega contínuas (CI/CD) totalmente automatizado
- Observabilidade e ambientes de pré-produção que funcionem como redes de segurança, para que os programadores possam enviar alterações para produção com confiança
- Um processo claro sobre o que fazer quando as alterações correm mal. Todos sabem como detetar falhas e repor o sistema num estado funcional
- O apoio do resto da organização: gestores de produto, marketing, suporte, vendas e direção. As equipas não conseguirão concretizar uma transformação DevOps sem o apoio de toda a organização
Existem desafios ou armadilhas comuns que as equipas DevOps devam ter em consideração?
Há demasiados para os enumerar. Um que se destaca é reconhecer que praticar DevOps significa atribuir mais responsabilidades ao programador. Isto não acontece gratuitamente e, se não investir em processos e ferramentas, corre o risco de criar um sistema que não deixará tempo algum para que os programadores realizem efetivamente o seu trabalho.
Também corre o risco de criar um ambiente onde os programadores se esgotarão rapidamente. Deve lembrar-se de que a capacidade das pessoas é limitada, pelo que tem de ter em consideração o que implementa para apoiar os programadores que praticam DevOps.
Como podem a colaboração e a comunicação eficazes entre os membros da equipa melhorar a produtividade e o sucesso de uma equipa de DevOps, e que práticas podem facilitá-las?
A comunicação e a colaboração são necessárias para praticar DevOps. Algumas práticas importantes incluem:
- Utilizar um sistema de acompanhamento de problemas para todo o trabalho e incluir esse contexto e informação nos commits e nas revisões de código
- Revisão de código através de pedidos de integração
- Disponibilizar uma solução de conversação em tempo real, como o Slack, para a sua equipa
- Notificações de implementação baseadas na equipa no Slack ou na ferramenta ChatOps da sua equipa
- Aprovações baseadas no Slack para promover alterações dos ambientes de pré-produção para produção
- Notificações individuais aos programadores quando as suas alterações são disponibilizadas e quando violam as condições de falha
- Visibilidade da equipa sobre incidentes e períodos durante os quais as implementações devem aguardar
- Demonstrações da equipa com PMs e outras partes interessadas
- Reuniões diárias de acompanhamento
Que papel desempenha a CI/CD em DevOps e quais são as melhores práticas para implementar pipelines de CI/CD que garantam um processo de lançamento de software contínuo e fiável?
A CI/CD é, discutivelmente, o componente de ferramentas mais importante que apoia uma equipa que pratica DevOps. O ideal é que as equipas tenham um pipeline de implementação totalmente automatizado, que seja executado num período de tempo razoável, para que os programadores não tenham de esperar muito tempo e possam conduzir as suas alterações até à produção. É importante incluir a CI e a execução de testes como parte deste pipeline ideal. Executar um conjunto robusto de testes sobre as suas alterações como condição para a implementação é a sua principal rede de segurança para garantir que são disponibilizadas boas alterações.
Se as equipas apenas pretenderem implementar uma vez por semana, é possível ter um pipeline de implementação que não seja totalmente automatizado. No entanto, se a sua equipa pretender implementar pelo menos uma vez por dia, tem de estar totalmente automatizada e a implementação deve ser um não acontecimento.
Como contribuem a promoção de uma cultura e de uma mentalidade DevOps para o sucesso global de uma equipa de DevOps e que estratégias podem as organizações utilizar para promover esta cultura entre as suas equipas de desenvolvimento e operações?
Para os programadores:
- O planeamento semanal ou quinzenal de sprints pode ajudar a definir o tamanho das tarefas e a criar um acordo da equipa sobre a forma como as tarefas irão caber neste período
- CI automatizada sobre o ramo de lançamento e visibilidade dos resultados para toda a equipa, ajudando-a a manter o lançamento compilável
- Manter uma função de intervenção na equipa, deixando claro quem é responsável por manter o ramo de lançamento compilável
- Um dos melhores mecanismos para conseguir disponibilizar trabalho incompleto é adotar alguma forma de sinalização de funcionalidades.
- Também pode ser altamente eficaz implementar cada pedido de integração individualmente. A adoção deste padrão permite incluir a revisão do tamanho do lote de uma alteração juntamente com a revisão do código do pedido de integração. Se um lote for demasiado grande, os outros membros da equipa podem pedir a um programador que divida a sua alteração em vários pedidos de integração.
- Dispor de métricas suficientes e compreender os seus valores normais para conseguir verificar uma implementação
- Compreender como proceder à escalada e reverter alterações, se necessário
- Ter autonomia para implementar as suas próprias alterações em todos os ambientes que mantém e conseguir fazê-lo rapidamente e sem falhas
Para os PMs e designers:
- Incluir um PM no processo de planeamento para lhe dar a oportunidade de expressar as necessidades do cliente em implementações incrementais.
- Implementar sinalizadores de funcionalidades, permitindo que o código seja disponibilizado sem ainda ser exposto aos clientes. Isto ajuda os PMs a manter a flexibilidade de que necessitam, permitindo simultaneamente que os programadores avancem.
- Dispor de um mecanismo acordado para feedback e retrabalho, como um problema atribuído diretamente a um programador. Uma estratégia para resolver a questão do trabalho incompleto consiste em a equipa adotar ciclos de seis semanas.
Para os Gestores de Engenharia:
- Implementar processos que facilitem a comunicação, como reuniões de planeamento recorrentes, revisões de código e demonstrações semanais.
- Comprometer-se a dedicar tempo de engenharia para manter as compilações do ramo de lançamento aprovadas. Manter o código em circulação também significa investir neste novo sistema. Quando a equipa identifica um estrangulamento, o gestor deve poder permitir que a equipa o elimine (por exemplo, corrigindo testes de CI cuja instabilidade seja superior a 20%).
- Implementar ferramentas que ajudem a medir continuamente as métricas DORA
Para os Executivos:
- Dê visibilidade às métricas Accelerate dos seus projetos e disponibilize-as, com contexto, aos seus executivos.
- Dê visibilidade à disponibilidade ou equivalente das suas aplicações.
- Forneça à sua equipa executiva as mesmas informações de alto nível sobre grandes blocos de funcionalidades que estão a ser lançados.
- Se é um executivo, compreenda que a mudança leva tempo. Exija que as suas equipas assumam a responsabilidade pelos objetivos de alto nível, mas seja flexível quanto à forma como os alcançam. Confie, mas verifique.
- Dedique tempo a explicar à sua organização como está a proporcionar valor aos seus clientes. Explique como funciona a entrega incremental, que elementos serão lançados de uma só vez e como esta forma de trabalhar lhe pode permitir proporcionar valor aos clientes mais rapidamente.
Quais são os componentes essenciais de uma equipa DevOps bem-sucedida?
1 . A equipa trabalha em conjunto numa cultura sem culpabilização.
O desenvolvimento de software é um desporto de equipa. Os incidentes e os erros são oportunidades para as equipas aprenderem, não oportunidades para atribuir culpas. Uma cultura sem culpabilização pode estender-se para além dos incidentes. Ao definir objetivos de melhoria da equipa, esta pode concentrar-se na melhoria dos resultados, em vez de culpar indivíduos ou processos pelo facto de as coisas não estarem como deveriam.
2 . As implementações não são um acontecimento.
Para lançar pequenas alterações incrementais e responder rapidamente a incidentes e ao feedback dos clientes, a implementação tem de ser simples e não provocar medo ou ansiedade. Se uma equipa não confiar nas suas implementações, ou se estas demorarem demasiado tempo ou envolverem etapas manuais, isso dará origem a medo e hesitação, o que impedirá as equipas de adotar o DevOps.
3 . Os programadores têm autonomia individual para levar as alterações desde o conceito até um lançamento fiável em produção. O DevOps funciona quando transfere para as mãos dos programadores a responsabilidade por todo o processo, desde o conceito até ao lançamento. Isto permite à sua equipa dividir o trabalho em pequenos lotes e proporcionar rapidamente valor ao cliente em pequenos incrementos.
4 . A equipa dispõe de redes de segurança, como observabilidade e medidas de falha, para ter confiança e avançar rapidamente (este é um dos muitos benefícios das ferramentas de observabilidade de dados). Acabaram-se os dias de avançar rapidamente e partir coisas. Agora, é necessário avançar rapidamente e de forma fiável. Para tal, é necessário ter redes de segurança automatizadas implementadas.
5 . Toda a organização aderiu ao trabalho num fluxo DevOps.
Que tendências emergentes prevê no panorama do DevOps que poderão ter um impacto significativo nas estratégias de transformação digital no futuro?
Pode parecer uma resposta óbvia neste momento, mas as ferramentas de IA já estão a transformar a forma como os programadores trabalham e terão certamente um grande impacto na forma como o DevOps será praticado no futuro. A IA será, no mínimo, utilizada para detetar e identificar falhas de formas que atualmente não são possíveis.
Se cumprir todas as suas promessas, substituirá completamente os complexos processos de implementação e teste que temos atualmente.
Subscreva a newsletter do The CTO Club para obter mais informações, resumos, perguntas e respostas e muito mais!

