Copyright 2015,Alexandre Freire Kawakami and Industrial Logic, Inc.
All Rights Reserved.
Deploy Contínuo de
Software Legado:
Loucura ou
Genialidade?
#1e5d91
alex@industriallogic.com
@freire_da_silva
• Diretor de Produtos @IndustrialLogic
• Ágil desde 2001
• Founder AgilCoop e AgilBits
• Tese de Mestrado:“Reflexões sobre o Ensino de
Metodologias Ágeis na Academia, Indústria e
Governo”
• Décadas de experiência e sucesso com empresas
renomadas mundialmente, praticando deploy
contínuo à 14 anos!
• Gosto de construir casas e surfar.
Software Legado?
#1e5d91
A Estrada para o
Deploy Contínuo
#1e5d91
A Estrada para o
Deploy Contínuo
Cultura DevOps
#1e5d91
Testes
Automatizados
A Estrada para o
Deploy Contínuo
Cultura DevOps
#1e5d91
Integração
Contínua (CI)
Testes
Automatizados
A Estrada para o
Deploy Contínuo
Cultura DevOps
#1e5d91
Entrega
Contínua (CD)
Integração
Contínua (CI)
Testes
Automatizados
A Estrada para o
Deploy Contínuo
Cultura DevOps
#1e5d91
Deploy
Contínuo
(CD)
Entrega
Contínua (CD)
Integração
Contínua (CI)
Testes
Automatizados
A Estrada para o
Deploy Contínuo
Cultura DevOps
#1e5d91
Cultura DevOps
#1e5d91
Cultura DevOps
DEV
#1e5d91
Cultura DevOps
DEV
OPS
#1e5d91
Cultura DevOps
DEV QA
OPS
#1e5d91
Cultura DevOps
DEV QA
OPS
💰
#1e5d91
Testes Automatizados
Integrate and build the system many times a day,
every time a task is completed.
— Kent Beck, Extreme Programming Explained
Integração Contínua (CI)
#1e5d91
É no Master!
#1e5d91
Entrega Contínua
(Continuous Delivery)
#1e5d91
Entrega Contínua
(Continuous Delivery)
#1e5d91
Entrega Contínua
(Continuous Delivery)
#1e5d91
Entrega Contínua
(Continuous Delivery)
#1e5d91
Deploy Contínuo
(Continuous Deployment)
#1e5d91
Qual é a Diferença?
#1e5d91
Qual é a Diferença?
#1e5d91
Deploy Contínuo
(Continuous Deployment)
#1e5d91
Deploy Contínuo
(Continuous Deployment)
#1e5d91
Deploy Contínuo
(Continuous Deployment)
#1e5d91
Deploy Contínuo
(Continuous Deployment)
#1e5d91
Deploy Contínuo
(Continuous Deployment)
#1e5d91
#FAIL
#1e5d91
ZERO Downtime
Para habilitar Zero Downtime use um
Proxy Reverso, trocando o ambiente
ativo de Green para Blue depois do
deploy no Green, e vice-versa.
#1e5d91
ZERO Downtime
Para habilitar Zero Downtime use um
Proxy Reverso, trocando o ambiente
ativo de Green para Blue depois do
deploy no Green, e vice-versa.
Deploy
#1e5d91
ZERO Downtime
Para habilitar Zero Downtime use um
Proxy Reverso, trocando o ambiente
ativo de Green para Blue depois do
deploy no Green, e vice-versa.
#1e5d91
ZERO Downtime
Para habilitar Zero Downtime use um
Proxy Reverso, trocando o ambiente
ativo de Green para Blue depois do
deploy no Green, e vice-versa.
Switch
#1e5d91
ZERO Downtime
Para habilitar Zero Downtime use um
Proxy Reverso, trocando o ambiente
ativo de Green para Blue depois do
deploy no Green, e vice-versa.
Só um desses
pré-
requisitos é
necessário!
#1e5d91
ZERO Downtime
Para habilitar Zero Downtime use um
Proxy Reverso, trocando o ambiente
ativo de Green para Blue depois do
deploy no Green, e vice-versa.
Registro de Domínios
na Locaweb
Registro de Domínios
na Locaweb
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
MS IIS
Registro de Domínios
na Locaweb
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
MS IIS
Registro de Domínios
na Locaweb
DB MS Access
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
MS IIS
Registro de Domínios
na Locaweb
DB MS Access
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
Verising
.com <SOAP>
MS IIS
Registro de Domínios
na Locaweb
DB MS Access
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
Verising
.com <SOAP>
.br <.exe>
registro.br
MS IIS
Registro de Domínios
na Locaweb
DB MS Access
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
Verising
.com <SOAP>
.br <.exe>
registro.br
.org <http>
eNon
MS IIS
Registro de Domínios
na Locaweb
DB MS Access
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
Verising
.com <SOAP>
.br <.exe>
registro.br
.org <http>
eNon
MS IIS
Registro de Domínios
na Locaweb
DB MS Access
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
Verising
.com <SOAP>
.br <.exe>
registro.br
.org <http>
eNon
#1e5d91
Precisamos Re-escrever!
#1e5d91
Precisamos Re-escrever!
• mas em Ruby
#1e5d91
Precisamos Re-escrever!
• mas em Ruby
• usando Ruby on Rails
#1e5d91
Precisamos Re-escrever!
• mas em Ruby
• usando Ruby on Rails
• com PostgreSQL
#1e5d91
Precisamos Re-escrever!
• mas em Ruby
• usando Ruby on Rails
• com PostgreSQL
• e aVerisign nos avisou que está
aposentando o sistema SOAP, e em 6
meses só a nova API REST vai funcionar!
Como Sair do Legado?
Como Sair do Legado?
#1e5d91
#1e5d91
🚫
#1e5d91
#1e5d91
Qual a primeira
mudança?
#1e5d91
#1e5d91
🚫
#1e5d91
O que esse sistema faz?
#1e5d91
O que esse sistema faz?
• Reserva
• Registra
• Renova
• Transfere
• Remove
• Vezes 3, para cada Registar externo
• mantem uma interface interna comum
#1e5d91
MS IIS
DB MS Access
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
Verising
.com <SOAP>
.br <.exe>
registro.br
.org <http>
eNon
MS IIS
DB MS Access
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
Verising
.com <SOAP>
.br <.exe>
registro.br
.org <http>
eNon
#1e5d91
Camada Anti-Corrupção
#1e5d91
MS IIS
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
Camada Anti-Corrupção
DB MS Access
#1e5d91
MS IIS
LibFichao_2.asp
________
________
________
________
________
________
________
~6K loc
registro.asp
________________
Camada Anti-Corrupção
DB MS Access
#1e5d91
Proxy
registro.asp
________________
#1e5d91
Proxy
registro.asp
________________
if(Application(“verisign.delete.migrated”)
#1e5d91
Proxy
registro.asp
________________
if(Application(“verisign.delete.migrated”)
REST
Ruby
on
Rails
#1e5d91
Proxy
registro.asp
________________
if(Application(“verisign.delete.migrated”)
REST
Ruby
on
Rails
DB PostgreSQL
#1e5d91
Proxy
registro.asp
________________
if(Application(“verisign.delete.migrated”)
REST
Ruby
on
Rails
Verising
REST
DB PostgreSQL
Loucura ou
Genialidade?
#1e5d91
ITIL®
Consegui mudar a
Cultura?
Consegui mudar a
Cultura?
X9
#1e5d91
Nem loucura nem
genialidade: Deploy
Contínuo é Mais Simples do
que você imagina. E você
pode fazê-lo sem ser
perfeito.

Deploy Contínuo de Software Legado: Loucura ou Genialidade?