automatização de ambientes ci & cd & devops

135
1 Automatização de Ambientes CI & CD & DevOps Leandro Kersting de Freitas

Upload: leandro-kersting-de-freitas

Post on 16-Apr-2017

145 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Automatização de Ambientes CI & CD & DevOps

1

Automatização de Ambientes

CI & CD & DevOpsLeandro Kersting de Freitas

Page 2: Automatização de Ambientes CI & CD & DevOps

CI - CONTINUOUS INTEGRATION

INTEGRAÇÃO CONTINUAA integração contínua é referente aos estágios de criação e teste de unidade do processo de lançamento de software. Cada revisão confirmada aciona criação e teste automatizados.

Integração contínua não se livrar dos bugs, mas faz-lhes dramaticamente mais fácil de encontrar e remover. - Martin Fowler

Page 3: Automatização de Ambientes CI & CD & DevOps

CI - CONTINUOUS INTEGRATION

INTEGRAÇÃO CONTINUAA integração contínua é uma prática de desenvolvimento de software em que os desenvolvedores, com frequência, juntam suas alterações de código em um repositório central. Depois disso, a criações e testes são executados. Geralmente, a integração contínua se refere ao estágio de criação ou integração do processo de lançamento de software, além de originar um componente de automação.

Os principais objetivos da integração contínua são encontrar e investigar bugs mais rapidamente, melhorar a qualidade do software e reduzir o tempo que leva para validar e lançar novas atualizações de software.

Page 4: Automatização de Ambientes CI & CD & DevOps

Benefícios da Integração Contínua

Melhora a produtividade do desenvolvedor

Distribui atualizações mais rapidamenteEncontra e investigua bugs mais

rapidamente

A integração contínua ajuda sua equipe a ser mais produtiva ao liberar os desenvolvedores de tarefas manuais e encorajar comportamentos que ajudam a reduzir o número de erros e bugs implantados para os clientes.

Com testes mais frequentes, a equipe pode descobrir e investigar bugs mais cedo, antes que no futuro os problemas cresçam demais.

A integração contínua ajuda a equipe na distribuição das atualizações para os clientes mais rapidamente e com maior frequência.

Page 5: Automatização de Ambientes CI & CD & DevOps

CD - CONTINUOUS DELIVERY/DEPLOYMENT

DISTRIBUIÇÃO/IMPLANTAÇÃO CONTINUA

"Entrega contínua é uma prática de desenvolvimento de software onde os membros de uma equipa integram seu trabalho com freqüência, geralmente cada pessoa integra pelo menos diariamente, levando a várias integrações por dia. Cada integração é verificada por uma compilação automatizada (incluindo teste) para detectar erros de integração tão rapidamente quanto possível. Muitas equipes acham que essa abordagem leva a problemas de integração significativamente reduzida e permite que uma equipe para desenvolver software coeso mais rapidamente."

- Martin Fowler

Page 6: Automatização de Ambientes CI & CD & DevOps

CD - CONTINUOUS DELIVERY/DEPLOYMENT

DISTRIBUIÇÃO/IMPLANTAÇÃO CONTINUAA distribuição contínua é uma prática de desenvolvimento de software

em que as alterações de código são criadas, testadas e preparadas automaticamente para que a ordem de produção seja liberada. Ela expande com base na integração contínua ao implantar todas alterações de código em um ambiente de teste e/ou ambiente de produção, após o estágio de criação.

Quando a integração contínua é implementada adequadamente, os desenvolvedores sempre terão um artefato de criação pronto para ser implantado, e que passou por um processo de teste padronizado.

Page 7: Automatização de Ambientes CI & CD & DevOps

Distribuição Contínua

Implantação Contínua

A distribuição contínua automatiza o processo de lançamento de software completo. Cada revisão confirmada aciona um fluxo automático que cria, testa e prepara a atualização. A decisão final de implantar em um ambiente de produção ativo é acionada pelo desenvolvedor.

Com a implantação contínua, as revisões são implantadas em um ambiente de produção automaticamente, sem aprovação explícita de um desenvolvedor, automatizando todo o processo de lançamento de software. Necesário

Operação Humana

Page 8: Automatização de Ambientes CI & CD & DevOps

Benefícios da Distribuição Contínua

Melhora a produtividade do desenvolvedor

Distribui atualizações mais rapidamente

Encontra e investigua bugs mais rapidamente

A distribuição contínua permite que a equipe crie, teste e prepare automaticamente as alterações de código para liberar em produção, de modo que a distribuição de software seja mais rápida e eficiente.

Melhora a produtividade do desenvolvedor

