SlideShare uma empresa Scribd logo
1
Automatização de Ambientes
CI & CD & DevOps
Leandro Kersting de Freitas
CI - CONTINUOUS INTEGRATION
INTEGRAÇÃO CONTINUA
A 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 CONTINUA
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, 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 CONTINUA
A 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ódigo
A 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.
FERRAMENTAS
17
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
2
Jenkins é 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
2
Kohsuke 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 .
2
Pipeline - DSL
Exemplo: Arquivo Jenkinsfile
2
Pipeline - Stage View Exemplo:
2
Pipeline - Stage View Exemplo:
2
2
2
2
2
Test and Deploy with Confidence
”“
Test and Deploy with Confidence
”“
Test and Deploy with Confidence
”“
FERRAMENTAS
Q.A
85
OUTRAS
FERRAMENTAS
109
EXEMPLO PRÁTICO
Docker + Jenkins + Rancher
129
LIVROS
132
INTEGRAÇÃO
CONTINUA
DISTRIBUIÇÃO
CONTINUA
135
OBRIGADO

Mais conteúdo relacionado

Mais procurados

Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
André Justi
 
Aula CRONTAB
Aula CRONTABAula CRONTAB
Aula CRONTAB
Wellington Oliveira
 
TestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKETestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKE
Abhishek Yadav
 
Jenkins Automation
Jenkins AutomationJenkins Automation
Jenkins Automation
Julien Pivotto
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomas
intuit_india
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
Ashok Kumar
 
Gitflow - Branching and Merging Flow for Git
Gitflow - Branching and Merging Flow for GitGitflow - Branching and Merging Flow for Git
Gitflow - Branching and Merging Flow for Git
Maulik Shah
 
Jenkins
JenkinsJenkins
Continuous integration
Continuous integrationContinuous integration
Continuous integration
amscanne
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de software
Leonardo Melo Santos
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
Marcos Pessoa
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
Pavan Gupta
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
Ahmed M. Gomaa
 
Flutter, prazer
Flutter, prazerFlutter, prazer
Flutter, prazer
Diéfferson Santos
 
Docker para iniciantes
Docker para iniciantesDocker para iniciantes
Docker para iniciantes
Rodrigo Rodrigues
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
Elaine Cecília Gatto
 
Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!
Ariane Izac
 
Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training Session
Anwarul Islam
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
Jadson Santos
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014
Ippon
 

Mais procurados (20)

Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Aula CRONTAB
Aula CRONTABAula CRONTAB
Aula CRONTAB
 
TestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKETestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKE
 
Jenkins Automation
Jenkins AutomationJenkins Automation
Jenkins Automation
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomas
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 
Gitflow - Branching and Merging Flow for Git
Gitflow - Branching and Merging Flow for GitGitflow - Branching and Merging Flow for Git
Gitflow - Branching and Merging Flow for Git
 
Jenkins
JenkinsJenkins
Jenkins
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de software
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
Flutter, prazer
Flutter, prazerFlutter, prazer
Flutter, prazer
 
Docker para iniciantes
Docker para iniciantesDocker para iniciantes
Docker para iniciantes
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!
 
Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training Session
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014
 

Destaque

Travis, Circle そして Jenkins 2.0
Travis, Circle そして Jenkins 2.0Travis, Circle そして Jenkins 2.0
Travis, Circle そして Jenkins 2.0
Hiroshi Maekawa
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testes
Carlos Santana
 
04 Unified process
04 Unified process04 Unified process
04 Unified process
Waldemar Roberti
 
ALM no Visual Studio 2010
ALM no Visual Studio 2010ALM no Visual Studio 2010
ALM no Visual Studio 2010
Waldyr Felix
 
05 agile
05 agile05 agile
Testes de software de A a Z
Testes de software de A a ZTestes de software de A a Z
Testes de software de A a Z
Camilo Porto ► Software Engineer
 
Utilizando a adaptação da ferramenta 5 w2h para análise de teste no contexto ...
Utilizando a adaptação da ferramenta 5 w2h para análise de teste no contexto ...Utilizando a adaptação da ferramenta 5 w2h para análise de teste no contexto ...
Utilizando a adaptação da ferramenta 5 w2h para análise de teste no contexto ...
Patrícia Araújo Gonçalves
 
01 Introdução - Contextualização Engenharia de Software
01 Introdução - Contextualização Engenharia de Software01 Introdução - Contextualização Engenharia de Software
01 Introdução - Contextualização Engenharia de Software
Waldemar Roberti
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
Felipe Neves Brito
 
