Apis Rest Autoescaláveis

Documentos relacionados
Web APIs e delivery. Matando a fome de 1 milhão de pedidos mensais no. Tiago Dolphine

Micro Serviço desacoplamento arquitetura

Teste como Serviço (TaaS) na Computação em Nuvem

BPMN e BPMS. Ad, Décio, Marcos, Yuri

SMS MANUAL DE UTILIZAÇÃO PLATAFORMA SMS V2.0

Google App Engine. André Gustavo Duarte de Almeida. Computação Ubíqua e Nuvens. Natal, 24 de maio de 2012 andregustavoo@gmail.com

BITDEFENDER GRAVITYZONE. Diogo Calazans Diretor Comercial

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Shermila Guerra Santa Cruz Orientador: Ricardo Rodrigues Ciferri

Do SaaS ao PaaS no Mercado Eletrônico. Ricardo Pardini, qcon SP 13

VMware vsphere: Install, Configure, Manage [v6.5] (VWVSICM6.5)

AN EVALUATION OF ALTERNATIVE ARCHITECTURE FOR TRANSACTION PROCESSING IN THE CLOUD (SIGMOD)

Computação em Grid e em Nuvem

Developing Windows Azure and Web Services (20487)

Nesse tutorial iremos abordar a utilização de instâncias spot, com a finalidade de reduzir os custos.

Customer Engagement & Commerce

Práticas de Desenvolvimento de Software

Sistemas Distribuídos

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Slides de exemplos Confluence. Casos reais de integração do Atlassian Confluence com outros Softwares

DESENVOLVIMENTO DE APLICATIVO MÓVEL PARA AUXÍLIO NA PREVENÇÃO DE TRAGÉDIAS EM DECORRÊNCIA DE ENCHENTES

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Bancos de Dados Distribuídos. Gabriel Resende Gonçalves 4 de fevereiro de 2014

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP

NMENPI (MANAGING ENTERPRISE NETWORKS WITH CISCO PRIME INFRASTRUCTURE) 2.x

Google Cloud Print. Guia do administrador

De gargalos à Oportunidades

Especialização em Engenharia e Desenvolvimento de Software Web

Transcript name: 1. Introduction to DB2 Express-C

Instalação do Firebird 1.5, Firebird 2.1 e Firebird 2.5 em Sistema Operacional Windows

Cloud Computing, Data Centers e Governo: desafios e oportunidades

Tuning Apache/MySQL/PHP para Desenvolvedores. By Douglas V. Pasqua Zend Certified Engineer / LPI / SCJP douglas.pasqua@gmail.com

Desmitificando o Desenvolvimento de Módulos Personalizados para Drupal 7

7 Utilização do Mobile Social Gateway

Tutorial Mão na Massa sobre Elastic Load Balancer

PTC Aula Web e HTTP 2.3 Correio eletrônico na Internet 2.4 DNS O serviço de diretório da Internet

Migrando seu site para o Azure utilizando

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB

ach 2147 desenvolvimento de sistemas de informação distribuídos

Java. no Google App Engine. Escreva aplicações Java para o serviço de Cloud Computing da Google

Portabilidade da Linha RM Versão

Levando uma aplicação com 4 milhões de usuários para a nuvem com Azure e.net. Fabrício Sanchez (@sanchezfabricio)

A melhor plataforma aberta para redes sociais. Gustavo Caldeira Consultor em arquitetura de sistemas e web social caldeira.santos@gmail.

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

Follow-up APP Ticket Mobile

Diagramas de Sequência Exemplo

Microservices com

Replicação. Modelos de Consistência.

Geo Big Data - criar mapas incríveis com milhões de pontos pode ser simples

Proposta Comercial CloudFlex

Bancos de Dados Distribuídos. Bancos de Dados Distribuídos. Conteúdo. Motivação. Motivação. Introdução aos BDs Distribuídos.

Serviços: API REST. URL - Recurso

Arquiteturas escaláveis utilizando ferramentas Shared Nothing. Victor Canô

Bancos de Dados em Clouds

MAURÍCIO MACHADO DE MINAS Vice Presidente Executivo

o que é p2p? sistemas onde todos os nós são equivalentes em funcionalidade e no papel desempenhado ...

Patrício Domingues Dep. Eng. Informática ESTG Instituto Politécnico de Leiria Leiria, Maio

Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google

Ricardo R. Lecheta. Novatec

Alura Ensino Online. Rua Vergueiro, 3185, 8º andar, São Paulo, SP

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Sumário. 1 Caracterização de Sistemas Distribuídos 1. 2 Modelos de Sistema Redes de Computadores e Interligação em Rede 81

