DevOps

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

DevOps (amálgama de Desenvolvedor e Operador) é uma metodologia de desenvolvimento de software que explora a comunicação, colaboração e integração entre desenvolvedores de software e profissionais de TI (Tecnologia da Informação).[1] DevOps é a reação à interdependência entre desenvolvimento de software e operações de TI. Pretende ajudar organizações a produzir software e serviços rapidamente.[2] [3] [4] [5] [6]

Empresas que liberam novas versões de software frequentemente podem precisar das considerações ou orientações de um DevOps. O Flickr desenvolveu capacidades de DevOps para suprir uma necessidade do negócio de realizar dez implementações por dia, este ciclo diário de implementações será muito maior em organizações que produzem aplicações multi-foco ou multi-funções. É conhecido como implementação contínua[7] ou entrega contínua [8] e é frequentemente associado com a metodologia Lean Startup.Grupos de trabalho, associações de profissionais e blogs estão tratando do tema desde 2009.[5] [9] [10]

Os DevOps auxiliam empresas no gerenciamento de lançamento de novas versões, ao padronizar ambientes de desenvolvimento. Eventos podem ser acompanhados com maior facilidade, assim como o controle de processos documentados e emissão de relatórios granulares. Empresas com problemas no processo de liberação/implementação de novas versões, normalmente possuem automação, mas querem maior flexibilidade para gerenciar e conduzir esse processo - sem precisar editar tudo na linha de comando. Idealmente, essa automação deve ser disparada por recursos não operacionais, em ambientes específicos que não estejam "em produção". O desenvolvedor ganha maior controle sobre o ambiente, e a infraestrutura maior entendimento sobre os aplicativos.

Processos simples se tornam claramente articuláveis, o DevOps simplifica processos. O objetivo é automatizar a maior quantidade possível de processos operacionais.

Integrações DevOps visam a entrega de produtos, testes de qualidade, desenvolvimento de características e releases de manutenção, de modo a incrementar a confiança e segurança, desenvolvimento rápido e ciclos de desenvolvimento. Muito das ideias (e pessoas) envolvidas com DevOps vieram dos movimentos de Gerenciamento de Sistemas Empresariais e Desenvolvimento ágil de software.[11]

Sobre[editar | editar código-fonte]

O termo "devops" foi popularizado através de uma série de eventos intitulados "DevOps Days", começando em 2009 na Bélgica.[12] Desde então, ocorreram conferências "DevOps Days" na Índia, EUA, Brasil, Austrália, Alemanha e Suécia.[13]

Ilustração mostrando como são as intersecções entre Desenvolvimento (Engenharia de Software), Operações e Controle de Qualidade.

Metodologias como Desenvolvimento Ágil, que são adotadas por organizações tradicionais, separam os departamentos de desenvolvimento, operações de TI, e controle de qualidade, não integrando as atividades de desenvolvimento e implementação entre os departamentos de TI e controle de qualidade. DevOps promove um conjunto de processos e métodos para pensar sobre comunicação e colaboração entre departamentos.[14]

A adoção do DevOps é conduzida por fatores, tais quais:

* Uso de processos e metodologias de desenvolvimento ágil * Demanda crescente na taxa de produção de aplicativos e unidades de negócios * Ampla disponibilidade de infraestrutura na Cloud e virtualizada [15] por provedores internos e externos * Uso crescente de automação de data center[16] e ferramentas de gerenciamento de configuração

DevOps é frequentemente descrito como uma relação mais colaborativa e produtiva entre equipes de desenvolvimento e operações. Essa melhora na relação e colaboração aumenta a eficiência e reduz os riscos da produção associados com mudanças frequentes. Estão surgindo medidas de ROI[17] e métricas potenciais para DevOps.

A função de um profissional DevOps possui semelhanças com as de um Engenheiro Chefe dentro do Sistema de Produção da Toyota.[18] Tais pessoas têm responsabilidades para o sucesso do projeto, mas não possuem autoridade formal sobre as diferentes equipes envolvidas. Isto exige conhecimento técnico, de modo a convencer os gerentes das necessidades. O aval dos executivos da empresa para o Engenheiro chefe pode auxiliar.

Muitas organizações dividem Desenvolvimento e Administração de Sistemas em departamentos diferentes. Enquanto os departamentos de desenvolvimento são guiados pelas necessidades do usuário para entregar frequentemente novos recursos, os departamentos de operações focam mais na disponibilidade e estabilidade dos serviços de TI e eficiência de custos em TI. Esses dois objetivos contraditórios criam um abismo entre Desenvolvimento e Operações, o que desacelera a entrega dos valores nos negócios de TI.

Impacto nos lançamentos de aplicações[editar | editar código-fonte]

