View
16
Download
0
Category
Preview:
Citation preview
u m e r p p a r a a n u v e m
ARQUITETANDO E EVOLUINDO
@andremidea @mvlbarcelos
@mvlbarcelos
Marcus Barcelos
Arquiteto de soluções.
Objetivo de estrangular o legado! :)
a EMPRESA
A EMPRESA
A EMPRESA
carreiras.bluesoft.com.br labs.bluesoft.com.br
DESAFIO
Migrar de um data center para a AWS
ROADMAP
Identificar Problemas
2 Soluções
Solução para Problemas internos
ANTES
Foi pra aws
depois
Availability Zone #1 Availability Zone #2
Cliente 1,2Cliente 3 Cliente 4,5,6 Cliente …..
Web app
WEB APP WEB APP
CONSEQUENCIAS
PIOPS.
Tipos de instancias.
Multi-AZ
WE HAVE A PROBLEM
Nosso software não foi feito pensando
na nuvem.
Precisamos Evoluir!
Mas… Como?
IDENTIFICAR
O que Conseguimos
Mudar?
AGIR
Alterar!
MEDIR
Ver se o que alteramos deu
resultado
VER ReSULTA
DO
O que fizemos deu certo?
PROCESSO
“Uma longa caminhada começa com o primeiro passo” –Lao Tse
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
ACÃO
HACKATHON!! =)
MUITAS ÍDEIAS
IdéÉÉias
TORNADO 1.0
Processamento Pesado
Assíncrono vs Síncrono
Emagrecer o ERP
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
Porém…. o ônus sempre acompanha
o bônus
ÔNUS
Estrutura Complexa
Deploy Centralizado
Code Ownership
Adoção do Time não foi boa.
TORNAdo 2.0
Pegar os pontos positivos da primeira versão e melhorar!
TORNADO 1 = PERFORMANCE
TORNADO 2 = FACILIDADE
Objetivos
OWNERSHIP
ONECLICK DEPLOY
SIMPLE DEV ENV
Microservices é hype… vamos
usar.
AçÕES
Separar Tasks em Serviços
Processo que controla Serviços
Deploy Individual e sem Downtime
ARQUITETURA 2.0
FLUXO
BENEFÍCIOS
Tarefas Isoladas
Deploy sem Downtime e a qualquer momento
Desenvolvimento não precisa conhecer da infra
Desvantagens
Maior Complexidade no Manager
Mais Coisas para Gerenciar
TORNADO CLI
./newtask.sh• Archetype
• Cria Repositório
• Gera Pipeline no Jenkins
• Gera todas configurações
ONE CLICK DEPLOY
DASHBOARD
APRENDIZADO
NÃO CENTRALIZE
ISOLAMENTO
RASTREABILIBADE
USE A NUVEM A SEU FAVOR
NEXT STEPS
CONTAINER SERVICE!
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>
mvn clean package docker:build -DpushImage
Final
U S E O Q U E A N U V E M O F E R C E
- M A N U T E N ç Ã O+ I N O V A Ç Ã O
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
ANTES
Problemas
Consumo de CPU Contínuo
Não Escala
Cupons param de processar se webserver fica fora
Não temos garantia de processamento
Objetivos
RESILIÊNCIA
ESCALABILIDADE
NÃO AFETAR USUÁRIO
COMO?
Lembrando… Use e abuse o que a cloud oferece!
http://aws.amazon.com/pt/kinesis/
DEPOIS
benefícios
22% de requests a menos
Disponibilidade
Escala Horizontalmente
Acompanhamento de Venda em Tempo Real
Usuários não são mais afetados
Os Desafios não Acabam :)
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
Perfomance boa, entrega devagar…
não está certo
Identif icar
Demora para fazer o build.
Ambiente de dev ≠ Ambiente de build.
Insegurança para Entregar.
Feedback rapido por equipes.
Objetivos
BUILD RÁPIDO
RELEASE CONFIÁVEL
AMBIENTE PADRONIZADO
Abordagem
Amazon EC2 Spot Instances
jenkis
Integração Continua.
Criação das instancias SPOT.
Deploy.
Docker image
Firefox headless.
Ruby + Watir.
Java + Tomcat.
Volume montado (war + testes)
Docker hub (mesma imagem dev / build)
ec2 spot
Uma instancia por equipe
Custo +- U$ 20,00/instancia
ansible
SPOT cai com frequência
Criar a SPOT pelo Jenkis.
Docker?
Passa na minha maquina, mas quebra no Jenkins!
PQ docker?
Desenvolvimento Build/Produção
Já rodou os teste na sua maquina com o docker?
então… RODA LÁ!
FLUXO
Valeu a pena?
Sem docker
Com docker
Valeu a pena?
wrap up
Conheça bem os produtos que sua
provedora de cloud oferece
wrap up
BigBang não é viável em um produto grande.
Começa pelas bordas.
wrap up
Delegue o máximo possível para a
provedora de cloud.
Obrigado!
Recommended