Desenvolvimento de aplicações para a Cloud. Queue

Por que? A WEB está substituindo o desktop Google Gmail, Google Docs, Amazon, Flickr, Facebook, Twitter, YouTube Mudança de Paradigma:

EUCALYPTUS: UMA PLATAFORMA CLOUD COMPUTING PARA

Computação de alto desempenho. Joubert de Castro Lima Professor Adjunto DECOM

Solução para habilitar para a web aplicações Windows. White Paper

Banco de Dados. Maurício Edgar Stivanello

Bruno Antunes da Silva UFSCar - Sorocaba

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Segurança em Aplicações Web com GNU/Linux

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

Construindo redes elásticas e automáticas Inovações da Cisco & Citrix

Banco de Dados. Prof. Antonio

um token de requisição garante que o usuário final autorize a aplicação; um token de acesso permite que a aplicação execute as operações da API.

Sistemas Distribuídos

JBoss Seam. Vinicius Senger Co-fundador Globalcode Alberto J Lemos (Dr. Spock) Instrutor Globalcode. Globalcode Open4Education

SQL Structured Query Language

Transcrição:

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

About me Full-stack developer desde 1998 Gerente geral de projetos na Dextra Sistemas Criador do YAWP! Framework @feroult

Agenda Introdução Padrões de design Automação de ambientes Na prática com o Google Cloud Projetos reais & referências

Introdução

APIs everywhere Web, mobile, microservices Grande número de usuários Grande volume de dados Novos requisitos de escalabilidade

Exemplos de aplicações Global Apps Facebook, Twitter, Gmail Apps para consumidores Pedidos on-line, banking, e-commerce

Escalabilidade vertical Instâncias mais caras Dados em memória Ponto único de gargalo Menor complexidade

Escalabilidade horizontal Instâncias mais baratas Dados distribuídos Gargalo distribuído Maior complexidade

Pode ser bem difícil Sistemas distribuídos Consistência eventual Ausência de Joins Automação de ambientes

Padrões de design

Aplicação de exemplo Item Aggregation order count count by status n 1 * 1 * 1 Order City State status: created prepared delivered

Aplicação de exemplo Código fonte bit.ly/qconsp2016

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

Roteamento 1 doc = 1 tx Create Order Security Validation Regras Item Item Client Side Server Side

Roteamento 1 doc = 1 tx Create Order Security Validation Regras Add Item Security Validation Regras Add Item Security Validation Regras Client Side Server Side

Sharding High-throughput para escrita Múltiplas instâncias de persistência Shard Key Replicação Dificuldade para Joins

Sharding Create POST /orders Shard Key replicação entre shards Routing grupo de shards bye bye joins

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

Consultas e consistência eventual

Consultas e consistência eventual GET /orders?city=sao-paulo nós quentes replicação futura

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

Consultas e consistência forte

Consultas e consistência forte GET /orders?city=sao-paulo espera transações nós quentes

Pipelines assíncronas Joins Views materializadas Sums, counts, avgs Baixo impacto na latência 1 write / sec Agregadores Consistência futura

Pipelines assíncronas POST /orders GET /cities GET /states status = 200 Order City State Fluxo Assíncrono

Pipelines assíncronas POST /orders GET /cities GET /states status = 200 Order City State Fluxo Assíncrono

Pipelines assíncronas POST /orders GET /cities status = 200 Order City acumuladores evitam contenção sequenciamento 1 write / sec de escrita

Pipelines assíncronas POST /orders City GET /cities Order Daily Report GET /daily Múltiplas pipelines em paralelo Monthly Report GET /monthly

Pipelines assíncronas GET /sales POST /orders Order POST /prices Price Sales Report POST /stock Stock Pipelines convergentes (Joins)

Automação de ambientes

Automação Cloud intensive Todas as camadas Front / back-end instances, BD, filas, cache Scale Up, Scale Down (elástico)

Scale up and down Evita capacidade ociosa Menor custo de saída infraestrutura manhã tarde noite Menor custo médio Picos inesperados tempo

Soluções e ferramentas

Na prática com o Google Cloud

Aplicação de exemplo Item Aggregation order count count by status n 1 * 1 * 1 Order City State status: created prepared delivered

Projetos reais & referências

Projetos reais Pense duas vezes High-throughput Dados >> memória Simples o suficiente (why not?)

Projetos reais Vendas / CRM organização de eventos Delivery de comida

Referências 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

Referências Código fonte bit.ly/qconsp2016 YAWP! Framework yawp.io

feroult@gmail.com @feroult Obrigado!