Estas práticas ajudam a equipe a ser mais produtiva ao liberar os desenvolvedores de tarefas manuais e encorajar os comportamentos que ajudam a reduzir o número de erros e bugs implantados que chegam aos clientes.

Com testes mais frequentes e abrangentes, a equipe pode descobrir e investigar bugs mais cedo, antes que no futuro os problemas cresçam demais. A distribuição contínua permite que você execute tipos de teste adicionais no seu código, pois o processo completo já foi automatizado.

A distribuição contínua ajuda a a equipe na distribuição das atualizações para os clientes mais rapidamente e com maior frequência. Quando a distribuição contínua é implementada adequadamente, você sempre terá um artefato de criação pronto para ser implantado, e que passou por um processo de teste padronizado.

Page 9: Automatização de Ambientes CI & CD & DevOps

DevOps- DEVELOPMENT AND OPERATIONS

DESENVOLVIMENTO E OPERAÇÕES

A principal característica da cultura DevOps é a maior colaboração entre os papéis de desenvolvimento e operações. Há algumas mudanças culturais importantes, nas equipes e em um nível organizacional, que suportam esta colaboração.

- Rouan Wilsenach

Page 10: Automatização de Ambientes CI & CD & DevOps

DevOps- DEVELOPMENT AND OPERATIONS

DESENVOLVIMENTO E OPERAÇÕES

Page 11: Automatização de Ambientes CI & CD & DevOps

DevOps- DEVELOPMENT AND OPERATIONS

DESENVOLVIMENTO E OPERAÇÕES

Page 12: Automatização de Ambientes CI & CD & DevOps

DevOps- DEVELOPMENT AND OPERATIONS

DESENVOLVIMENTO E OPERAÇÕES

Page 13: Automatização de Ambientes CI & CD & DevOps

Operação em alta velocidade para que você possa trazer inovações para os seus clientes mais rapidamente, adaptar-se melhor a mercados dinâmicos e tornar-se mais eficiente na geração de resultados comerciais. O modelo de DevOps permite que as suas equipes de desenvolvedores e operações atinjam esses resultados. Por exemplo, os microsserviços e a entrega contínua permitem que as equipes assumam a responsabilidade sobre os serviços e, então, lancem atualizações para eles mais rapidamente.

Velocidade

Entrega rápida

Confiabilidade

Benefícios do DevOps

Aumente a frequência e o ritmo de lançamentos para que você possa inovar e melhorar seu produto mais rapidamente. Quanto mais rápido você puder lançar novos recursos e corrigir erros maior será a sua agilidade para responder às necessidades dos clientes e criar vantagem competitiva. A integração e a entrega contínuas são práticas que automatizam o processo de lançamento de software, desde a fase de criação à fase de implantação.

Garanta a qualidade das atualizações de aplicativos e alterações de infraestrutura para que você possa entregar com confiança em um ritmo mais rápido, sem deixar de manter uma experiência positiva para os usuários finais. Use práticas como a integração e a entrega contínuas para testar se cada umas das alterações está segura e funcionando. As práticas de monitoramento e registro em log ajudam você a permanecer informado sobre o desempenho em tempo real.

Page 14: Automatização de Ambientes CI & CD & DevOps

Opere e gerencie seus processos de infraestrutura e desenvolvimento em escala. A automação e a constância ajudam você a gerenciar sistemas complexos ou dinâmicos com eficiência e risco reduzido. Por exemplo, a infraestrutura como código ajuda você a gerenciar seus ambientes de implantação, teste e produção de modo repetido e mais eficiente.

Escalabilidade

Colaboração melhorada

Segurança

Benefícios do DevOps

Crie equipes mais eficientes sob um modelo cultural de DevOps, que enfatiza valores como propriedade e responsabilidade. As equipes de desenvolvedores e operações colaboram de perto, compartilham muitas responsabilidades e combinam seus fluxos de trabalho. Isso reduz ineficiências e economiza tempo (por exemplo, períodos de transferência reduzidos entre desenvolvedores e operações, escrevendo código que leva em consideração o ambiente em que está sendo executado).

Opere rapidamente enquanto mantém o controle e preserva a conformidade. Você pode adotar o modelo de DevOps sem sacrificar a segurança usando políticas de conformidade automáticas, controles minuciosos e técnicas de gerenciamento de configuração. Por exemplo, usando a infraestrutura e a política como código, você pode definir e, então, rastrear a conformidade em escala.

Page 15: Automatização de Ambientes CI & CD & DevOps

