Menu

O que é DevOps?

Tópicos

Compartilhe esta página

O DevOps tem uma filosofia e estrutura em evolução que encorajam o desenvolvimento rápido e aprimorado de aplicativos, além de acelerar o lançamento de recursos de software novos e avançados para os clientes.

A prática de DevOps impulsiona a comunicação mais otimizada e contínua, a colaboração, a integração, a visibilidade e a transparência entre as equipes de desenvolvimento de aplicativos ("Dev") e as de operações de TI ("Ops").

Essa relação de maior proximidade entre as duas equipes está presente em cada fase do ciclo de vida do DevOps: o planejamento do software inicial, as fases de codificação, compilação, teste e lançamento, além da implantação, operações e monitoramento contínuo. Isso incentiva a criação de um loop de feedback contínuo dos clientes, o que impulsiona mais melhorias, desenvolvimento, testes e implantações. Como resultado desses esforços, é possível aplicar aos recursos as mudanças ou os complementos necessários de um jeito mais rápido e contínuo.

Algumas pessoas agrupam metas de DevOps em quatro categorias: Cultura, automação, medição e compartilhamento (CAMS) e as ferramentas de DevOps podem ajudar nessas áreas. Essas ferramentas podem tornar os fluxos de trabalho de desenvolvimento e operações mais simplificados e colaborativos, automatizando tarefas que antes consomem tempo.

Por que o DevOps é importante

Tem como uma das principais vantagens a quebra de barreiras na comunicação e colaboração entre as equipes de operações de desenvolvimento e TI. O valor central do DevOps é a satisfação do cliente e a entrega mais rápida. O DevOps também foi desenvolvido para impulsionar a inovação dos negócios e a motivação para a melhoria contínua dos processos.

A prática do DevOps incentiva a entrega mais rápida, melhor e mais segura de valor de negócios aos clientes finais de uma organização. Esse valor pode assumir a forma de lançamentos de produtos, recursos ou atualizações mais frequentes. Isso pode envolver a rapidez com que um lançamento de produto ou um novo recurso entra nas mãos dos clientes, tudo com os níveis adequados de qualidade e segurança. Ou, ele pode se concentrar em quão rapidamente um problema ou bug é identificado, e então resolvido e relançado.

A infraestrutura subjacente também dá suporte ao DevOps com performance, disponibilidade e confiabilidade aprimoradas do software conforme ele é desenvolvido, testado e lançado em produção.

Métodos de DevOps

Existem alguns métodos de DevOps comuns que as organizações podem usar para acelerar e melhorar o desenvolvimento e versões de produtos. Eles assumem a forma de metodologias e práticas de desenvolvimento de software. Entre os mais populares estão Scrum, Kanban e Agile:

  • Scrum. Scrum define como os membros de uma equipe devem trabalhar juntos para acelerar o desenvolvimento e projetos de QA. As práticas Scrum incluem fluxos de trabalho importantes e terminologia específica (sprints, caixas de tempo, scrum diário [reunião]) e funções designadas (Scrum Master, proprietário do produto).
  • Kanban. Kanban originou-se de eficiências obtidas no chão de fábrica da Toyota. Kanban prescreve que o estado do trabalho em andamento do projeto de software (WIP) seja rastreado em uma placa Kanban.
  • Agile. Os métodos de desenvolvimento de software ágeis anteriores continuam influenciando fortemente as práticas e as ferramentas de DevOps. Muitos métodos de DevOps, incluindo Scrum e Kanban, incorporam elementos de programação ágil. Algumas práticas ágeis estão associadas a uma maior capacidade de resposta às necessidades e requisitos em constante mudança, documentando requisitos como histórias de usuários, realizando “stand ups” diários e incorporando “feedback” contínuo dos clientes. O Agile também prescreve ciclos de vida de desenvolvimento de software mais curto em vez de longos e tradicionais métodos de desenvolvimento em cascata.

Cadeia de ferramentas do DevOps

