Anda di halaman 1dari 43

Arquitetura e Design

Apis Autoescalveis
Google Cloud Platform

About me

@feroult

Full-stack developer desde 1998

Gerente de operaes Dextra

Criador do YAWP! Framework

Google Cloud GDE

Agenda

Introduo

Padres de design

Automao de ambientes

Na prtica com o Google Cloud

Projetos reais & referncias

Introduo

APIs everywhere

Web, mobile, microservices

Grande nmero de usurios

Grande volume de dados

Novos requisitos de escalabilidade

Exemplos de aplicaes

Global Apps

Facebook, Twitter, Gmail

Apps para consumidores


Pedidos on-line, banking,
e-commerce

Escalabilidade vertical

Instncias mais caras

Dados em memria

Ponto nico de gargalo

Menor complexidade

Escalabilidade horizontal

Instncias mais baratas

Dados distribudos

Gargalo distribudo

Maior complexidade

Pode ser bem difcil

Sistemas distribudos

Consistncia eventual

Ausncia de Joins

Automao de ambientes

Padres de design

Aplicao de exemplo
Item
n

order count

Aggregation

count by status

1
*
Order
status:

created
prepared
delivered

City

State

Aplicao de exemplo

Cdigo fonte
bit.ly/qconsp2016

Roteamento

Stateless requests No client affinity

Baixa latncia
Evite grandes sequncias server-side
Chamadas assncronas (outros servios)
Use cache intensivamente

Evite locks 1 doc = 1 transao

Roteamento
Create

1 doc = 1 tx

Order
Item
Item

Client Side

Security

Validation

Server Side

Regras

Roteamento
Create

1 doc = 1 tx

Order

Security

Validation

Regras

Add

Item

Security

Validation

Regras

Add

Item

Security

Validation

Regras

Client Side

Server Side

Sharding

High-throughput para escrita

Mltiplas instncias de persistncia

Shard Key

Replicao

Dificuldade para Joins

Sharding
POST /orders

Create
Shard
Key

replicao
entre shards

Routing

bye bye joins

grupo de
shards

Consultas e consistncia eventual

High-throughput para leitura

Shard Groups com menos carga

Ns podem estar desatualizados


Eventual Possvel mas incerto
Eventually At an unspecified future time

Consultas e consistncia eventual

Consultas e consistncia eventual


GET /orders?city=sao-paulo

ns quentes

replicao futura

Consultas e consistncia forte

Consultas por chave

Grupos de documentos por chave pai

Alteraes at o momento Locks

Mantenha grupos User Sized

~ 1 write / sec

Consultas e consistncia forte

Consultas e consistncia forte


GET /orders?city=sao-paulo

espera transaes
ns quentes

Pipelines assncronas

Joins Views materializadas

Sums, counts, avgs

Baixo impacto na latncia

1 write / sec Agregadores

Consistncia futura

Pipelines assncronas
POST /orders

GET /cities

GET /states

City

State

status = 200

Order

Fluxo Assncrono

Pipelines assncronas
POST /orders

GET /cities

GET /states

City

State

status = 200

Order

Fluxo Assncrono

Pipelines assncronas
POST /orders

GET /cities

status = 200

Order

acumuladores
evitam conteno
de escrita

City
sequenciamento
1 write / sec

Pipelines assncronas
POST /orders

Order

Mltiplas pipelines
em paralelo

City

GET /cities

Daily
Report

GET /daily

Monthly
Report

GET /monthly

Pipelines assncronas
POST /orders

Order

POST /prices

Price

POST /stock

Stock

GET /sales

Sales
Report

Pipelines convergentes
(Joins)

Automao de ambientes

Automao

Cloud intensive

Todas as camadas
Front / back-end instances, BD, filas, cache

Scale Up, Scale Down (elstico)

infraestrutura

Scale up and down


tarde
manh

noite

tempo

Evita capacidade ociosa

Menor custo de sada

Menor custo mdio

Picos inesperados

Solues e ferramentas

Na prtica com o Google Cloud

Aplicao de exemplo
Item
n

order count

Aggregation

count by status

1
*
Order
status:

created
prepared
delivered

City

State

Projetos reais & referncias

Projetos reais

Pense duas vezes

High-throughput

Dados >> memria

Simples o suficiente (why not?)

Projetos reais

Vendas / CRM organizao de eventos

Delivery de comida

Referncias

Design for Scale (Appengine)


https://cloud.google.com/appengine/articles/scalability

Shard or not shard


https://dzone.com/articles/shard-or-not-shard

Appengine data pipelines


https://dl.google.com/googleio/2010/app-engine-datapipelines.pdf

Referncias

Cdigo fonte
bit.ly/qconsp2016

YAWP! Framework
yawp.io

feroult@gmail.com

@feroult

Obrigado!

Anda mungkin juga menyukai