A transição para o DevOps exige uma mudança de cultura e mentalidade. Em seu nível mais simples, o objetivo do DevOps é remover as barreiras entre duas equipes tradicionalmente separadas em silos: desenvolvimento e operações. Em algumas empresas, podem até não existir equipes de desenvolvimento e operações separadas, os engenheiros podem encarregar-se dos dois. Com o DevOps, as duas equipes trabalham juntas para otimizar a produtividade dos desenvolvedores e a confiabilidade das operações. Elas se esforçam para manter a comunicação frequente, aumentar a eficiência e melhorar a qualidades dos serviços disponibilizados aos clientes. As equipes assumem a responsabilidade total sobre os serviços, geralmente indo além do escopo tradicional de seus cargos e títulos definidos, pensando sobre as necessidades do cliente final e como eles podem contribuir para resolver essas necessidades. As equipes de controle de qualidade e segurança também podem tornar-se altamente integradas a essas equipes. As empresas usando um modelo de DevOps, independentemente de sua estrutura organizacional, têm equipes que supervisionam o ciclo de vida completo de desenvolvimento e infraestrutura como parte das suas responsabilidades.

Filosofia cultural do DevOps

Page 16: Automatização de Ambientes CI & CD & DevOps

A integração contínua é uma prática de desenvolvimento de software em que os desenvolvedores, com frequência, juntam suas alterações de código em um repositório central. Depois disso, criações e testes são executados. Os principais objetivos da integração contínua são encontrar e investigar erros mais rapidamente, melhorar a qualidade do software e reduzir o tempo necessário para validar e lançar novas atualizações de software.

Integração contínua

Distribuição contínua

Microsserviços

Práticas de DevOps

A entrega contínua é uma prática de desenvolvimento de software em que alterações de código são criadas, testadas e preparadas automaticamente para liberação para produção. Ela expande com base na integração contínua ao implantar todas as alterações de código em um ambiente de teste e/ou ambiente de produção, após o estágio de criação. Quando a integração contínua for implementada adequadamente, os desenvolvedores sempre terão um artefato de criação pronto para ser implantado, e que passou por um processo de teste padronizado.

Opere rapidamente enquanto mantém o controle e preserva a conformidade. Você pode adotar o modelo de DevOps sem sacrificar a segurança usando políticas de conformidade automáticas, controles minuciosos e técnicas de gerenciamento de configuração. Por exemplo, usando a infraestrutura e a política como código, você pode definir e, então, rastrear a conformidade em escala.

Infraestrutura como códigoA infraestrutura como código é uma prática em que a infraestrutura é provisionada e gerenciada usando técnicas de desenvolvimento de código e software, como controle de versão e integração contínua. O modelo controlado por API da nuvem permite que desenvolvedores e administradores de sistema interajam com a infraestrutura de modo programático e em escala, em vez de precisarem instalar e configurar manualmente os recursos. Portanto, os engenheiros podem fazer a interface com a infraestrutura usando ferramentas baseadas em código e tratá-la de modo similar ao código do aplicativo. Como são definidos por código, infraestrutura e servidores podem ser implantados rapidamente usando padrões normativos, atualizados com os patches e as versões mais recentes ou duplicados de modos repetidos.

Page 17: Automatização de Ambientes CI & CD & DevOps

FERRAMENTAS17

Page 18: Automatização de Ambientes CI & CD & DevOps
Page 19: Automatização de Ambientes CI & CD & DevOps

Como um servidor de automação extensível, Jenkins pode ser usado como um servidor de CI simples ou virado para dentro do cubo entrega contínua para qualquer projeto.

1

3

5

Jenkins pode ser facilmente instalado e configurado através de sua interface web, que inclui verificações de erro on-the-fly e ajuda embutido.

Jenkins pode ser estendido através da sua arquitetura de plugins, proporcionando quase infinitas possibilidades para o que Jenkins pode fazer.

Integração Contínua e de Distribuição Contínua

Fácil configuração

Extensível

Jenkins é um programa baseado em Java independente, pronto para executar out-of-the-box, com pacotes para Windows, Mac OS X e outros sistemas operacionais Unix-like.

2

4

6

Com centenas de plugins no Centro Update, Jenkins integra com praticamente todas as ferramentas na integração contínua e toolchain entrega contínua.

Jenkins pode facilmente distribuir o trabalho entre várias máquinas, ajudando unidade constrói, testes e implementações em múltiplas plataformas mais rápidas.

Instalação fácil

Muitos plugins

Distribuído

Page 20: Automatização de Ambientes CI & CD & DevOps

2Jenkins é um servidor de automação de código aberto com um ecossistema de encaixe sem precedentes que apoiar praticamente todas as ferramentas como parte de suas tubulações de entrega.