Seguidores das práticas de DevOps costumam usar certas ferramentas amigáveis ao DevOps como parte da "cadeia de ferramentas" do DevOps. O objetivo dessas ferramentas é otimizar, encurtar e automatizar ainda mais as várias etapas do fluxo de trabalho de entrega de software (ou "pipeline"). Muitas dessas ferramentas também promovem os princípios básicos de DevOps de automação, colaboração e integração entre as equipes de desenvolvimento e operações. Veja a seguir um exemplo de ferramentas usadas em várias etapas do ciclo de vida do DevOps.

  • Planejar essa fase ajuda a definir o valor e os requisitos de negócios. Ferramentas como Jira ou Git ajudam a rastrear problemas conhecidos e executar o gerenciamento de projetos.
  • Código essa fase envolve o design de software e a criação de código.As ferramentas mais utilizadas são GitHub, GitLab, Bitbucket ou Stash.
  • Construir Aqui é o momento em que se gerencia versões e compilações de software e usa-se ferramentas automatizadas para compilar e empacotar código em futuras versões para produção. Você usa repositórios de código-fonte ou repositórios de pacotes que também "empacotam" a infraestrutura necessária para o lançamento do produto. As ferramentas de exemplo incluem Docker, Ansible, Puppet, Chef, Gradle, Maven, ou JFrog Artifactory.
  • Teste A fase que envolve testes contínuos (manuais ou automatizados) para garantir a qualidade ideal do código. As ferramentas utilizadas são JUnit, Codeception, Selenium, Vagrant, TestNG, ou BlazeMeter.
  • Implantar é quando se pode incluir ferramentas que ajudam a gerenciar, coordenar, programar e automatizar lançamentos de produtos na produção. As ferramentas de exemplo incluem Puppet, Chef, Ansible, Jenkins, Kubernetes, OpenShift, OpenStack, Docker ou Jira.
  • Operações estágio de gerencia o software durante a produção. Os exemplos de ferramentas são: Ansible, Puppet, PowerShell, Chef, Salt, ou Otter.

Monitorar: quando chega a hora de identificação e coleta de informações sobre problemas de uma versão de software específica na produção. As ferramentas de exemplo são: New Relic, Datadog, Grafana, Wireshark, Splunk, Nagios, ou Slack.

Práticas de DevOps

As práticas de DevOps refletem a ideia de melhoria e automação contínuas. Muitas práticas se concentram em uma ou mais fases do ciclo de desenvolvimento. Essas práticas incluem:

  • Desenvolvimento contínuo: Prática que abrange as fases de Planejamento e codificação do ciclo de vida do DevOps. Mecanismos de controle de versão podem estar envolvidos.
  • Testes contínuos: Prática que incorpora testes de código automatizados, pré-programados e contínuos à medida que o código do aplicativo está sendo escrito ou atualizado. Tais testes podem acelerar a entrega do código à produção.
  • Integração contínua (CI): Prática que reúne ferramentas de gerenciamento de configuração (CM) juntamente com outras ferramentas de teste e desenvolvimento para rastrear quanto do código sendo desenvolvido está pronto para produção. Isso envolve feedback rápido entre teste e desenvolvimento para identificar e resolver rapidamente problemas de código.
  • Entrega contínua: Prática que automatiza a entrega de alterações de código, após o teste, para um ambiente de pré-produção ou teste. Um membro da equipe pode então decidir promover tais mudanças de código na produção.
  • Implantação contínua (CD): Semelhante à entrega contínua, essa prática automatiza o lançamento de código novo ou alterado em produção. Uma empresa que faz implantação contínua pode liberar alterações de código ou recursos várias vezes por dia. O uso de tecnologias de contêiner, como Docker e Kubernetes, pode permitir a implantação contínua, ajudando a manter a consistência do código em diferentes plataformas e ambientes de implantação.
  • Monitoramento contínuo. Essa prática envolve o monitoramento contínuo do código em operação e da infraestrutura subjacente que o suporta. Um loop de feedback que relata sobre bugs ou problemas então volta ao desenvolvimento.

Infraestrutura como código. Essa prática pode ser usada em várias fases do DevOps para automatizar o provisionamento de infraestrutura necessário para uma versão de software. Os desenvolvedores adicionam "código" de infraestrutura a partir de suas ferramentas de desenvolvimento existentes. Por exemplo, os desenvolvedores podem criar um volume de armazenagem sob demanda do Docker, Kubernetes ou OpenShift. Essa prática também permite que as equipes de operações monitorem as configurações do ambiente, controlem as alterações e simplifiquem a reversão das configurações.

