INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment –...

43
Apis Rest Autoescaláveis Padrões de design para QCONSP 2016 Fernando Ultremare SEM COMPLICAÇÃO

Transcript of INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment –...

Page 1: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Apis Rest AutoescaláveisPadrões de design para

QCONSP 2016

Fernando Ultremare

SEM COMPLICAÇÃO

Page 2: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

About me

• Full-stack developer desde 1998

• Gerente geral de projetos na Dextra Sistemas

• Criador do YAWP! Framework

@feroult

Page 3: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal
Page 4: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Agenda

• Introdução

• Padrões de design

• Automação de ambientes

• Na prática com o Google Cloud

• Projetos reais & referências

Page 5: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Introdução

Page 6: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

APIs everywhere

• Web, mobile, microservices

• Grande número de usuários

• Grande volume de dados

• Novos requisitos de escalabilidade

Page 7: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Exemplos de aplicações

• Global Apps

Facebook, Twitter, Gmail

• Apps para consumidores

Pedidos on-line, banking,e-commerce

Page 8: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Escalabilidade vertical

• Instâncias mais caras

• Dados em memória

• Ponto único de gargalo

• Menor complexidade

Page 9: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Escalabilidade horizontal

• Instâncias mais baratas

• Dados distribuídos

• Gargalo distribuído

• Maior complexidade

Page 10: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Pode ser bem difícil

• Sistemas distribuídos

• Consistência eventual

• “Ausência” de Joins

• Automação de ambientes

Page 11: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Padrões de design

Page 12: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Aplicação de exemplo

Order City State

Item

* 1* 1

1n

Aggregationorder count

count by status

status: created

prepared delivered

Page 13: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Aplicação de exemplo

• Código fonte

bit.ly/qconsp2016

Page 14: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Roteamento

• Stateless requests ➝ No client affinity

• Baixa latência ➝

Evite grandes sequências server-side

Chamadas assíncronas (outros serviços)

Use cache intensivamente

• Evite locks ➝ 1 doc = 1 transação

Page 15: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Roteamento

Client Side Server Side

Security

Validation

Regras

OrderItem Item

Create

1 doc = 1 tx

Page 16: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Roteamento

Client Side

Add

Server Side

Security Validation RegrasOrderCreate

Item

Add Item

Security Validation Regras

Security Validation Regras

1 doc = 1 tx

Page 17: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Sharding

• High-throughput para escrita

• Múltiplas instâncias de persistência

• Shard Key

• Replicação

• Dificuldade para Joins

Page 18: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Sharding

POST /orders

Routing

Create Shard Key

replicaçãoentre shards

bye bye joins

grupo deshards

Page 19: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Consultas e consistência eventual

• High-throughput para leitura

• Shard Groups com menos carga

• Nós podem estar desatualizados

Eventual ➝ Possível mas incerto

Eventually ➝ At an unspecified future time

Page 20: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Consultas e consistência eventual

Page 21: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Consultas e consistência eventual

GET /orders?city=sao-paulo

nós quentes

replicação futura

Page 22: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Consultas e consistência forte

• Consultas por chave

• Grupos de documentos por chave pai

• Alterações até o momento ➝ Locks

• Mantenha grupos “User Sized”

• ~ 1 write / sec

Page 23: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Consultas e consistência forte

Page 24: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Consultas e consistência forte

GET /orders?city=sao-paulo

nós quentes

espera transações

Page 25: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Pipelines assíncronas

• “Joins” ➝ Views materializadas

• Sums, counts, avgs

• Baixo impacto na latência

• 1 write / sec ➝ Agregadores

• Consistência futura

Page 26: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Pipelines assíncronas

Order City State

POST /orders

status = 200

GET /cities GET /states

Fluxo Assíncrono

Page 27: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Pipelines assíncronas

Order City State

POST /orders GET /cities GET /states

status = 200

Fluxo Assíncrono

Page 28: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Pipelines assíncronas

POST /orders

acumuladoresevitam contenção

de escrita

Order

status = 200

City

GET /cities

sequenciamento 1 write / sec

Page 29: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Pipelines assíncronas

City

Daily Report

Monthly Report

Múltiplas pipelines em paralelo

GET /cities

GET /daily

GET /monthly

POST /orders

Order

Page 30: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Pipelines assíncronas

Order

Price

Stock

POST /orders

POST /prices

POST /stock

Sales Report

GET /sales

Pipelines convergentes (Joins)

Page 31: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Automação de ambientes

Page 32: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Automação

• Cloud intensive

• Todas as camadas

Front / back-end instances, BD, filas, cache

• Scale Up, Scale Down (elástico)

Page 33: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Scale up and down

tempo

infra

estru

tura

manhã

tarde

noite

• Evita capacidade ociosa

• Menor custo de saída

• Menor custo médio

• Picos inesperados

Page 34: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Soluções e ferramentas

Page 35: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Na prática com o Google Cloud

Page 36: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Aplicação de exemplo

Order City State

Item

* 1* 1

1n

Aggregationorder count

count by status

status: created

prepared delivered

Page 37: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal
Page 38: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Projetos reais & referências

Page 39: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Projetos reais

• Pense duas vezes…

• High-throughput

• Dados >> memória

• Simples o suficiente (why not?)

Page 40: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Projetos reais

• Vendas / CRM organização de eventos

• Delivery de comida

Page 41: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Referências

• Design for Scale (Appengine) https://cloud.google.com/appengine/articles/scalability

• Shard or not shardhttps://dzone.com/articles/shard-or-not-shard

• Appengine data pipelineshttps://dl.google.com/googleio/2010/app-engine-data-pipelines.pdf

Page 42: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Referências

• Código fontebit.ly/qconsp2016

• YAWP! Framework yawp.io

Page 43: INSTITUCIONAL | Cloud native architectures, continuous integration e bluegreen deployment – Glênio Borges e Luis Macedo, da Pivotal

Obrigado!@[email protected]