SlideShare uma empresa Scribd logo
G e e k N i g h t R e c i f e
PADRÕES DE DEPLOY PARA
DEVOPS E ENTREGA CONTÍNUA
Danilo Sato (@dtsato)
dsato@thoughtworks.com
QUEM SOU EU?
▫︎Desenvolvedor
▫︎Arquiteto
▫︎Coach
▫︎Treinador
▫︎Administrador de Rede
2
@dtsato
3
www.devopsnapratica.com.br
3
www.devopsnapratica.com.br
Desenvolvimento Operações
Eu quero
mudanças
Desenvolvimento Operações
Eu quero
mudanças
Eu quero
estabilidade
Desenvolvimento Operações
Eu quero
mudanças
Eu quero
estabilidade
Desenvolvimento Operações
Desenvolvimento Operações
+
DevOps
UMA HISTÓRIA
COMUM…
“O dia que fizemos o deploy errado”
6
7
Freqüência de
deploy
Quantidade de
mudanças
Risco
Processo
COM UM FINAL
DIFERENTE…
“Problemas difíceis não se resolvem do dia para a noite”
8
9
Freqüência de
deploy
Quantidade de
mudanças
Risco
Processo
DevOps
10
Ideia Em produção
11
Ideia Em produção
Código
Testes
Pacote
Servidores/Am
bientes
Exploração
/Hom
ologação
/Aprovação
Im
plantar
11
Ideia Em produção
Código
Testes
Pacote
Servidores/Am
bientes
Exploração
/Hom
ologação
/Aprovação
Im
plantar
Pipeline de Entrega
12
M
onitoram
entoAlertas
Suporte
Dados/AnálisesFeedback
dosusuários
Insights
Em produção
12
M
onitoram
entoAlertas
Suporte
Dados/AnálisesFeedback
dosusuários
Insights
Em produção Ideia
13
Qualidade
Tempo de Ciclo
Nosso objetivo é tornar o deploy um
“não-evento”
14
PRINCÍPIOS PARA ENTREGAS
DE BAIXO RISCO
1. Incremental é melhor que “big bang”
PRINCÍPIOS PARA ENTREGAS
DE BAIXO RISCO
1. Incremental é melhor que “big bang”
2. Implantação != Entrega
PRINCÍPIOS PARA ENTREGAS
DE BAIXO RISCO
1. Incremental é melhor que “big bang”
2. Implantação != Entrega
3. Foque em entregar lotes pequenos
PRINCÍPIOS PARA ENTREGAS
DE BAIXO RISCO
1. Incremental é melhor que “big bang”
2. Implantação != Entrega
3. Foque em entregar lotes pequenos
4. Qualidade deve estar embutida no
processo
PRINCÍPIOS PARA ENTREGAS
DE BAIXO RISCO
1. Mudança paralela
2. Implantação Azul-Verde
3. Implantação Canário
4. Feature Toggles
5. Entrega no Escuro
PADRÕES DE DEPLOY
MUDANÇA PARALELA
Também conhecida como “Expansão e Contração”
http://www.thoughtworks.com/insights/blog/mudança-paralela
17https://www.flickr.com/photos/telstar/8246798446
1. EXPANSÃO
18
class Grid {
private Cell[][] cells;
…
!
public void addCell(int x, int y, Cell cell) {
cells[x][y] = cell;
}
public Cell fetchCell(int x, int y) {
return cells[x][y];
}
!
!
public boolean isEmpty(int x, int y) {
return cells[x][y] == null;
}
!
!
!
}
1. EXPANSÃO
19
class Grid {
private Cell[][] cells;
…
!
public void addCell(int x, int y, Cell cell) {
cells[x][y] = cell;
}
!
public Cell fetchCell(int x, int y) {
return cells[x][y];
}
!
!
!
public boolean isEmpty(int x, int y) {
return cells[x][y] == null;
}
!
!
!
}
1. EXPANSÃO
20
class Grid {
private Cell[][] cells;
private Map<Coordinate, Cell> newCells;
…
!
public void addCell(int x, int y, Cell cell) {
cells[x][y] = cell;
}
public void addCell(Coordinate coordinate, Cell cell) {
newCells.put(coordinate, cell);
}
public Cell fetchCell(int x, int y) {
return cells[x][y];
}
public Cell fetchCell(Coordinate coordinate) {
return newCells.get(coordinate);
}
public boolean isEmpty(int x, int y) {
return cells[x][y] == null;
}
public boolean isEmpty(Coordinate coordinate) {
return !newCells.containsKey(coordinate);
}
}
2. MIGRAÇÃO
21
Nova Versão
Cliente
Versão
Antiga
Cliente
Cliente
addCell(int x, int y, Cell cell)
fetchCell(int x, int y)
isEmpty(int x, int y)
Cell[][] cells
Map<Coordinate, Cell> newCells
2. MIGRAÇÃO
22
Nova Versão
Cliente
Versão
Antiga
Cliente
Cliente
addCell(int x, int y, Cell cell)
fetchCell(Coordinate c)
isEmpty(Coordinate c)
Cell[][] cells
Map<Coordinate, Cell> newCells
3. CONTRAÇÃO
23
Nova Versão
Cliente
Cliente
Cliente
addCell(Coordinate c, Cell cell)
fetchCell(Coordinate c)
isEmpty(Coordinate c)
Cell[][] cells
Map<Coordinate, Cell> cells
3. CONTRAÇÃO
24
class Grid {
private Cell[][] cells;
private Map<Coordinate, Cell> newCells;
…
!
public void addCell(int x, int y, Cell cell) {
cells[x][y] = cell;
}
public void addCell(Coordinate coordinate, Cell cell) {
newCells.put(coordinate, cell);
}
public Cell fetchCell(int x, int y) {
return cells[x][y];
}
public Cell fetchCell(Coordinate coordinate) {
return newCells.get(coordinate);
}
public boolean isEmpty(int x, int y) {
return cells[x][y] == null;
}
public boolean isEmpty(Coordinate coordinate) {
return !newCells.containsKey(coordinate);
}
}
3. CONTRAÇÃO
25
class Grid {
!
private Map<Coordinate, Cell> cells;
…
!
!
!
!
public void addCell(Coordinate coordinate, Cell cell) {
cells.put(coordinate, cell);
}
!
!
!
public Cell fetchCell(Coordinate coordinate) {
return cells.get(coordinate);
}
!
!
!
public boolean isEmpty(Coordinate coordinate) {
return !cells.containsKey(coordinate);
}
}
IMPLANTAÇÃO
AZUL-VERDE
http://www.thoughtworks.com/insights/blog/implementando-implantacoes-
azul-verde-com-amazon-web-services-aws
26
IMPLANTAÇÃO AZUL-VERDE
27
Azul
Verde
Servidor
web
Servidor de
aplicação
Servidor de
BD
RoteadorUsuários
Servidor
web
Servidor de
aplicação
Servidor de
BD
IMPLANTAÇÃO AZUL-VERDE
28
Azul
Verde
Servidor
web
Servidor de
aplicação
Servidor de
BD
RoteadorUsuários
Servidor
web
Servidor de
aplicação
Servidor de
BD
“Mas e o Banco de Dados?”
29
IMPLANTAÇÃO AZUL-VERDE
30
Azul
Verde
Azul
Verde
Servidor
web
Servidor de
BD
RoteadorUsuários
Servidor
web
Servidor de
BD
Servidor de
aplicação
Servidor de
aplicação
IMPLANTAÇÃO AZUL-VERDE
31
Azul
Verde
Azul
Verde
Servidor
web
Servidor de
BD
RoteadorUsuários
Servidor
web
Servidor de
BD
Servidor de
aplicação
Servidor de
aplicação
IMPLANTAÇÃO AZUL-VERDE
32
Azul
Verde
Azul
Verde
Servidor
web
Servidor de
BD
RoteadorUsuários
Servidor
web
Servidor de
BD
Servidor de
aplicação
Servidor de
aplicação
IMPLANTAÇÃO
CANÁRIO
http://www.thoughtworks.com/insights/blog/implantações-canário
33
IMPLANTAÇÃO CANÁRIO
34
Nova Versão
Versão Antiga
Servidor
web
Servidor de
aplicação
Servidor de
BD
Servidor
web
Servidor de
aplicação
Servidor de
BD
RoteadorUsuários
Todos os
usuários
IMPLANTAÇÃO CANÁRIO
35
Nova Versão
Versão Antiga
Servidor
web
Servidor de
aplicação
Servidor de
BD
Servidor
web
Servidor de
aplicação
Servidor de
BD
RoteadorUsuários
Maior parte dos
usuários
(95%)
Alguns
usuários
(5%)
IMPLANTAÇÃO CANÁRIO
36
Nova Versão
Versão Antiga
Servidor
web
Servidor de
aplicação
Servidor de
BD
Servidor
web
Servidor de
aplicação
Servidor de
BD
Usuários Roteador
Alguns
usuários
(2%)
Maior parte
dos usuários
(98%)
IMPLANTAÇÃO CANÁRIO
37
Nova Versão
Versão Antiga
Servidor
web
Servidor de
aplicação
Servidor de
BD
Servidor
web
Servidor de
aplicação
Servidor de
BD
Usuários
Todos os
usuários
Roteador
FEATURE TOGGLES
38https://www.flickr.com/photos/waynewilkinson/6187603535
FEATURE TOGGLE
39
share_with_friends = false
Googlehttp://www.devopsnapratica.com.br
Livro Devops na Prática: Entrega de Software Confiável e Automatizada
Configuração:
FEATURE TOGGLE
40
share_with_friends = true
Googlehttp://www.devopsnapratica.com.br
Livro Devops na Prática: Entrega de Software Confiável e Automatizada
Configuração:
ENTREGA NO
ESCURO
41https://www.flickr.com/photos/dwrose/3967195917
ENTREGA NO ESCURO
42
Googlehttp://facebook.com
Web Page Title
João
Backend de Chat
Googlehttp://facebook.com
Web Page Title
Maria
ENTREGA NO ESCURO
43
Googlehttp://facebook.com
Web Page Title
Phasellus nulla risus, semper non dictum semper, congue
vitae augue. Nunc vulputate ligula eget neque tempus. Maria
disse
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Curabitur eget ultrices velit.
Suspendisse ut justo elementum felis facilisis aliquam ut
sit amet mi. Praesent sit amet venenatis eros. Fusce est
tellus, congue ac augue in, congue elementum quam.João
disse
João
Backend de Chat
Googlehttp://facebook.com
Web Page Title
Phasellus nulla risus, semper non dictum semper, congue
vitae augue. Nunc vulputate ligula eget neque tempus. Maria
disse
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Curabitur eget ultrices velit.
Suspendisse ut justo elementum felis facilisis aliquam ut
sit amet mi. Praesent sit amet venenatis eros. Fusce est
tellus, congue ac augue in, congue elementum quam.João
disse
Maria
ENTREGA NO ESCURO
44
Googlehttp://facebook.com
Web Page Title
Phasellus nulla risus, semper non dictum semper, congue
vitae augue. Nunc vulputate ligula eget neque tempus. Maria
disse
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Curabitur eget ultrices velit.
Suspendisse ut justo elementum felis facilisis aliquam ut
sit amet mi. Praesent sit amet venenatis eros. Fusce est
tellus, congue ac augue in, congue elementum quam.João
disse
João
Backend de Chat
Googlehttp://facebook.com
Web Page Title
Phasellus nulla risus, semper non dictum semper, congue
vitae augue. Nunc vulputate ligula eget neque tempus. Maria
disse
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Curabitur eget ultrices velit.
Suspendisse ut justo elementum felis facilisis aliquam ut
sit amet mi. Praesent sit amet venenatis eros. Fusce est
tellus, congue ac augue in, congue elementum quam.João
disse
Maria
DEVOPS ALÉM DAS
FERRAMENTAS
DevOps é mais que automação e ferramentas
45
CALMS
46
CALMS
Cultura
46
CALMS
Cultura
Automação
46
CALMS
Cultura
Automação
Lean (pensamento enxuto)
46
CALMS
Cultura
Automação
Lean (pensamento enxuto)
Medição
46
CALMS
Cultura
Automação
Lean (pensamento enxuto)
Medição
Sharing (compartilhamento)
46
47
MAIS CONTEÚDO
▫︎Kit de Entrega Contínua:
▫︎http://info.thoughtworks.com/entrega-continua-toolkit
▫︎Insights (blogs e artigos)
▫︎Livros
▫︎Slides
▫︎Vídeo
PERGUNTAS?
#DevopsNaPratica
48
Danilo Sato (@dtsato)
dsato@thoughtworks.com
OBRIGADO!
www.devopsnapratica.com.br
!
Continue a discussão usando
a hashtag
#DevopsNaPratica