Testes: Por onde Começar?
Testes: Por onde Começar?Testes: Por onde Começar?
Testes: Por onde Começar?
Eduardo Carrara de Araujo
 
Teste de software
Teste de softwareTeste de software
Teste de software
Daniel Paulo de Assis
 
00 Apresentação
00 Apresentação00 Apresentação
00 Apresentação
Waldemar Roberti
 
06 Requisitos
06 Requisitos06 Requisitos
06 Requisitos
Waldemar Roberti
 
Panorama sobre Teste de Software
Panorama sobre Teste de SoftwarePanorama sobre Teste de Software
Panorama sobre Teste de Software
Patrícia Araújo Gonçalves
 
Ch23
Ch23Ch23
Ch23
phanleson
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais
Waldemar Roberti
 
07 Modelagem (Sommer)
07 Modelagem (Sommer)07 Modelagem (Sommer)
07 Modelagem (Sommer)
Waldemar Roberti
 
Ciclo de vida de testes implementado v2
Ciclo de vida de testes implementado   v2Ciclo de vida de testes implementado   v2
Ciclo de vida de testes implementado v2
douglasdc7m
 
AudioGids profile
AudioGids profileAudioGids profile
AudioGids profile
audiogids
 
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
Elisa Volpato
 

Destaque (20)

Travis, Circle そして Jenkins 2.0
Travis, Circle そして Jenkins 2.0Travis, Circle そして Jenkins 2.0
Travis, Circle そして Jenkins 2.0
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testes
 
04 Unified process
04 Unified process04 Unified process
04 Unified process
 
ALM no Visual Studio 2010
ALM no Visual Studio 2010ALM no Visual Studio 2010
ALM no Visual Studio 2010
 
05 agile
05 agile05 agile
05 agile
 
Testes de software de A a Z
Testes de software de A a ZTestes de software de A a Z
Testes de software de A a Z
 
Utilizando a adaptação da ferramenta 5 w2h para análise de teste no contexto ...
Utilizando a adaptação da ferramenta 5 w2h para análise de teste no contexto ...Utilizando a adaptação da ferramenta 5 w2h para análise de teste no contexto ...
Utilizando a adaptação da ferramenta 5 w2h para análise de teste no contexto ...
 
01 Introdução - Contextualização Engenharia de Software
01 Introdução - Contextualização Engenharia de Software01 Introdução - Contextualização Engenharia de Software
01 Introdução - Contextualização Engenharia de Software
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
Testes: Por onde Começar?
Testes: Por onde Começar?Testes: Por onde Começar?
Testes: Por onde Começar?
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
00 Apresentação
00 Apresentação00 Apresentação
00 Apresentação
 
06 Requisitos
06 Requisitos06 Requisitos
06 Requisitos
 
Panorama sobre Teste de Software
Panorama sobre Teste de SoftwarePanorama sobre Teste de Software
Panorama sobre Teste de Software
 
Ch23
Ch23Ch23
Ch23
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais
 
07 Modelagem (Sommer)
07 Modelagem (Sommer)07 Modelagem (Sommer)
07 Modelagem (Sommer)
 
Ciclo de vida de testes implementado v2
Ciclo de vida de testes implementado   v2Ciclo de vida de testes implementado   v2
Ciclo de vida de testes implementado v2
 
AudioGids profile
AudioGids profileAudioGids profile
AudioGids profile
 
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
 

Semelhante a Automatização de Ambientes CI & CD & DevOps

Cultura dev ops
Cultura dev opsCultura dev ops
Cultura dev ops
Guilherme Nunes
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
Jackson F. de A. Mafra
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
Otávio Calaça Xavier
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de software
Qualister
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
Júlio de Lima
 
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e GithubDescomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
Marcelo Souza Vieira
 
Startups e DevOps
Startups e DevOpsStartups e DevOps
Startups e DevOps
José Bringel Filho
 
DevOps
DevOpsDevOps
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
Grupo de Testes Carioca
 
Automatização - DevOps
Automatização - DevOpsAutomatização - DevOps
Automatização - DevOps
Guilherme Vinicius
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
Jackson Veroneze
 
Integração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoIntegração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimento
Mario Mendonça
 
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
Antonio Lobato
 
Artigo-Alex_Warmling
Artigo-Alex_WarmlingArtigo-Alex_Warmling
Artigo-Alex_Warmling
Chaordic
 
