ARQUITETANDO E EVOLUINDO - QConSPqconsp.com/sp2015/system/files/presentation-slides... ·...
Transcript of ARQUITETANDO E EVOLUINDO - QConSPqconsp.com/sp2015/system/files/presentation-slides... ·...
A EMPRESA
carreiras.bluesoft.com.br labs.bluesoft.com.br
depois
Availability Zone #1 Availability Zone #2
Cliente 1,2Cliente 3 Cliente 4,5,6 Cliente …..
Web app
WEB APP WEB APP
IDENTIFICAR
O que Conseguimos
Mudar?
AGIR
Alterar!
MEDIR
Ver se o que alteramos deu
resultado
VER ReSULTA
DO
O que fizemos deu certo?
PROCESSO
identif icar
Processos pesados concorrendo com o usuário
Processamento de arquivos texto com grande volume direto no web server
Não Escala na Horizontal
AçÃO
Processos pesados concorrendo com o usuário
Processamento de arquivos texto com grande volume direto no web server
Não Escala na Horizontal
Arquitetura
Web app
Web app
Amazon SQS
Tornado
Cliente 3
Cliente 1
Cliente 2
Enviar NF-‐e
Gerar SPED
Task X
Task Y
Task Z
Amazon S3 Amazon RDS Amazon Redshift PostgreSQL
BÔNUS
Escala na Horizontal
Menos Carga no WebServer
Processamento em Fila
10.000 Tarefas/dia retirados do web server
Tolerancia a Falha
TORNAdo 2.0
Pegar os pontos positivos da primeira versão e melhorar!
TORNADO 1 = PERFORMANCE
TORNADO 2 = FACILIDADE
BENEFÍCIOS
Tarefas Isoladas
Deploy sem Downtime e a qualquer momento
Desenvolvimento não precisa conhecer da infra
TORNADO CLI
./newtask.sh• Archetype
• Cria Repositório
• Gera Pipeline no Jenkins
• Gera todas configurações
1
2
34
51. Nova Release
2. Deploy - Docker Image3. Mudança de Versão Subir docker image correspondente4. Enviar Tasks para versão nova5. Matar Serviço Antigo
FLOW
DOcker maven plugin
<build> <plugins> ... <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.2.4</version> <configuration> <imageName>task-sped-fiscal</imageName> <dockerDirectory>docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> ... </plugins></build>
AçÃO
Processos pesados concorrendo com o usuário
Processamento de arquivos texto com grande volume direto no web server
Não Escala na Horizontal
Problemas
Consumo de CPU Contínuo
Não Escala
Cupons param de processar se webserver fica fora
Não temos garantia de processamento
benefícios
22% de requests a menos
Disponibilidade
Escala Horizontalmente
Acompanhamento de Venda em Tempo Real
Usuários não são mais afetados
IDENTIFICAR
O que Conseguimos
Mudar?
AGIR
Alterar!
MEDIR
Ver se o que alteramos deu
resultado
VER ReSULTA
DO
O que fizemos deu certo?
DEPLOY
Deploy Está Lento
Teste não Passa
Teste passana minha máquina
Identif icar
Demora para fazer o build.
Ambiente de dev ≠ Ambiente de build.
Insegurança para Entregar.
Feedback rapido por equipes.
Docker image
Firefox headless.
Ruby + Watir.
Java + Tomcat.
Volume montado (war + testes)
Docker hub (mesma imagem dev / build)