Jenkins 2 traz Pipeline como código, uma nova experiência de instalação e outras melhorias de interface do usuário ao mesmo tempo, mantendo total compatibilidade para trás com instalações Jenkins existentes.

Lançamento da Release LTS (2.7.1) Programada para 07/07/2016

Page 21: Automatização de Ambientes CI & CD & DevOps

2Kohsuke Kawaguchi é o criador do projeto Hudson CI Open Source, ainda quando trabalhava na Sun Microsystem, a qual posteriormente foi comprada pela Oracle Inc.Logo após a compra da Sun Microsystem a Oracle quis transformar o Hudson Ci em um projeto fechado, ou sejá ir de contra a filosofia open source da comunidade que o mantinha, junto ao Kohsuke Kawaguchi.

Logo Kohsuke Kawaguchi deixou a Oracle e fez um Fork do Hudson no Github, chamando-o de Jenkins CI Open Source.

Hoje o Hudson praticamente está morto, e Jenkins cresce mais a cada ano. Ao longo dos anos, apos mais de 600 atualizações Jenkins Chega a sua versão 2.0 .

Page 22: Automatização de Ambientes CI & CD & DevOps

2Pipeline - DSL

Exemplo: Arquivo Jenkinsfile

Page 23: Automatização de Ambientes CI & CD & DevOps

2Pipeline - Stage View Exemplo:

Page 24: Automatização de Ambientes CI & CD & DevOps

2Pipeline - Stage View Exemplo:

Page 25: Automatização de Ambientes CI & CD & DevOps

2

Page 26: Automatização de Ambientes CI & CD & DevOps

2

Page 27: Automatização de Ambientes CI & CD & DevOps

2

Page 28: Automatização de Ambientes CI & CD & DevOps

2

Page 29: Automatização de Ambientes CI & CD & DevOps

2

Page 30: Automatização de Ambientes CI & CD & DevOps

Test and Deploy with Confidence

”“

Page 31: Automatização de Ambientes CI & CD & DevOps

Test and Deploy with Confidence

”“

Page 32: Automatização de Ambientes CI & CD & DevOps

Test and Deploy with Confidence

”“

Page 33: Automatização de Ambientes CI & CD & DevOps
Page 34: Automatização de Ambientes CI & CD & DevOps
Page 35: Automatização de Ambientes CI & CD & DevOps
Page 36: Automatização de Ambientes CI & CD & DevOps
Page 37: Automatização de Ambientes CI & CD & DevOps
Page 38: Automatização de Ambientes CI & CD & DevOps
Page 39: Automatização de Ambientes CI & CD & DevOps
Page 40: Automatização de Ambientes CI & CD & DevOps
Page 41: Automatização de Ambientes CI & CD & DevOps
Page 42: Automatização de Ambientes CI & CD & DevOps
Page 43: Automatização de Ambientes CI & CD & DevOps
Page 44: Automatização de Ambientes CI & CD & DevOps
Page 45: Automatização de Ambientes CI & CD & DevOps
Page 46: Automatização de Ambientes CI & CD & DevOps
Page 47: Automatização de Ambientes CI & CD & DevOps
Page 48: Automatização de Ambientes CI & CD & DevOps
Page 49: Automatização de Ambientes CI & CD & DevOps
Page 50: Automatização de Ambientes CI & CD & DevOps
Page 51: Automatização de Ambientes CI & CD & DevOps
Page 52: Automatização de Ambientes CI & CD & DevOps
Page 53: Automatização de Ambientes CI & CD & DevOps
Page 54: Automatização de Ambientes CI & CD & DevOps
Page 55: Automatização de Ambientes CI & CD & DevOps
Page 56: Automatização de Ambientes CI & CD & DevOps
Page 57: Automatização de Ambientes CI & CD & DevOps
Page 58: Automatização de Ambientes CI & CD & DevOps
Page 59: Automatização de Ambientes CI & CD & DevOps
Page 60: Automatização de Ambientes CI & CD & DevOps
Page 61: Automatização de Ambientes CI & CD & DevOps
Page 62: Automatização de Ambientes CI & CD & DevOps
Page 63: Automatização de Ambientes CI & CD & DevOps
Page 64: Automatização de Ambientes CI & CD & DevOps
Page 65: Automatização de Ambientes CI & CD & DevOps
Page 66: Automatização de Ambientes CI & CD & DevOps
Page 67: Automatização de Ambientes CI & CD & DevOps
Page 68: Automatização de Ambientes CI & CD & DevOps
Page 69: Automatização de Ambientes CI & CD & DevOps
Page 70: Automatização de Ambientes CI & CD & DevOps
Page 71: Automatização de Ambientes CI & CD & DevOps
Page 72: Automatização de Ambientes CI & CD & DevOps
Page 73: Automatização de Ambientes CI & CD & DevOps
Page 74: Automatização de Ambientes CI & CD & DevOps
Page 75: Automatização de Ambientes CI & CD & DevOps
Page 76: Automatização de Ambientes CI & CD & DevOps
Page 77: Automatização de Ambientes CI & CD & DevOps
Page 78: Automatização de Ambientes CI & CD & DevOps
Page 79: Automatização de Ambientes CI & CD & DevOps
Page 80: Automatização de Ambientes CI & CD & DevOps
Page 81: Automatização de Ambientes CI & CD & DevOps
Page 82: Automatização de Ambientes CI & CD & DevOps
Page 83: Automatização de Ambientes CI & CD & DevOps
Page 84: Automatização de Ambientes CI & CD & DevOps
Page 85: Automatização de Ambientes CI & CD & DevOps