Mais conteúdo relacionado

PDF
Emoções do Lider
PDF
Os testes ainda vao salvar sua pele
PDF
Novidades Groovy 2.0
PDF
Padrões de deploy para devops e entrega contínua - DevDay 2014
PDF
Refactoring Strategies: Beyond the Basics
PDF
How To Assemble a High Converting eBook
PPTX
The 10 Timeless Productivity Hacks
PDF
Leader's Guide to Motivate People at Work
Emoções do Lider
Os testes ainda vao salvar sua pele
Novidades Groovy 2.0
Padrões de deploy para devops e entrega contínua - DevDay 2014
Refactoring Strategies: Beyond the Basics
How To Assemble a High Converting eBook
The 10 Timeless Productivity Hacks
Leader's Guide to Motivate People at Work

Semelhante a Padrões de deploy para DevOps e Entrega Contínua (20)

PDF
Padrões de deploy para DevOps e Entrega Contínua
PDF
Padrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
PDF
Gerando Resultados com Scrum: Scrum in a nutshell
PDF
Scrum in a nutshell - business perspective
PDF
Do Zero à Produção
PDF
Metodologias de desenvolvimento - Waterfall vs Agile
PPTX
DevOps: Entregando software e serviços rapidamente
PDF
TDC2016SP - Trilha Digital Transformation
PDF
O desafio de sustentar centenas de servicos
PPTX
Workshop Bny Mellon
PDF
DevOps: princípios e práticas para a Entrega Contínua
PDF
Arquitetura de Software para a Entrega Continua
PPTX
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
PDF
Palestra Geinfo 2011 - Desenvolvimento ágil no governo
PDF
Continuous Delivery e DevOps
KEY
O que vi na QCon 2012 São Paulo
PPTX
Metodologia ágil
PDF
Agilidade: Scrum e Xp
PPTX
Tendências e Dicas para o Desenvolvimento de Software
PDF
Continuous delivery
Padrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
Gerando Resultados com Scrum: Scrum in a nutshell
Scrum in a nutshell - business perspective
Do Zero à Produção
Metodologias de desenvolvimento - Waterfall vs Agile
DevOps: Entregando software e serviços rapidamente
TDC2016SP - Trilha Digital Transformation
O desafio de sustentar centenas de servicos
Workshop Bny Mellon
DevOps: princípios e práticas para a Entrega Contínua
Arquitetura de Software para a Entrega Continua
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
Palestra Geinfo 2011 - Desenvolvimento ágil no governo
Continuous Delivery e DevOps
O que vi na QCon 2012 São Paulo
Metodologia ágil
Agilidade: Scrum e Xp
Tendências e Dicas para o Desenvolvimento de Software
Continuous delivery
Anúncio

