Automatização de Ambientes CI & CD & DevOps

Preview:

Citation preview

1

Automatização de Ambientes

CI & CD & DevOpsLeandro Kersting de Freitas

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

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.

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.

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

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.

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

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.

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

DevOps- DEVELOPMENT AND OPERATIONS

DESENVOLVIMENTO E OPERAÇÕES

DevOps- DEVELOPMENT AND OPERATIONS

DESENVOLVIMENTO E OPERAÇÕES

DevOps- DEVELOPMENT AND OPERATIONS

DESENVOLVIMENTO E OPERAÇÕES

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.

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.

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

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.

FERRAMENTAS17

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

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

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 .

2Pipeline - DSL

Exemplo: Arquivo Jenkinsfile

2Pipeline - Stage View Exemplo:

2Pipeline - Stage View Exemplo:

2

2

2

2

2

Test and Deploy with Confidence

”“

Test and Deploy with Confidence

”“

Test and Deploy with Confidence

”“

FERRAMENTASQ.A

85

OUTRAS FERRAMENTAS

109

EXEMPLO PRÁTICODocker + Jenkins + Rancher

129

LIVROS132

INTEGRAÇÃOCONTINUA

DISTRIBUIÇÃOCONTINUA

135

OBRIGADO

Recommended