SlideShare uma empresa Scribd logo
1 de 135
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

DevOps concepts, tools, and technologies v1.0
DevOps concepts, tools, and technologies v1.0DevOps concepts, tools, and technologies v1.0
DevOps concepts, tools, and technologies v1.0Mohamed Taman
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAmazon Web Services LATAM
 
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...Pery Lemke
 
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...Amazon Web Services
 
DEVSECOPS: Coding DevSecOps journey
DEVSECOPS: Coding DevSecOps journeyDEVSECOPS: Coding DevSecOps journey
DEVSECOPS: Coding DevSecOps journeyJason Suttie
 
AWS January 2016 Webinar Series - Introduction to Docker on AWS
AWS January 2016 Webinar Series - Introduction to Docker on AWSAWS January 2016 Webinar Series - Introduction to Docker on AWS
AWS January 2016 Webinar Series - Introduction to Docker on AWSAmazon Web Services
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices Bozhidar Bozhanov
 
Microservices Tutorial for Beginners | Microservices Architecture | Microserv...
Microservices Tutorial for Beginners | Microservices Architecture | Microserv...Microservices Tutorial for Beginners | Microservices Architecture | Microserv...
Microservices Tutorial for Beginners | Microservices Architecture | Microserv...Edureka!
 
Demystifying DevSecOps
Demystifying DevSecOpsDemystifying DevSecOps
Demystifying DevSecOpsArchana Joshi
 
SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)Hussain Mansoor
 
CI/CD best practices for building modern applications - MAD304 - Chicago AWS ...
CI/CD best practices for building modern applications - MAD304 - Chicago AWS ...CI/CD best practices for building modern applications - MAD304 - Chicago AWS ...
CI/CD best practices for building modern applications - MAD304 - Chicago AWS ...Amazon Web Services
 
Serverless computing
Serverless computingServerless computing
Serverless computingNitinSalvi14
 
AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100
AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100
AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100Amazon Web Services Korea
 
DevOps a pratical approach
DevOps a pratical approachDevOps a pratical approach
DevOps a pratical approachSiderlan Santos
 

Mais procurados (20)

DevOps concepts, tools, and technologies v1.0
DevOps concepts, tools, and technologies v1.0DevOps concepts, tools, and technologies v1.0
DevOps concepts, tools, and technologies v1.0
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
 
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
 
DEVSECOPS: Coding DevSecOps journey
DEVSECOPS: Coding DevSecOps journeyDEVSECOPS: Coding DevSecOps journey
DEVSECOPS: Coding DevSecOps journey
 
AWS January 2016 Webinar Series - Introduction to Docker on AWS
AWS January 2016 Webinar Series - Introduction to Docker on AWSAWS January 2016 Webinar Series - Introduction to Docker on AWS
AWS January 2016 Webinar Series - Introduction to Docker on AWS
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
 
CI/CD on AWS
CI/CD on AWSCI/CD on AWS
CI/CD on AWS
 
Microservices Tutorial for Beginners | Microservices Architecture | Microserv...
Microservices Tutorial for Beginners | Microservices Architecture | Microserv...Microservices Tutorial for Beginners | Microservices Architecture | Microserv...
Microservices Tutorial for Beginners | Microservices Architecture | Microserv...
 
Demystifying DevSecOps
Demystifying DevSecOpsDemystifying DevSecOps
Demystifying DevSecOps
 
SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)
 
SRE in Startup
SRE in StartupSRE in Startup
SRE in Startup
 
Monolithic architecture
Monolithic architectureMonolithic architecture
Monolithic architecture
 
CI/CD best practices for building modern applications - MAD304 - Chicago AWS ...
CI/CD best practices for building modern applications - MAD304 - Chicago AWS ...CI/CD best practices for building modern applications - MAD304 - Chicago AWS ...
CI/CD best practices for building modern applications - MAD304 - Chicago AWS ...
 
Serverless computing
Serverless computingServerless computing
Serverless computing
 
DevOps and AWS
DevOps and AWSDevOps and AWS
DevOps and AWS
 
AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100
AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100
AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100
 
Serverless Architecture - 김현민
Serverless Architecture - 김현민Serverless Architecture - 김현민
Serverless Architecture - 김현민
 
DevOps a pratical approach
DevOps a pratical approachDevOps a pratical approach
DevOps a pratical approach
 

Destaque

Travis, Circle そして Jenkins 2.0
Travis, Circle そして Jenkins 2.0Travis, Circle そして Jenkins 2.0
Travis, Circle そして Jenkins 2.0Hiroshi Maekawa
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testesCarlos Santana
 
ALM no Visual Studio 2010
ALM no Visual Studio 2010ALM no Visual Studio 2010
ALM no Visual Studio 2010Waldyr Felix
 
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 SoftwareWaldemar Roberti
 
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 fundamentaisWaldemar 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 v2douglasdc7m
 
AudioGids profile
AudioGids profileAudioGids profile
AudioGids profileaudiogids
 
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

Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson 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 ContinuaOtá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 softwareQualister
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwareJú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 GithubMarcelo Souza Vieira
 
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 AzureGrupo de Testes Carioca
 
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 desenvolvimentoMario 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_WarmlingChaordic
 
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 DevOpsEdson 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 FilosofiaJônatan Gouveia
 

Semelhante a Automatização de ambientes CI & CD (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 - 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...
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
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

  • 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.