DevOps - DevOps

DevOps é um conjunto de práticas que combina desenvolvimento de software ( Dev ) e operações de TI ( Ops ). Tem como objetivo encurtar o ciclo de vida de desenvolvimento de sistemas e fornecer entrega contínua com alta qualidade de software . DevOps é complementar ao desenvolvimento de software Agile ; vários aspectos do DevOps vieram da metodologia Agile.

Definição

Além de ser uma combinação multifuncional dos termos e conceitos para "desenvolvimento" e "operações", acadêmicos e profissionais não desenvolveram uma definição universal para o termo "DevOps". Na maioria das vezes, o DevOps é caracterizado por princípios-chave: propriedade compartilhada, automação do fluxo de trabalho e feedback rápido.

De uma perspectiva acadêmica, Len Bass , Ingo Weber e Liming Zhu - três pesquisadores de ciência da computação do CSIRO e do Software Engineering Institute - sugeriram definir DevOps como "um conjunto de práticas destinadas a reduzir o tempo entre a alteração de um sistema e a mudança sendo colocada em produção normal, garantindo a alta qualidade ".

No entanto, o termo é usado em vários contextos. Em sua forma mais bem-sucedida, DevOps é uma combinação de práticas específicas, mudança de cultura e ferramentas.

História

Em 1993, o Consórcio de Arquitetura de Rede de Informação de Telecomunicações ( TINA-C ) definiu um Modelo de Ciclo de Vida de Serviço que combinava o desenvolvimento de software com operações de serviço (telecomunicações). Alguns dizem que o DevOps surgiu em parte como uma reação à abordagem proscritiva "de cima para baixo" do ITIL na década de 1990. O DevOps, como uma abordagem "de baixo para cima", ganhou força e persistiu porque foi criado por engenheiros de software para engenheiros de software e é uma prática flexível em vez de uma estrutura rígida.

Em 2014, Lisa Crispin e Janet Gregory escreveram o livro More Agile Testing, contendo um capítulo sobre testes e DevOps.

Conjuntos de ferramentas

Como DevOps pretende ser um modo de cross-funcional do trabalho, aqueles que praticam a utilizar a metodologia diferentes conjuntos de ferramentas de referidos como " toolchains " -mais que um único. Espera-se que essas cadeias de ferramentas se enquadrem em uma ou mais das seguintes categorias, refletindo os principais aspectos do processo de desenvolvimento e entrega.

  1. Codificação - desenvolvimento e revisão de código, ferramentas de gerenciamento de código-fonte , fusão de código.
  2. Building - ferramentas de integração contínua , status de build.
  3. Teste - ferramentas de teste contínuo que fornecem feedback rápido e oportuno sobre os riscos do negócio.
  4. Empacotamento - repositório de artefato , teste de pré-implantação do aplicativo.
  5. Liberação - gerenciamento de mudanças, aprovações de liberação , automação de liberação .
  6. Configurando - configuração e gerenciamento de infraestrutura , infraestrutura como ferramentas de código .
  7. Monitoramento - monitoramento de desempenho de aplicativos , experiência do usuário final.

Relacionamento com outras abordagens

Muitas das ideias fundamentais para as práticas de DevOps são inspiradas ou espelhadas em outras práticas bem conhecidas, como o ciclo Lean e o ciclo Plan-Do-Check-Act de Deming , até o Toyota Way e a abordagem ágil de decompor componentes e tamanhos de lote.

Ágil

As motivações para o que se tornou o DevOps moderno e várias práticas DevOps padrão, como construção e teste automatizados, integração contínua e entrega contínua se originaram no mundo Agile, que data (informalmente) da década de 1990 e formalmente de 2001. Equipes de desenvolvimento Agile usando métodos como o Extreme Programming não poderiam "satisfazer o cliente por meio da entrega antecipada e contínua de software valioso", a menos que incluíssem as responsabilidades de operações / infraestrutura associadas a seus aplicativos, muitos dos quais automatizados. Como o Scrum emergiu como o framework Agile dominante no início de 2000 e omitiu as práticas de engenharia que faziam parte de muitas equipes Agile, o movimento para automatizar funções de operações / infraestrutura se fragmentou do Agile e se expandiu para o que se tornou o DevOps moderno. Hoje, o DevOps foca na implantação do software desenvolvido, seja ele desenvolvido via Agile ou outras metodologias.

