A Metodologia DevOps: Princípios para o Sucesso | StackPulse
A metodologia DevOps funde dois campos – desenvolvimento de software e operações de tecnologia da informação (TI). O principal objetivo da metodologia DevOps é o lançamento rápido de produtos, alcançado através do uso de automação, comunicação e um fluxo de trabalho contínuo.
Os principais princípios centrais do DevOps são treinamento cruzado, colaboração, melhoria contínua, responsabilidade, transparência e automação. As equipas DevOps aplicam estes princípios ao criar um processo DevOps, que normalmente inclui sete fases – planear, codificar, construir, testar, entregar, implementar e monitorizar.
Neste artigo, você aprenderá:
- Qual é a metodologia DevOps?
- 6 princípios centrais DevOps
- O que é um processo DevOps?
- DevOps vs Agile: uma comparação
Qual é a metodologia DevOps?
A metodologia DevOps é um conjunto de práticas que requerem a colaboração das equipas de desenvolvimento e operações ao longo do ciclo de vida do desenvolvimento de software (SDLC). Incorpora práticas Agile e foca na quebra de silos de equipes, automatizando tarefas manuais, e aumentando a produtividade através de feedback contínuo.
Quando se utilizam equipes DevOps, as organizações frequentemente implementam várias práticas e ferramentas simultaneamente. Estas incluem:
- Integração contínua / implementação contínua (CI/CD) – um conjunto de processos que alavanca a automação para melhorar a eficiência, qualidade e velocidade no ciclo de vida de desenvolvimento de software. O CI envolve modificações pequenas e frequentes em bases de código que são testadas e integradas o mais rápido possível. O CD envolve freqüentemente a liberação de novos códigos para a produção sem a necessidade de atualizações manuais ou patches.
- Pipelines-pipelines baseados em nuvem são as cadeias de ferramentas utilizadas para executar fluxos de trabalho como CI/CD. Muitas vezes essas cadeias de ferramentas são construídas com serviços e recursos hospedados na nuvem, permitindo o desenvolvimento nativo da nuvem e maior suporte de equipes distribuídas.
- Microserviços – uma arquitetura usada com aplicativos nativos da nuvem para permitir maior escalabilidade, disponibilidade e flexibilidade. Os microserviços permitem que as equipes construam aplicativos e pipelines que são frouxamente acoplados e fáceis de modificar ou atualizar.
- Infra-estrutura como código (IaaC)- um método que permite que as equipes forneçam, configurem e gerenciem a infra-estrutura através de software e arquivos de definição codificados. Este método permite a automatização de muitas tarefas de infraestrutura e suporta implementações massivas sem requerer significativamente mais recursos da equipe.
Princípios DevOps Core
Ao criar e operar sob uma metodologia DevOps, há vários princípios básicos que você deve considerar adotar.
Formação cruzada
No DevOps, são feitos esforços para os membros da equipe de formação cruzada em todos os processos do SDLC. Isto não significa que todos os membros da equipe têm que ser igualmente habilidosos, mas todos devem estar familiarizados com os processos, ferramentas e habilidades utilizadas.
Quando o conhecimento dos membros da equipe se sobrepõe desta forma, é mais fácil para os membros da equipe se comunicarem. Promove soluções inovadoras uma vez que os membros são menos “presos” pelas expectativas de como as coisas devem ser feitas. A formação cruzada também pode evitar estrangulamentos devido à dependência de outros, acelerando a produtividade.
Colaboração
Colaboração e a comunicação que ela requer são elementos chave do DevOps. Esta metodologia depende dos membros da equipe para trabalhar em conjunto sem problemas e responder ao feedback quando algo não está funcionando como esperado. Se os membros da equipe não são capazes de colaborar, o trabalho torna-se em silos e a produtividade é limitada pela conclusão das etapas.
Aprimoramento contínuo
DevOps utiliza um processo iterativo com pequenas alterações que são refinadas até que uma alteração ultrapasse os limites de inspeção. Assim que uma mudança é aceita, a próxima é iniciada. Esta melhoria contínua é aplicada a todos os aspectos do DevOps, incluindo o desenvolvimento do produto, o desempenho do pipeline e a eficiência do processo.
Contabilidade
Um modelo DevOps requer responsabilidade por todas as tarefas – sejam elas de desenvolvimento ou operacionais – e ambas devem ser igualmente de propriedade de todos os membros da organização. Isso elimina o pensamento tradicional de “problema de outra pessoa”, ajuda a garantir que as equipes sejam cuidadosas em suas ações, sejam elas relacionadas ao desenvolvimento ou às operações. Também ajuda a construir e solidificar relacionamentos dentro de uma equipe, uma vez que todos os membros esperam o mesmo esforço e responsabilidade.
Transparência
Transparência de processos, configurações, ferramentas e expectativas são todos importantes no DevOps. Sem transparência, as equipes não podem colaborar efetivamente e permanece um sentimento de “nós contra eles”. Isto impede a comunicação e torna difícil a responsabilização dos outros. Com a transparência, todos os membros da equipe podem ajudar a identificar quaisquer questões que surjam e podem sugerir melhorias no contexto de um quadro mais amplo.
Automação
DevOps A automação ajuda as equipes a racionalizar e padronizar o trabalho. Também ajuda a criar transparência, já que requer que os procedimentos sejam definidos e documentados. Ao automatizar tarefas tediosas ou demoradas, as equipas DevOps podem concentrar-se no trabalho de nível superior. Este foco pode melhorar a qualidade e encorajar a inovação.
O processo DevOps
Embora os procedimentos individuais dentro do processo DevOps possam variar, o processo global segue um conjunto de etapas bastante uniformes. Estas etapas ocorrem em um ciclo e podem mudar ou voltar às etapas anteriores, dependendo dos loops de feedback. Um ciclo de vida DevOps normalmente inclui os seguintes passos:
- Plano – no início de um projeto, sprint/iteração, ou dia, o trabalho é planejado e priorizado. Isto ajuda a garantir que todos os membros da equipe entendam os objetivos atuais e define o trabalho que é esperado.
- Os desenvolvedores de código criam e submetem alterações ou adições de código que atendam às tarefas definidas para a iteração atual. Estas são baseadas em uma base de código mestre à qual todos os desenvolvedores têm acesso. Esta etapa também inclui revisão de código e quaisquer esclarecimentos ou ajustes que sejam necessários. Quando o código submetido não passa nos testes, ele é retornado a este passo para modificação.
- O código submetido é compilado, testado por unidade e empacotado. Esta é geralmente a primeira etapa automatizada no pipeline CI/CD. Se uma compilação falhar, o feedback é enviado ao desenvolvedor, e a alteração submetida é rejeitada. Se a compilação for bem sucedida, ela é passada para testes adicionais.
- Construções bem sucedidas são passadas por uma série de testes para garantir funcionalidade, qualidade e, muitas vezes, segurança. O ideal é que os testes mais rápidos ou mais críticos sejam realizados primeiro. Desta forma, se um teste falhar, a alteração do código de origem pode ser devolvida com feedback o mais rápido possível, e o esforço não é desperdiçado. Se todos os testes passarem, a compilação é passada para entrega, e as alterações são fundidas no ramo do código mestre. Isto assegura que todos os desenvolvedores continuem a trabalhar a partir da mesma base.
- Deliver-the last passing build is maintained and held for deployment.
- Deploy-a build pode ser implementada em um ambiente de teste para testes adicionais, como a aceitação do usuário. Ou, ele pode ser entregue em ambientes de preparação ou produção para lançamento.
- Monitor – após o lançamento, as versões são monitoradas para identificar quaisquer problemas que tenham sido perdidos e para reunir dados de uso que possam ser aplicados a melhorias futuras. Você pode aprender mais sobre o monitoramento DevOps em nosso artigo: Monitoramento de DevOps: The Abridged Guide.
DevOps vs. Agile: What’s the Difference and How Are They Related?
Quando se fala sobre a metodologia DevOps, ela é frequentemente associada ao Agile. Isto faz sentido quando você considera que muitas equipes de DevOps empregam práticas Ágeis. Além disso, ambas as metodologias estão focadas em melhorar a velocidade, eficiência e qualidade. Apesar disso, as metodologias são diferentes, e uma não requer necessariamente a outra.
Comunicação
Em metodologias Ágeis, o foco é a comunicação entre as equipes e o envolvimento dos clientes ao longo do processo do projeto. Da mesma forma, a maioria do feedback nos processos Agile vem dos clientes.
Em DevOps, a comunicação é centrada nos desenvolvedores e operações. O feedback do cliente desempenha um papel nas etapas de planejamento e entrega, mas geralmente não está presente durante as etapas intermediárias. Em vez disso, as equipes dependem do feedback de ferramentas e outros membros da equipe para orientar o trabalho.
Estrutura da equipe
Bambos Agile e DevOps priorizam o compartilhamento de habilidades e o cross-training. No entanto, DevOps tende a aplicar estas habilidades mais à comunicação e colaboração do que à responsabilidade. Nas equipes DevOps, os desenvolvedores são responsáveis pela criação do código, e as equipes de testes e operações (chamadas equipes DevOps) são responsáveis pelo gerenciamento do pipeline, configuração do ambiente, e implantação.
Em contraste, as equipas Agile muitas vezes esbatem as linhas entre as responsabilidades. Dentro de uma equipe Ágil, todos são encorajados a assumir as tarefas necessárias e as funções são menos segregadas. Como resultado disso, o Agile tende a trabalhar melhor com equipes menores enquanto o DevOps é melhor em fornecer a estrutura necessária para equipes maiores.
Time scheduling
Agile methodologies follow a sprint or time-limited iteration. Vários sprints são realizados até que um projeto seja concluído com tarefas e objetivos específicos definidos em cada um deles. Sprints e o trabalho esperado são muitas vezes ajustados para corresponder aos resultados da equipa.
Em implementações DevOps, o objectivo é ter sempre um produto entregável. No entanto, as equipas podem usar sprints ou iterações para definir o trabalho que se espera que seja realizado num lançamento específico. Adicionalmente, as equipas DevOps são frequentemente agarradas a prazos e benchmarks mais específicos e têm menos flexibilidade para definir quando um produto é feito.
Automação para a Metodologia DevOps: Operações Contínuas, Monitoramento e Feedback Com StackPulse
Como nossos negócios se tornam cada vez mais digitais, a confiabilidade dos serviços de software que os estão capacitando se torna uma questão crítica para os negócios. Todo sistema de software, não importa o quão bem concebido, terá alertas de produção. Estes serão questões locais com pouco ou nenhum impacto sobre os usuários finais ou questões críticas que afetam a disponibilidade do serviço para seus usuários.
Em ambos os casos, as questões devem ser investigadas, analisadas e corrigidas, se necessário, pelos proprietários relevantes. Sem automação adequada, o grande número de incidentes e alertas na maioria das organizações levará a:
- Impacto negativo na produtividade das equipes de R&D e DevOps
- “Alerta de fadiga” para proprietários e equipes de suporte
- Tempo de inatividade mais longo para os serviços de produção.
StackPulse é uma plataforma de automação para as operações, monitoramento e estágios de feedback do ciclo DevOps. Ela permite que DevOps e equipes de engenharia definam playbooks codificados para estes processos. Isto permite que sua organização automatize processos de forma repetitiva e mensurável e os acione com a freqüência necessária, sem trabalho manual adicional.
Acesso antecipado ao StackPulse e esteja entre os primeiros a experimentar nossa plataforma de automação DevOps / SRE.
Leave a Reply