DevOps - Reduza o tempo de entrega da sua TI
DevOps - Reduza o tempo de entrega da sua TIDevOps - Reduza o tempo de entrega da sua TI
DevOps - Reduza o tempo de entrega da sua TI
MJV Technology & Innovation Brasil
 
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Jaqueline Ramos
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
Edson Celio
 
Fundamentos da Integraçāo Contínua: Automaçāo na Geraçāo de Binários e Implan...
Fundamentos da Integraçāo Contínua: Automaçāo na Geraçāo de Binários e Implan...Fundamentos da Integraçāo Contínua: Automaçāo na Geraçāo de Binários e Implan...
Fundamentos da Integraçāo Contínua: Automaçāo na Geraçāo de Binários e Implan...
Átilla Silva Barros
 
DevOps - Cultura e Filosofia
DevOps - Cultura e FilosofiaDevOps - Cultura e Filosofia
DevOps - Cultura e Filosofia
Jônatan Gouveia
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
Ricardo Martins ☁
 

Semelhante a Automatização de Ambientes CI & CD & DevOps (20)

Cultura dev ops
Cultura dev opsCultura dev ops
Cultura dev ops
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de software
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
 
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e GithubDescomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
 
Startups e DevOps
Startups e DevOpsStartups e DevOps
Startups e DevOps
 
DevOps
DevOpsDevOps
DevOps
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
Automatização - DevOps
Automatização - DevOpsAutomatização - DevOps
Automatização - DevOps
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Integração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoIntegração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimento
 
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
 
Artigo-Alex_Warmling
Artigo-Alex_WarmlingArtigo-Alex_Warmling
Artigo-Alex_Warmling
 
DevOps - Reduza o tempo de entrega da sua TI
DevOps - Reduza o tempo de entrega da sua TIDevOps - Reduza o tempo de entrega da sua TI
DevOps - Reduza o tempo de entrega da sua TI
 
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
 
Fundamentos da Integraçāo Contínua: Automaçāo na Geraçāo de Binários e Implan...
Fundamentos da Integraçāo Contínua: Automaçāo na Geraçāo de Binários e Implan...Fundamentos da Integraçāo Contínua: Automaçāo na Geraçāo de Binários e Implan...
Fundamentos da Integraçāo Contínua: Automaçāo na Geraçāo de Binários e Implan...
 
DevOps - Cultura e Filosofia
DevOps - Cultura e FilosofiaDevOps - Cultura e Filosofia
DevOps - Cultura e Filosofia
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 

Automatização de Ambientes CI & CD & DevOps

  • 1. 1 Automatização de Ambientes CI & CD & DevOps Leandro Kersting de Freitas
  • 2. CI - CONTINUOUS INTEGRATION INTEGRAÇÃO CONTINUA A 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 “
  • 3. CI - CONTINUOUS INTEGRATION INTEGRAÇÃO CONTINUA 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, 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.
  • 4. 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.
  • 5. 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 “
  • 6. CD - CONTINUOUS DELIVERY/DEPLOYMENT DISTRIBUIÇÃO/IMPLANTAÇÃO CONTINUA A 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.
  • 7. 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
  • 8. 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.
  • 9. 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 “
  • 10. DevOps- DEVELOPMENT AND OPERATIONS DESENVOLVIMENTO E OPERAÇÕES
  • 11. DevOps- DEVELOPMENT AND OPERATIONS DESENVOLVIMENTO E OPERAÇÕES
  • 12. DevOps- DEVELOPMENT AND OPERATIONS DESENVOLVIMENTO E OPERAÇÕES
  • 13. 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.
  • 14. 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.
  • 15. 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
  • 16. 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ódigo A 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.
  • 18.
  • 19. 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
  • 20. 2 Jenkins é 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
  • 21. 2 Kohsuke 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 .
  • 22. 2 Pipeline - DSL Exemplo: Arquivo Jenkinsfile
  • 23. 2 Pipeline - Stage View Exemplo:
  • 24. 2 Pipeline - Stage View Exemplo:
  • 25. 2
  • 26. 2
  • 27. 2
  • 28. 2
  • 29. 2
  • 30. Test and Deploy with Confidence ”“
  • 31. Test and Deploy with Confidence ”“
  • 32. Test and Deploy with Confidence ”“
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129. EXEMPLO PRÁTICO Docker + Jenkins + Rancher 129
  • 130.
  • 131.