ArchOps

ArchOps apresenta uma extensão para a prática de DevOps, começando com artefatos de arquitetura de software , em vez de código-fonte, para implantação de operação. O ArchOps afirma que os modelos de arquitetura são entidades de primeira classe no desenvolvimento, implantação e operações de software.

CI / CD

A automação é um princípio fundamental para alcançar o sucesso do DevOps e CI / CD é um componente crítico.

CI / CD compreende integração contínua (CI) e entrega contínua (CD) ou implantação contínua (CD). Usados ​​juntos, os três processos automatizam a construção, o teste e a implantação para que as equipes de DevOps possam enviar alterações de código de maneira mais rápida e confiável. Ao se referir a CI / CD, o “CD” que está sendo referenciado geralmente é a entrega contínua, não a implantação contínua. A entrega contínua e outros processos de CI / CD têm como foco a automação das tarefas de entrega de software , enquanto o DevOps também se concentra na mudança organizacional para oferecer suporte à grande colaboração entre as várias funções envolvidas. Ambos compartilham uma experiência comum em métodos ágeis e pensamento enxuto , priorizando mudanças pequenas e frequentes com valor focado para o cliente final. Isso garante duas coisas: O software está sempre em um estado liberável durante todo o seu ciclo de vida, o que torna mais barato e menos arriscado entregar o software.

Além disso, a colaboração e a comunicação aprimoradas entre e dentro das equipes ajudam a alcançar um tempo de lançamento no mercado mais rápido , com riscos reduzidos.

DataOps

A aplicação de entrega contínua e DevOps para análise de dados foi denominada DataOps. DataOps busca integrar engenharia de dados, integração de dados, qualidade de dados, segurança de dados e privacidade de dados com operações. Ele aplica princípios de DevOps, Desenvolvimento Ágil e controle de processo estatístico , usado na manufatura enxuta , para melhorar o tempo de ciclo de extração de valor da análise de dados.

Engenharia de confiabilidade do local

Em 2003, o Google desenvolveu a engenharia de confiabilidade do site (SRE), uma abordagem para lançar novos recursos continuamente em sistemas de alta disponibilidade em grande escala, mantendo a experiência do usuário final de alta qualidade. Embora o SRE seja anterior ao desenvolvimento do DevOps, eles geralmente são vistos como relacionados entre si.

DevSecOps, Shifting Security Left

DevSecOps é um aumento do DevOps para permitir que as práticas de segurança sejam integradas à abordagem DevOps. O modelo tradicional de equipe de segurança centralizada deve adotar um modelo federado, permitindo que cada equipe de entrega leve em consideração os controles de segurança corretos em suas práticas de DevOps. Mudar a segurança para a esquerda é uma abordagem à segurança de software em que as práticas e os testes de segurança são executados no início do ciclo de desenvolvimento.

BizOps

O BizOps é contrastado com o DevOps por causa de sua abordagem mais integrada. Enquanto o DevOps está mais focado em TI e desenvolvimento de software, o BizOps integra tecnologia em decisões organizacionais diárias e operações de negócios.

Mudança cultural

As iniciativas de DevOps podem criar mudanças culturais nas empresas, transformando a maneira como as operações , desenvolvedores e testadores colaboram durante os processos de desenvolvimento e entrega. Fazer com que esses grupos trabalhem de forma coesa é um desafio crítico na adoção do DevOps corporativo. DevOps tem a ver tanto com cultura quanto com o conjunto de ferramentas.

Construindo uma cultura DevOps

A cultura organizacional é um forte indicador do desempenho organizacional e de TI. Práticas culturais como fluxo de informações, colaboração, responsabilidades compartilhadas, aprendizado com as falhas e novas ideias são centrais para DevOps. A formação de equipes e outras atividades de engajamento dos funcionários são freqüentemente usadas para criar um ambiente que promove essa comunicação e mudança cultural dentro de uma organização. A abordagem DevOps como serviço permite que desenvolvedores e equipes de operações tenham maior controle de seus aplicativos e infraestrutura sem prejudicar a velocidade. Ele também transfere o ônus de possuir um problema para a equipe de desenvolvimento, tornando-os muito mais cuidadosos em seu andamento.