Benefícios do DevOps

Os proponentes do DevOps descrevem vários benefícios técnicos e de negócio, muitos dos quais podem resultar em clientes mais satisfeitos. Alguns benefícios do DevOps incluem:

  • Entrega mais rápida e melhor do produto
  • Resolução de problemas mais rápida e complexidade reduzida
  • Maior escalabilidade e disponibilidade
  • Ambientes operacionais mais estáveis
  • Melhor utilização de recursos
  • Maior automação
  • Maior visibilidade dos resultados do sistema
  • Maior inovação

História do DevOps

Muitos métodos de DevOps para otimizar o desenvolvimento e a implantação de software têm uma base inicial no desenvolvimento de software ágil e na programação enxuta. Mas o DevOps originalmente evoluiu de vários movimentos de base para harmonizar as atividades dos desenvolvedores e de suas contrapartes da equipe de operações.

No início dos anos 2000s viu a necessidade de manter a disponibilidade de sites populares, como o Google e o Flickr, contra grandes sucessos. Essa necessidade levou ao uso de engenheiros de confiabilidade de software (SREs) – operações que trabalham em estreita colaboração com desenvolvedores para garantir que os sites continuassem funcionando depois que o código fosse lançado em produção.

Em 2009, os engenheiros do Flickr John Allspaw e Paul Hammond apresentaram sua própria metodologia semelhante a DevOps em uma conferência. Sua apresentação foi intitulada "10+ Deploys Per Day: Dev and Ops Cooperation at Flickr”.

No mesmo ano, Patrick Debois organizou o primeiro "Dia do DevOps" na Bélgica. Uma hashtag no DevOps também foi incorporada e ganhou impulso à medida que mais dias de DevOps foram realizados em todo o mundo.

Nos próximos anos, ferramentas e frameworks do setor e de código aberto foram desenvolvidos e propostos para alcançar as metas do DevOps.

NetApp e DevOps

Com as soluções de DevOps da NetApp, as equipes de operações viabilizam uma infraestrutura automatizada com menos engenharia, e os desenvolvedores trabalham em ambientes confiáveis e previsíveis com mais simplicidade. Ajudamos você a oferecer com confiança os serviços e as funcionalidades de que sua organização precisa para maximizar a produtividade dos desenvolvedores em ambientes no local e na nuvem.

Com o NetApp, os desenvolvedores, os testes, a garantia de qualidade e as equipes de operações têm mais facilidade para consumir recursos de infraestrutura (como volumes de storage persistentes) como código. Tudo isso com ferramentas já conhecidas no pipeline de DevOps. Os exemplos incluem APIs de storage do NetApp e integrações de IAC com ferramentas como Puppet, Ansible, Docker, Kubernetes e OpenShift.

No entanto, o NetApp não apenas facilita para os desenvolvedores o consumo de storage como código. A tecnologia NetApp também permite que as operações possibilitem e forneçam recursos com confiança à equipe de desenvolvimento e teste. Desenvolvedores e responsáveis por testar podem acelerar os ciclos de codificação e teste com o provisionamento automático de recursos de storage rápidos e que economizam tempo, como snapshots e clones. Com esses recursos, cópias de dados de produção em tempo real ou conjuntos de código podem ser provisionadas como código em poucos segundos ou minutos para acelerar o desenvolvimento e o fluxo de trabalho de QA. Saiba mais sobre por que o NetApp é feito para DevOps.

Por que o NetApp é feito para DevOps

O compromisso da NetApp com a comunidade se estende ao The Pub. Essa comunidade de desenvolvedores incentiva a colaboração, compartilha dicas e truques e debate ideias sobre as práticas e protocolos mais recentes do DevOps.

DevOps: O guia completo de cultura, tecnologia e ferramentas

A cultura DevOps se concentra em pequenas equipes interdisciplinares que podem trabalhar de forma independente e são conjuntamente responsáveis pela experiência do usuário fornecida por um produto de software.

Drift chat loading