Mais de Danilo Sato (11)

PDF
Keynote RuPy Natal 2014
PDF
Revisitando as Práticas de Engenharia Ágil
PDF
O que você NÃO aprendeu sobre Programação Orientada a Objetos
PDF
Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...
ODP
Estratégias de Refatoração: além do be-a-bá
PPT
Coding Dojo Introduction
PDF
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
KEY
Refactoring at Large
KEY
Refatoração em Larga Escala
KEY
Managing your technical debt - AgileBrazil 2011
KEY
Lean Lego Game
Keynote RuPy Natal 2014
Revisitando as Práticas de Engenharia Ágil
O que você NÃO aprendeu sobre Programação Orientada a Objetos
Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...
Estratégias de Refatoração: além do be-a-bá
Coding Dojo Introduction
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Refactoring at Large
Refatoração em Larga Escala
Managing your technical debt - AgileBrazil 2011
Lean Lego Game
Anúncio

Último (11)

PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Mecânico de Manutenção de Equipamentos.pptx
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Eng. Software - pontos essenciais para o início
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Utilizando code blockes por andre backes
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Mecânico de Manutenção de Equipamentos.pptx
Arquitetura de computadores - Memórias Secundárias
Eng. Software - pontos essenciais para o início
Manejo integrado de pragas na cultura do algodão
Viasol Energia Solar -Soluções para geração e economia de energia
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Utilizando code blockes por andre backes
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx

Padrões de deploy para DevOps e Entrega Contínua