O relatório do estado do DevOps de 2015 descobriu que as sete principais medidas com a correlação mais forte com a cultura organizacional são:

  1. Investimento organizacional
  2. Experiência e eficácia dos líderes de equipe
  3. Entrega contínua
  4. A capacidade de diferentes disciplinas (desenvolvimento, operações e infosec) para alcançar resultados ganha-ganha
  5. Desempenho organizacional
  6. Dor de implantação
  7. Práticas de gestão enxuta

Desdobramento, desenvolvimento

Empresas com lançamentos muito frequentes podem exigir conhecimento sobre DevOps. Por exemplo, a empresa que opera o site de hospedagem de imagens Flickr desenvolveu uma abordagem DevOps para oferecer suporte a dez implantações por dia. Os ciclos diários de implantação seriam muito mais altos em organizações que produzem aplicativos multifuncionais ou multifocais. A implantação diária é conhecida como implantação contínua

Requisitos arquiteturalmente significativos

Para praticar DevOps com eficácia, os aplicativos de software devem atender a um conjunto de requisitos significativos da arquitetura (ASRs), como: capacidade de implantação, capacidade de modificação, capacidade de teste e capacidade de monitoramento.

Microsserviços

Embora, em princípio, seja possível praticar DevOps com qualquer estilo de arquitetura, o estilo de arquitetura de microsserviços está se tornando o padrão para a construção de sistemas implantados continuamente. Serviço de tamanho pequeno permite que a arquitetura de um serviço individual surja por meio de refatoração contínua.

Automação DevOps

Ele também oferece suporte à consistência, confiabilidade e eficiência dentro da organização e geralmente é ativado por um repositório de código compartilhado ou controle de versão. Como o pesquisador DevOps Ravi Teja Yarlagadda hipotetiza, "Por meio do DevOps, existe uma suposição de que todas as funções podem ser realizadas, controladas e gerenciadas em um local central usando um código simples."

Automação com controle de versão

Muitas organizações usam o controle de versão para potencializar as tecnologias de automação DevOps, como máquinas virtuais , conteinerização (ou virtualização no nível do sistema operacional ) e CI / CD . O DevOps em papel: desenvolvimento de uma cadeia de ferramentas no domínio bancário observa que, com equipes de desenvolvedores trabalhando no mesmo projeto, "Todos os desenvolvedores precisam fazer alterações na mesma base de código e, às vezes, editar até mesmo os mesmos arquivos. Para um trabalho eficiente, é preciso ser um sistema que ajuda os engenheiros a evitar conflitos e manter o histórico da base de código ", com o sistema de controle de versão Git e a plataforma GitHub citados como exemplos.

Adoção

Práticas de DevOps e adoção

As práticas DevOps e suas dependências incluem uma rede de dependências que conecta benefícios potenciais a uma cadeia ordenada de práticas. Usando essa rede, as organizações podem escolher um caminho que possibilite o cumprimento de seus objetivos.

A adoção do DevOps está sendo impulsionada por muitos fatores - incluindo:

  1. Utilização de processos e métodos de desenvolvimento ágil e outros ;
  2. Demanda por uma taxa maior de liberações de produção - de aplicativos e partes interessadas da unidade de negócios ;
  3. Ampla disponibilidade de infraestrutura virtualizada e em nuvem - de provedores internos e externos;
  4. Maior uso de ferramentas de automação e gerenciamento de configuração de data center ;
  5. Maior foco em automação de teste e métodos de integração contínua ;
  6. Uma massa crítica de melhores práticas publicamente disponíveis.

Veja também

Notas

Referências

Leitura adicional

  • Davis, Jennifer; Daniels, Ryn (30 de maio de 2016). DevOps eficaz: construindo uma cultura de colaboração, afinidade e ferramentas em escala . Sebastopol, CA: O'Reilly. ISBN 9781491926437. OCLC  951434424 .
  • Kim, Gene; Debois, Patrick; Willis, John; Humilde, Jez; Allspaw, John (7 de outubro de 2015). O manual do DevOps: como criar agilidade, confiabilidade e segurança de classe mundial em organizações de tecnologia (primeira edição). Portland, OR. ISBN 9781942788003. OCLC  907166314 .
  • Forsgren, Nicole; Humilde, Jez; Kim, Gene (27 de março de 2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (Primeira edição). IT Revolution Press. ISBN 9781942788331.