FERRAMENTASQ.A

85

Page 86: Automatização de Ambientes CI & CD & DevOps
Page 87: Automatização de Ambientes CI & CD & DevOps
Page 88: Automatização de Ambientes CI & CD & DevOps
Page 89: Automatização de Ambientes CI & CD & DevOps
Page 90: Automatização de Ambientes CI & CD & DevOps
Page 91: Automatização de Ambientes CI & CD & DevOps
Page 92: Automatização de Ambientes CI & CD & DevOps
Page 93: Automatização de Ambientes CI & CD & DevOps
Page 94: Automatização de Ambientes CI & CD & DevOps
Page 95: Automatização de Ambientes CI & CD & DevOps
Page 96: Automatização de Ambientes CI & CD & DevOps
Page 97: Automatização de Ambientes CI & CD & DevOps
Page 98: Automatização de Ambientes CI & CD & DevOps
Page 99: Automatização de Ambientes CI & CD & DevOps
Page 100: Automatização de Ambientes CI & CD & DevOps
Page 101: Automatização de Ambientes CI & CD & DevOps
Page 102: Automatização de Ambientes CI & CD & DevOps
Page 103: Automatização de Ambientes CI & CD & DevOps
Page 104: Automatização de Ambientes CI & CD & DevOps
Page 105: Automatização de Ambientes CI & CD & DevOps
Page 106: Automatização de Ambientes CI & CD & DevOps
Page 107: Automatização de Ambientes CI & CD & DevOps
Page 108: Automatização de Ambientes CI & CD & DevOps
Page 109: Automatização de Ambientes CI & CD & DevOps

OUTRAS FERRAMENTAS

109

Page 110: Automatização de Ambientes CI & CD & DevOps
Page 111: Automatização de Ambientes CI & CD & DevOps
Page 112: Automatização de Ambientes CI & CD & DevOps
Page 113: Automatização de Ambientes CI & CD & DevOps
Page 114: Automatização de Ambientes CI & CD & DevOps
Page 115: Automatização de Ambientes CI & CD & DevOps
Page 116: Automatização de Ambientes CI & CD & DevOps
Page 117: Automatização de Ambientes CI & CD & DevOps
Page 118: Automatização de Ambientes CI & CD & DevOps
Page 119: Automatização de Ambientes CI & CD & DevOps
Page 120: Automatização de Ambientes CI & CD & DevOps
Page 121: Automatização de Ambientes CI & CD & DevOps
Page 122: Automatização de Ambientes CI & CD & DevOps
Page 123: Automatização de Ambientes CI & CD & DevOps
Page 124: Automatização de Ambientes CI & CD & DevOps
Page 125: Automatização de Ambientes CI & CD & DevOps
Page 126: Automatização de Ambientes CI & CD & DevOps
Page 127: Automatização de Ambientes CI & CD & DevOps
Page 128: Automatização de Ambientes CI & CD & DevOps
Page 129: Automatização de Ambientes CI & CD & DevOps

EXEMPLO PRÁTICODocker + Jenkins + Rancher

129

Page 130: Automatização de Ambientes CI & CD & DevOps
Page 131: Automatização de Ambientes CI & CD & DevOps
Page 132: Automatização de Ambientes CI & CD & DevOps

LIVROS132

Page 133: Automatização de Ambientes CI & CD & DevOps

INTEGRAÇÃOCONTINUA

Page 134: Automatização de Ambientes CI & CD & DevOps

DISTRIBUIÇÃOCONTINUA

Page 135: Automatização de Ambientes CI & CD & DevOps

135

OBRIGADO