Em muitas empresas, eventos de lançamento de aplicações são atividades muito estressantes e de alto risco, que envolvem várias equipes. Em uma organização DevOps, o lançamento de aplicações é de baixo risco pelas seguintes razões:

Este diagrama mostra as diferenças, em termos de frequência de lançamentos e escala de impacto, entre as metodologias ágeis e as iterativas tradicionais.

Escopo de mudança reduzido

Adoção do desenvolvimento iterativo ou ágil, em contraste com o tradicional modelo em cascata. Isto significa que cada lançamento possui menos mudanças, mas ocorrem com maior frequencia. O que ocorre, então, é a criação de uma suave taxa de mudança progressiva na aplicação vs. o grande impacto causado por implementações raras - cada uma contendo um grande número de mudanças.

Coordenação de lançamentos crescente

Uso de um coordenador de lançamentos forte para criar a ponte sobre o abismo comunicacional e de conhecimento entre desenvolvedores e operadores; emprego de ferramentas de colaboração tais como planilhas, conferência de chamadas, mensagem instantânea, portais corporativos e wikis, para garantir um entendimento minucioso da mudança e cooperação total dos envolvidos.

Automação

Automação completa de implementação garante replicabilidade das tarefas e reduz os erros.

Coordenador de Lançamento[editar | editar código-fonte]

Uma função relativamente nova na TI corporativa, está incumbida da coordenação da implantação dos softwares da empresa até a pré-produção dos ambientes. A necessidade do coordenador de lançamento foi impulsionada por:

  • Necessidades para preencher o "abismo" DevOps
  • Complexidade crescente da infraestrutura - camadas e plataformas múltiplas, que formam aplicações web
  • Crescimento na taxa de lançamentos - devido ao desenvolvimento ágil e iterativo
  • Equipes distribuídas - implementação globalizada, desenvolvimentos terceirizados e híbridos.

A função do coordenador (também conhecido como coordenador de implantação e integração) emergiu das equipes de gerenciamento de lançamento ou engenheiros de lançamento. Esta função é similar a do operador de tráfego aéreo - coordenando em tempo real atividades em diversas equipes, para atingir o objetivo de todo o grupo (decolagem e aterrissagem seguras)usando recursos compartilhados (espaço aéreo, caminhos de voo, pistas de aeroportos e terminais de embarque).

O coordenador de lançamento contrasta com o gerente de lançamento, que está sempre focado no planejamento e aviso de mudanças no software, de modo a controlar mudanças específicas na aplicação em produção. O engenheiro de lançamento está preocupado com o trabalho sistêmico e técnico relacionado a construção e implantação do código nos ambientes.

Gerenciamento de mudanças é a disciplina de infraestrutura para acompanhar todos os tipos de mudanças no ambiente de TI da empresa - incluindo tanto mudanças na aplicação quanto na infraestrutura. Gerenciamento de mudanças é parte integrante do ITIL v3.

Referências

  1. Pant, Rajiv (2009-03-17). Organizing a Digital Technology Department of Medium Size in a Media Company.
  2. Samovskiy, Dmitriy (2010-03-02). The Rise of DevOps. Fubaredness Is Contagious.
  3. Edwards, Damon. What is DevOps?.
  4. Vambenepe, William. Steve Ballmer gets Cloud.
  5. a b Lyman, Jay. DevOps mixing dev, ops, agile, cloud, open source and business. 451 CAOS Theory.
  6. Debois, Patrick. Devops: A Software Revolution in the Making?. Cutter IT Journal.
  7. SAM SIG: Applied Lean Startup Ideas: Continuous Deployment at kaChing. SVForum.
  8. Humble, Jez. Why Enterprises Must Adopt Devops to Enable Continuous Delivery. Cutter IT Journal.
  9. DevOps Days 2009 Conference.
  10. Edwards, Damon. DevOps Meetup Recap.
  11. Nasrat, Paul. Agile Infrastructure. InfoQ. Página visitada em 31 March 2011.
  12. Debois, Patrick. DevOps Days Ghent 2009. DevopsDays. Página visitada em 31 March 2011.
  13. Debois, Patrick. DevOps Days. DevOps Days. Página visitada em 31 March 2011.
  14. Turnbull, James. What DevOps means to me....
  15. Virtual Infrastructure products: features comparison. Welcome to IT 2.0: Next Generation IT infrastructures.
  16. Ellard, Jennifer. Bringing Order to Chaos through Data Center Automation. Information Management. SourceMedia, Inc..
  17. Booth, David. How to Measure the Effects of Development + Operations improvements, an OpenSpace conversation.
  18. Liker, Jeffrey. The Toyota Way. [S.l.]: McGraw-Hill; 1 edition (December 17, 2003), 2003. ISBN 0-07-139231-9