O que é o Modelo de DevOps? Explorando práticas fundamentais no DevOps
23 de maio de 2022 // 11 min read
O DevOps ajuda as equipes a entregar produtos de alta qualidade com mais rapidez reduzindo o atrito entre as etapas de escrever, testar e implantar código. O GitHub oferece uma plataforma holística projetada para ajudar as organizações a adotar o DevOps com sucesso, facilitando a entrega contínua e a melhoria de softwares.
O que é um modelo de DevOps?
As pessoas frequentemente perguntam o que é um modelo de DevOps, mas isso significa não entender o ponto do DevOps. O DevOps é uma abordagem usada para criar softwares que abrange todo o ciclo de vida de desenvolvimento. É uma mistura de práticas, cultura e tecnologia que visam a oferecer valor aos clientes finais de forma contínua.
Ou seja, não há uma abordagem de tamanho único para DevOps. Sua implementação varia de organização para organização. Apesar disso, o DevOps tem uma estrutura de práticas que todas as organizações aproveitam de várias formas.
Veja como a Procter & Gamble obteve sucesso com DevOps
Cada implementação de DevOps é única e direcionada pelas necessidades comerciais de uma empresa. Descubra como a Procter & Gamble fez o DevOps funcionar na empresa.
No essência do DevOps está a ideia de que todos os responsáveis por um produto devem colaborar como uma equipe unificada. Em vez de trabalhar de forma separada com desenvolvimento, QA (controle de qualidade) e pontos de isolamento de operações, o DevOps reúne pessoas para assumir a responsabilidade de ponta a ponta do planejamento, compilação, entrega e melhoria de softwares.
O funcionamento do DevOps varia de empresa para empresa. Mas há três tópicos centrais que você encontrará em todas as organizações que adotam o DevOps com êxito.
Todos são responsáveis pela qualidade
O DevOps reduz as barreiras entre as disciplinas encontradas em equipes de desenvolvimento de software. Os profissionais costumam focar na criação de produtos de ponta a ponta em vez de produtos isolados e incrementais. Isso significa que o mesmo indivíduo vai colaborar em todo o ciclo de vida do desenvolvimento de software, do planejamento à compilação, teste e implantação de produto.
Entrega de código quando estiver pronto
As práticas de desenvolvimento de software tradicionais frequentemente agrupam várias mudanças em lançamentos maiores. Isso significa que os clientes geralmente esperam mais tempo por atualizações de softwares. Isso também dificulta a previsão do impacto indireto causado pelas grandes alterações de código, exercendo mais pressão sobre as equipes de operações e desenvolvimento. Por outro lado, o DevOps favorece as alterações de código incrementais que são mais fáceis de desenvolver, testar e entregar quando estiverem prontas. Assim que um desenvolvedor faz mudanças de código no commit em um projeto, ferramentas de CI/CD (integração e implantação contínuas) facilitam os testes automatizados, criação de aplicações e integração de código ou relatório de problemas. Muitos profissionais de DevOps estendem o conceito da melhoria contínua em seus próprios trabalhos, avaliando e ajustando os processos ao longo do tempo.
A automação melhora a qualidade e a previsibilidade
Em uma prática de DevOps bem-sucedida, qualquer coisa que pode ser automatizada deve ser automatizada. Isso reduz o risco de erro humano e facilita a escalabilidade dos produtos. As ferramentas são usadas para automatizar a configuração e implantação de infraestruturas, enquanto as ferramentas de análise estática encontram e destacam as vulnerabilidades de segurança. Os profissionais de DevOps se esforçam para automatizar tarefas repetitivas em todas as fases.
O que é um modelo de operação de DevOps?
Em comparação com métodos de desenvolvimento tradicionais em que as equipes de programação escrevem o código, as equipes de testes encontram bugs e as equipes de operações cuidam da infraestrutura, o DevOps pode parecer uma mudança radical. Como prática, o DevOps visa essencialmente a transformar as organizações, reunindo equipes tradicionalmente isoladas em todas as partes do SDLC (ciclo de vida de desenvolvimento de software).
Embora possa parecer assustador, é possível começar sua jornada de DevOps com mudanças relativamente pequenas. Para saber por onde começar, vejamos algumas das implicações operacionais do DevOps.
Nossa filosofia é criar automação e um excelente DevOps para a empresa que você edificará amanhã.
Todd O'Connor, engenheiro sênior de SCM da Adobe
Cultura
O uso de ferramentas geralmente é o aspecto mais visível do DevOps. No entanto, o DevOps começa com uma mudança cultural cuja finalidade é alterar a forma como pensamos sobre o conhecimento e a responsabilidade.
Considere funções tradicionais de criação de software como desenvolvimento, testes e operações. Elas incentivam as pessoas a pensar em termos de responsabilidades e projetos estritamente definidos em vez de olhar para o produto como um todo.
Se escrever o código é diferente de executá-lo, por exemplo, então, a pessoa que escreve esse código é menos propensa a pensar sobre como facilitar a implantação de seu trabalho ou fazer com que ele seja mais resiliente diante do aumento na demanda. Em organizações maiores, as equipes de programação, controle de qualidade e operações provavelmente nem se conhecem.
Uma cultura de DevOps dá ênfase às pessoas e aos produtos. Funções distintas abrem espaço para indivíduos que compartilham responsabilidades a mesma responsabilidade de entregar o produto e o trabalho deles não está pronto até que o software possa resolver problemas na produção.
Para que uma cultura de DevOps prospere, há três princípios que uma organização deve seguir:
Autonomia: Todos têm o que precisam para realizar suas funções sem bloquear os colegas.
Transparência: O fluxo de informações é a moeda do DevOps. Seja pela de comunicação automatizada (como monitoramento e instrumentação) ou por uma tendência de levantar questões, a cultura de DevOps cria ciclos de feedback que trazem à tona e ajudam a resolver ineficiências.
Melhoria e aprendizado contínuos: Em uma cultura de DevOps, cada correção ou recurso é uma chance de encontrar melhores formas de trabalhar e uma oportunidade de crescimento para os indivíduos. Uma cultura de compartilhamento significa que a organização geral se torna mais eficaz ao longo do tempo.
Ao colocar pessoas acima do processo, o DevOps cria uma cultura em que o sistema atende aos indivíduos, ajudando-os a fazer o melhor produto possível. E com uma compreensão prática de cada parte do ciclo de vida do desenvolvimento em vez de apenas uma área de especialização restrita, esses indivíduos podem ver como cada elemento afeta o próximo. Essa percepção levou a um trabalho mais ponderado que reduz o atrito ao longo do ciclo de vida do desenvolvimento de software.
Estrutura de equipes
Em organizações que não são DevOps, pontos de isolamento de funções restritas separam os arquitetos dos desenvolvedores e estes dos profissionais que realizam testes e operações. De uma semana para a outra, um indivíduo pode trabalhar em diversos projetos sem participar do que acontece quando seu trabalho está pronto.
O DevOps muda o foco dos projetos e funções para os produtos e pessoas. O mesmo indivíduo ou grupo de pessoas pode cuidar de um produto, desde o planejamento até o desenvolvimento e prosseguir com a produção. O objetivo é remover as barreiras entre os desenvolvedores e os profissionais de operações e substitui-los por “engenheiros” que têm uma perspectiva de ponta a ponta com uma possível especialização. Os nomes dos cargos variam de organização para organização, mas a ideia central é que a realidade da criação de um produto de software raramente corresponde a funções claramente demarcadas.
Ao adotar uma visão centrada no produto, o DevOps aproxima os profissionais das necessidades dos clientes, economiza com a alternância de contexto e oferece a agilidade para resolver problemas com mais rapidez.
Processo
No DevOps, os planos cuidadosamente elaborados, a burocracia e os lançamentos de amplo alcance do desenvolvimento de software tradicional abriram espaço para práticas que permitem melhorias constantes e colaborativas.
De forma específica, as organizações de DevOps seguem processos e práticas que favorecem:
Mudança incremental: Em vez de lançar versões maiores e aglomeradas, as equipes de DevOps trabalham com mudanças menores e frequentes que agregam valor incremental à produção em intervalos de tempo menores e com mais facilidade de planejar, desenvolver, testar e implantar.
Melhoria contínua: Essas mudanças incrementais são integradas, criadas e implantadas por automação assim que passam nos testes em vez de depender de processos manuais.
Ferramentas
Ferramentas são a manifestação prática da cultura e dos processos de DevOps e estão presentes em todas as partes do ciclo de vida do desenvolvimento de software. Em DevOps, as ferramentas geralmente são usadas para aplicar a automação sempre que possível, criar ciclos de feedback e liberar recursos organizacionais.
De modo geral, as ferramentas de DevOps podem ser divididas em quatro categorias:
Controle de versão: Grande parte das equipes de desenvolvimento usam alguma forma de gerenciamento de código-fonte, mas, em DevOps, ferramentas de controle de versão, como o Git, são ferramentas básicas.
Integração e implantação contínuas: Ferramentas de CI/CD, como o GitHub Actions, são usadas para automatizar a compilação, testes e a implantação de alterações em códigos e normalmente são acionadas por um commit do Git.
Infraestrutura como código: Ferramentas como o Azure ARM são usadas para gerenciar e dimensionar máquinas virtuais, contêineres e código sem servidor de forma programática para atender à demanda em tempo real.
Observabilidade: Ferramentas de teste, monitoramento e relatório são usadas para entender o tempo de atividade e o desempenho do sistema criam ciclos de feedback para melhorar os serviços.
Vantagens e desvantagens do modelo de DevOps
O DevOps já provou seu valor em milhares de organizações de desenvolvimento de software ao redor do mundo. Segundo o Relatório de DevOps Corporativo da Microsoft, as organizações de DevOps de elite entregam código de 4 a 5 vezes mais rápido do que outras organizações.
No entanto, antes de adotar o DevOps em sua organização, é preciso entender suas vantagens e as desvantagens.
De forma mais específica, você deve considerar o seguinte em relação aos seus produtos, pessoas e objetivos estratégicos:
A compensação entre o trabalho de adotar o DevOps e os benefícios que você colherá
Como suas equipes de tecnologia estão estruturadas e interagem culturalmente entre si
A adaptabilidade do software que você cria. Por exemplo, algumas arquiteturas e stacks de tecnologia se adaptam ao DevOps com mais facilidade do que outras
Vejamos algumas das vantagens e desvantagens do modelo de DevOps com um pouco mais de detalhes.
Vantagens do modelo de DevOps
O DevOps pode oferecer melhorias mensuráveis em cada parte do ciclo de vida do desenvolvimento de software. Para que esses ganhos se concretizem, é necessário que haja um esforço conjunto de toda a organização para alterar a cultura, o processo e as ferramentas. Na prática, as organizações que adotam o DevOps com êxito geralmente relatam os seguintes benefícios:
Entrega mais rápida: O DevOps colabora para agregar valor aos usuários mais rapidamente dividindo o trabalho em melhorias incrementais em vez de grandes lançamentos e enviar as mudanças de código para a produção assim que estiverem prontas. Dependendo da velocidade, algumas organizações entregam diversos lançamentos de código todos os dias.
Mais automação: As práticas de DevOps aplicam a automação em grande parte do ciclo de vida do desenvolvimento de software para melhorar e padronizar os testes, a compilação, integração e implantação de código. Isso reduz os custos organizacionais ao diminuir o número de tarefas repetitivas com as quais os membros da equipe trabalham. Também é bom para a experiência do desenvolvedor, uma vez que os desenvolvedores gastam menos tempo realizando tarefas repetitivas e têm mais tempo para focar em trabalhos criativos e complicados.
Aumento da qualidade: Da mesma forma, a automação de processos como teste e análise de segurança reduz o risco de bugs e vulnerabilidades ao chegar à produção.
Escalabilidade de processos melhorada: Processos orientados por dados e mudança interativa aumentam a capacidade de crescimento da organização. Junto com a automação, uma cultura explicitamente definida e melhoria contínua, eles permitem que equipes menores ofereçam mais valor enquanto facilitam a integração de novos membros à equipe.
Produtos mais escaláveis: No nível do produto, a preferência do DevOps por versões incrementais facilita a escalabilidade de produtos para atender à demanda do sistema de usuários finais em tempo real.
Maior resiliência: Ao incentivar os ciclos de feedback por meio de monitoramento automatizado e ferramentas de relatório, o DevOps ajuda as equipes a criar softwares mais resilientes. E quando surgem problemas, a automação e as ferramentas de DevOps ajudam a levar as correções para a produção com mais rapidez do que nas práticas de desenvolvimento de software tradicionais.
Desvantagens do modelo DevOps
A maioria das organizações começa devagar e constrói uma cultura de DevOps ao longo do tempo. No entanto, algumas delas adotam o DevOps apenas de forma parcial e, consequentemente, obtêm apenas benefícios limitados. Outros implementam processos de DevOps sem adaptá-los às necessidades específicas das pessoas, estratégias e produtos.
Então, quais são as possíveis desvantagens de uma estratégia de DevOps mal planejada?
DevOps é um processo contínuo, não uma mudança pontual: Em organizações de DevOps bem-sucedidas, o DevOps é a forma natural de trabalhar. Por padrão, as pessoas pensam que, em termos de produtos, a colaboração acontece sem intervenção e todos buscam maneiras de melhorar o processo. Sem um reforço contínuo, é mais difícil manter esse ritmo.
Ferramentas mal alinhadas: Como aspecto mais visível de uma prática de DevOps, é fácil confundir a adoção de ferramentas DevOps com a adoção do DevOps. No entanto, sem a cultura e as práticas corretas, o uso de ferramentas de DevOps entrará em atrito com os processos existentes.
Implementações que não são mantidas: Mesmo quando você tem as ferramentas corretas e o contexto geral para dar suporte a elas, a integração em um único pipeline de DevOps exige um compromisso constante. Sem isso, surge uma lacuna entre o processo e as ferramentas, sendo necessário intervir manualmente.
E o modelo de maturidade de DevOps?
Inserir o DevOps em sua organização é uma jornada contínua com diferentes níveis de adoção nas diversas fases da entrega de produto. O DevOps é dinâmico, assim como uma empresa precisa, e sua implementação varia de organização para organização.
Isso significa que não existe um modelo de maturidade de DevOps definido. No GitHub, evitamos falar sobre modelos de maturidade de DevOps, pois implica que existe uma lista de verificação que qualquer organização pode usar para realizar o “DevOps”. Isso não é verdade. Em sua essência, DevOps é uma prática contínua. No entanto, há etapas e marcadores comuns de sucesso que as empresas podem alcançar trabalhando nesse sentido.
Nossa filosofia é criar automação e um excelente DevOps para a empresa que você edificará amanhã.
Todd O'Connor, engenheiro sênior de SCM da Adobe
Imagine, por exemplo, que uma empresa está considerando a adoção de uma prática de DevOps. Na fase inicial, as equipes de desenvolvimento e de operações podem estar isoladas e focadas em suas funções individuais. Isso significa que, enquanto a equipe de desenvolvimento cria código, a equipe de operações é obrigada a reagir em prol de dar suporte a esse código. Um primeiro passo interessante para essa organização seria a junção de ambas as equipes para começar a planejar, compilar e entregar código de maneira colaborativa.
No outro extremo do espectro estão as organizações cujo SDLC (ciclo de vida de desenvolvimento de software) inteiro é automatizado e conta com uma profunda colaboração. Equipes focadas no produto trabalham juntas para entregar melhorias contínuas usando a automação e ferramentas de DevOps especializadas em cada fase.
Então, embora cada jornada de adoção de DevOps pelas organizações seja única, há princípios fundamentais que indicam sucesso. O fato é que, se você fizer essas coisas, está se saindo bem com o DevOps, mas dependendo de seu setor, haverá coisas que são específicas e necessárias para a sua prática de DevOps.
Fases importantes da jornada de adoção do DevOps
DevOps Experimental | DevOps Aprendido | DevOps Proativo | DevOps Nativo |
---|---|---|---|
Uma ou duas equipes estão explorando o DevOps Pontos de isolamento baseados em funções ainda estão altamente em vigor Algumas tentativas de automação, mas com intervenção manual necessária em cada etapa Nenhum processo formal | Algumas partes da organização adotaram equipes de produto colaborativas Essas equipes estão usando ferramentas de DevOps de maneira eficaz, mas cada equipe tem sua própria abordagem O processo está em formação e é amplamente aprendido a partir do que outras organizações estão fazendo | Todos os novos produtos começam a partir do modelo de DevOps Há medidas em vigor para monitorar a eficiência dos processos e contribuir para melhorias A maioria da organização está usando ferramentas de DevOps | O DevOps foi adotado em toda a organização O processo de DevOps foi ajustado exatamente para as necessidades da organização, com atualizações regulares conforme as circunstâncias mudam Testes, compilação e implantação são automatizados usando ferramentas de DevOps Todas as equipes são focadas em produtos, com um fluxo de comunicação simples e colaboração em toda a organização |
Crie sua prática de DevOps no GitHub
O GitHub é uma plataforma integrada que leva as empresas da ideia ao planejamento, à compilação e à produção, combinando uma experiência de desenvolvedor focada com uma infraestrutura poderosa e totalmente gerenciada de desenvolvimento, automação e teste.
Passe do planejamento para a compilação | Aumente a velocidade dos desenvolvedores | Automatize tudo | Proteja seu código enquanto o escreve |
---|---|---|---|
Crie planos de roadmap junto à sua base de código e atribua tarefas aos membros da equipe rapidamente com quadros e tabelas de projeto poderosos que se integram totalmente ao seu projeto. Saiba mais sobre o GitHub Issues |
Reduza o tempo de commit. Elimine o gerenciamento do ambiente e a alternância de contexto para seus desenvolvedores. Simplifique a aquisição e a manutenção de TI com um espaço seguro e gerenciado na nuvem. Explore o Codespaces |
Automatize todos os fluxos de trabalho do desenvolvedor do seu software. Escale de maneira confiável e segura com uma poderosa infraestrutura de desenvolvimento, teste e automação, totalmente gerenciada pelo GitHub Saiba mais sobre o GitHub Actions |
Proteja seu código, dependências, tokens e dados confidenciais durante todo o ciclo de vida de desenvolvimento de software e resolva vulnerabilidades automaticamente. Veja como ajudamos você a manter a segurança |
Tags