Walter Farias – [email protected] IBM Client Technical Professional DevOps Entrega contínua de inovação orientada à software © 2013 IBM Corporation Accelerating Product and Service Innovation | Rational O que é DEVOPS? “DevOps é uma metodologia de desenvolvimento de software que explora a comunicação, colaboração e integração entre desenvolvedores de software e profissionais de TI.” O termo “DEVOPS" foi popularizado através de uma série de eventos intitulados "DevOps Days", começando em 2009 na Bélgica. Desde então, ocorreram conferências "DevOps Days" na Índia, EUA, Brasil, Austrália, Alemanha e Suécia. © 2013 IBM Corporation Desafios na entrega Pessoas Hoje as necessidades de negócio e também técnicas estão exigindo mais do que as abordagens tradicionais de entrega podem suportar. Processos Informação Clientes Desenvolvimento e Teste Negócio (LoB) 1º Gap Inovação rápida e contínua Requisitos Operações 2º Gap Código e Testes Serviços para o Negócio © 2012 IBM Corporation Solucionando os GAPs no ciclo de entregas de software Clientes Desenvolvimento e Teste Negócio (LoB) 1º Gap Inovação rápida e contínua Operações 2º Gap Código e Testes Requisitos Endereçado por… Agile Serviços para o Negócio Endereçado por… Dev Ops © 2012 IBM Corporation O Problema Comunicação Caça ao Culpado Pouca Colaboração Várias tarefas manuais Retrabalho Diferentes Processos Diferentes Ferramentas Não existe visão integrada do atendimento da demanda Desenvolvimento Operações © 2012 IBM Corporation O Problema DESENV OPERAÇÕES X © 2012 IBM Corporation DevOps é… Um conjunto de princípios e valores que visam facilitar a colaboração entre disciplinas para… Pessoas Processos 1.Possibilitar a rápida evolução da implantação de serviços para o negócio Informação 2.Reduzir riscos e custos e aumentar a qualidade em todo o portfólio 7 © 2012 IBM Corporation DevOps: Princípios e Valores Colaboração entre disciplinas Desenvolver e testar em um ambiente próximo ao de produção Pessoas Processos Informação Implantar frequentemente usando processos repetitiveis e confiáveis Monitorar continuamente e validar características operacionais de qualidade 8 © 2012 IBM Corporation Capacidades DevOps Desenvolvimento Colaborativo Release Contínua Testes Contínuo Quality Management Build Automation Application Release Automation Change Management Source Control Management Test Automation Environment Provisioning Service Virtualization Monitoração Contínua Delivery Pipeline Application Performance Monitoring Continuous Delivery Open Lifecycles Integration Platform © 2012 IBM Corporation Alavancando uma infraestrutura programável Infrastructure as Code 10 © 2012 IBM Corporation Alavancando uma infraestrutura programável #!/usr/bin/env ruby class DevopsDeployer def initialize(build_url, build_id) @log = Logger.new(LOG_FILE) @log.level = LOG_LEVEL @iaas_gateway = IaasGateway.new(HsltProvider.new(), LOG_FILE, LOG_LEVEL) @server_instance = nil .jsp .html rtc_build_system_provider = RtcBuildSystemProvider.new( RTC_REPOSITORY_URL, RTC_USER_ID, RTC_PASSWORD_FILE) @build = rtc_build_system_provider.resolve_build( build_url, ENV['buildResultUUID'], build_id) @build_system_gateway = BuildSystemGateway.new( rtc_build_system_provider, LOG_FILE, LOG_LEVEL) end .java Infrastructure as Code def add_build_stamp template_file = WEB_APP_ROOT + "/app/templates/pages/page.html" @log.info "Adding build ID stamp #{@build.id} to \ #{template_file}" .sh chef recipes # Read in the file's contents as a string, replace # the build_id, then overwrite the original contents # of the file text = File.read(template_file) new_text = text.gsub(/\{\{ build_id \}\}/, Source Artifacts "<a href=\"#{@build.uri}\">#{@build.id}</a>") File.open(template_file, "w") { |file| file.puts new_text } end # ... Source Control Management Infraestrutura como Código 11 © 2012 IBM Corporation A esteira de entregas .jsp .html Configuração da plataforma .java .sh Build, Empacota, Testes unitários Binários Implantar chef recipes Artefatos entregáveis Ambiente de execução do sistema Artefatos fontes Repositório de Controle de fontes Biblioteca 12 © 2012 IBM Corporation IBM DEVOPS DevOps - Capacidade de entrega contínua de software. Permite que as organizações aproveitem melhor as oportunidades de mercado, respondendo mais rapidamente ao feedback dos clientes, e balanceando velocidade, custo, qualidade e risco. Ciclo DevOps de VidaLifecycle de DevOps Customers Clientes Business Linha de Negócio Owners Development/Test Desenv/Teste Operations/Production Operações/Produção Plan and Measure Develop and Test Release and Deploy Monitor and Optimize Continuous Inovação, Innovation, FeedbackFeedback e Melhorias andContínuas Improvements Ao aplicar os princípios lean e ágeis em todo o ciclo de vida da entrega de software, DevOps ajuda as organizações a ter uma relação diferenciada com seus clientes, entregando funcionalidades mais rápido para o mercado e ganhando uma incrível capacidade de inovar. © 2012 IBM Corporation Entrega de Software está no centro das tendências tecnológicas de ponta Compreensão de novos produtos através de interpretação mais eficiente de quantidades massivas de dados. Grande conjunto de interessados (stakeholders) colaboram para entregar inovação e valor contínuos. Força de trabalho moderna espera por constante atualização de software para se conectar com sistemas de empresas. Demanda por aplicações requer ambientes escaláveis e mais rápidos para desenv e teste, assim como para produção. Requisitos de Indústrias demandam por respostas à regulações e padrões, com rastreabilidade e qualidade. Componente de software em produtos mais inteligentes conduzindo a aumento de valor e de diferenciação. © 2012 IBM Corporation OSLC – Open Services Lifecycle Collaboration open-services.net Open Services for Lifecycle Collaboration Open interfaces. Uma iniciativa da indústria para facilitar a integração de ferramentas de entrega de software. Open possibilities. © 2012 IBM Corporation Futuro : Entregas Contínuas Generate automation Deployment Design Pull configurations OSLC Configuration Automation Continuous Integration OSLC OSLC Update configurations Trigger Delivery Trigger deployment Pull changes Delivery Pipeline Provisioning Automation OSLC Change Management OSLC OSLC Collaborative Lifecycle Configure Management endpoints Trigger tests Track work Track work Deploy service Start stubs Service Simulation & Testing Infra OSLC Requirement Management Track quality Configure agents Quality Management OSLC Application Monitoring OSLC Monitor application OSLC Track incident Link defect Incident Management OSLC © 2012 IBM Corporation Formas de implementar DevOps em Cloud Cloud : • JazzHub • CLM AAMS • RD&T AAMS 17 Bluemix: • DevOps Services © 2012 IBM Corporation Walter Farias [email protected] © 2012 IBM Corporation Referências Problema: • Comunicação entre Desenvolvimento e Operações • Várias ferramentas para o time (3 ferramentas) • Baixa produtividade •Copy/Paste de dados de ferramenta para ferramenta Benefícios: • Ferramenta simples e compartilhada entre Desenvolvimento e Operações • Melhora da colaboração entre os times • Melhora da produtividade (Sem Copy/Paste) • Melhora das métricas 19 Problema: • Integrar as atividades de Build e Deploy com o ciclo de desenvolvimento • Rastreabilidade entre as atividades de Build e Deploy com correção de defeitos e execução de testes. • Definir os processos: Integração Contínua, Entrega Contínua e Liberação Contínua • Melhorar colaboração entre os times de desenvolvimento e operações • Unificar ferramentas de desenvolvimento Benefícios: • Padronização • Melhoria da Produtividade • Integração e Rastreabilidade com o ciclo da aplicação • Quebra das barreiras • Antecipação de erros • Rastreabilidade entre: Build, Deploy, Defeitos, Teste e Requisitos. © 2012 IBM Corporation