ARQUITETANDO E EVOLUINDO um erp para a nuvem @andremidea @mvlbarcelos
@andremidea André Midea Dev focado em Ops na Bluesoft. www.andremidea.com
@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 WEB APP WEB APP Web app Cliente 1,2 Cliente 3 Cliente 4,5,6 Cliente.. Availability Zone #1 Availability Zone #2
CONSEQUENCIAS PIOPS. Tipos de instancias. Multi-AZ
WE HAVE A PROBLEM Nosso software não foi feito pensando na nuvem.
Precisamos Evoluir!
Mas Como?
PROCESSO IDENTIFI CAR AGIR MEDIR VER ReSULTA DO O que Alterar! Ver se o que O que fizemos Conseguimos alteramos deu deu certo? Mudar? resultado
Uma longa caminhada começa com o primeiro passo Lao Tse
identificar 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 Cliente 1 Cliente 2 Web app Tornado Cliente 3 Amazon SQS 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!
FLOW 1 1. Nova Release 5 4 3 2 2. Deploy - Docker Image 3. Mudança de Versão Subir docker image correspondente 4. Enviar Tasks para versão nova 5. Matar Serviço Antigo
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
USE O QUE A NUVEM OFERCE -MANUTENçÃO + I N O VA Ç Ã 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 :)
DEPLOY Teste passa na minha máquina IDENTIFI CAR AGIR MEDIR VER ReSULTA DO O que Conseguimos Mudar? Alterar! Deploy Está Lento Ver se o que O que fizemos alteramos deu deu certo? resultado Teste não Passa
Perfomance boa, entrega devagar não está certo
Identificar 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
Amazon EC2 Spot Instances Abordagem
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!