arquitetando e evoluindo - qconspqconsp.com/sp2015/system/files/presentation-slides... ·...

75
um erp para a nuvem ARQUITETANDO E EVOLUINDO @andremidea @mvlbarcelos

Upload: others

Post on 14-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

u m e r p p a r a a n u v e m

ARQUITETANDO E EVOLUINDO

@andremidea @mvlbarcelos

André Midea

Dev focado em Ops na Bluesoft.

www.andremidea.com

@andremidea

@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!