back-end de extrema performance

164
Backend de extrema performance Alexandre Gama linkedin: br.linkedin.com/in/alexandregama twitter: @alexandregamma

Upload: elo7

Post on 15-Apr-2017

1.232 views

Category:

Technology


2 download

TRANSCRIPT

Backend de extrema performance

Alexandre Gamalinkedin: br.linkedin.com/in/alexandregamatwitter: @alexandregamma

Envie sua dúvida no Twitter!#elo7tech

Agenda

1. Decisões Arquiteturais

Agenda

1. Decisões Arquiteturais2. Arquitetura Real Time

Agenda

1. Decisões Arquiteturais2. Arquitetura Real Time3. Resiliência entre Sistemas

Talk7

SivalFofo

Frances

Conversa - Envio da Mensagem

Conversa - Notificação

Conversa - Notificação

Conversa - Leitura da Mensagem

Conversa Inteira

Protocolo?

Qual escolher? HTTP HTTP/2 SPDY WebSocket

1. HTTP2. HTTP/23. TCP4. UDP5. WebSocket6. XMPP

HTTP

HTTP

1. Request / Response

HTTP

1. Request / Response2. Document-centric

HTTP

1. Request / Response2. Document-centric3. Overhead de Headers

HTTP

1. Request / Response2. Document-centric3. Overhead de Headers4. Complexo

HTTP

1. Request / Response2. Document-centric3. Overhead de Headers4. Complexo5. Half-duplex

Como receber a notificação?

Client ficar pedindo?

Polling

Long Polling

DDoS Em nós mesmos!

DDoS Em nós mesmos!

Streaming

HTTP/2

HTTP/2

1. Não somente Request/Response

HTTP/2

1. Não somente Request/Response2. Server Push

HTTP/2

1. Não somente Request/Response2. Server Push3. Mulplexing

HTTP/2

1. Não somente Request/Response2. Server Push3. Mulplexing4. Streaming

HTTP/2

1. Não somente Request/Response2. Server Push3. Mulplexing4. Streaming5. Full-duplex

Ainda é HTTP :(

#xatiadinhu :(

HTTP/2

1. Overhead de Headers

HTTP/2

1. Overhead de Headers2. Document-centric

HTTP/2

1. Overhead de Headers2. Document-centric3. Complexo

HTTP/2

1. Overhead de Headers2. Document-centric3. Complexo4. Amazon não tem suporte :(

WebSockets

WebSockets

1. Protocolo de Transporte

WebSockets

1. Protocolo de Transporte2. Full-duplex

WebSockets

1. Protocolo de Transporte2. Full-duplex3. Streaming

WebSockets

1. Protocolo de Transporte2. Full-duplex3. Streaming4. WebSockets + protocolos = s2

WebSockets

1. Protocolo de Transporte2. Full-duplex3. Streaming4. WebSockets + protocolos = s25. Suporte pelos browsers

WebSockets

1. Protocolo de Transporte2. Full-duplex3. Streaming4. WebSockets + protocolos = s25. Suporte pelos browsers6. Awesome :)

WebSockets = Transporte

Protocolo de Comunicacão

WebSockets + ?

MQTT

MQTT

1. Protocolo de Comunicação

MQTT

1. Protocolo de Comunicação2. Baixo Overhead

MQTT

1. Protocolo de Comunicação2. Baixo Overhead3. Garantia de Entrega (QoS)

MQTT

1. Protocolo de Comunicação2. Baixo Overhead3. Garantia de Entrega (QoS)4. Simples

MQTT

1. Protocolo de Comunicação2. Baixo Overhead3. Garantia de Entrega (QoS)4. Simples5. Publish/Subscribe

Quality of Service

MQTT - QoS 0

MQTT - At most once

QoS 0: Fire and Forget

PUBLISH

MQTT - QoS 1

MQTT - At Least Once

QoS 1: Confirma pra mim que recebeu?

PUBLISH

QoS 1: Confirma pra mim que recebeu?

PUBLISH

PUBACK

MQTT - QoS 2

MQTT - Exactly Once

QoS 2: Confirma a confirmação que recebeu?

PUBLISH

QoS 2: Confirma a confirmação que recebeu?

PUBLISH

PUBREC

QoS 2: Confirma a confirmação que recebeu?

PUBLISH

PUBREC

PUBREL

QoS 2: Confirma a confirmação que recebeu?

PUBLISH

PUBREC

PUBREL

PUBCOMP

MQTT é um Protocolo

Broker MQTT?

Brokers malandros de MQTT

Brokers malandros de MQTT

Brokers malandros de MQTT

Brokers malandros de MQTT

Brokers malandros de MQTT

Mosquitto - Marotagens

1. Implementação do MQTT 3.0 e 3.1

Mosquitto - Marotagens

1. Implementação do MQTT 3.0 e 3.12. Suporte a WebSockets

Mosquitto - Marotagens

1. Implementação do MQTT 3.0 e 3.12. Suporte a WebSockets3. Baixo consumo de recursos

Mosquitto - Marotagens

1. Implementação do MQTT 3.0 e 3.12. Suporte a WebSockets3. Baixo consumo de recursos4. Implementado em C

Mosquitto - Marotagens

1. Implementação do MQTT 3.0 e 3.12. Suporte a WebSockets3. Baixo consumo de recursos4. Implementado em C5. Leve

WebSockets + MQTT = s2

Resumo Marotão

Protocolo

1. WebSockets

Protocolo

1. WebSockets2. MQTT

Protocolo

1. WebSockets2. MQTT3. Mosquitto

Frances quer a mensagem!

Arquitetura Real Time

Real Time - Envio de Msg

MQTT - Publish

MQTT - Publish

MQTT - Publish

MQTT - Publish

MQTT - Publishmqtt-publisher

MQTT - Publishmqtt-publisher

MQTT - Publishmqtt-publisher

Discovery

MQTT - Publishmqtt-publisher

MQTT - Publish

QoS 0

mqtt-publisher

Pusblish

MQTT - Publish

QoS 0

WebSocket

mqtt-publisher

Pusblish

MQTT - Publish

QoS 0

WebSocket

mqtt-publisher

MQTT

Pusblish

MQTT - Publish

QoS 0

WebSocket

Pusblish

mqtt-publisher

MQTT

Pusblish

MQTT - Publish

QoS 0

WebSocket

Pusblish

mqtt-publisher

QoS 1

MQTT

Pusblish

Real Time - Autenticação

Autenticação

Autenticação

Token

Autenticação

Token

Connect

Autenticação

Token

Connect (Token)

Autenticação

Token

Connect (Token)

Autenticação

Token

Connect (Token)

Token

Autenticação

Token

Connect (Token)

ConnAck

Token

MQTT - PUB/SUB

SUBSCRIPTION

Msgs de Pedido

Autenticação

SUBSCRIBE

Autenticação

SUBACK

Autenticação

WebSocket

Resumo Marotão

Real Time - Push

1. Mensagem para o SNS

Real Time - Push

1. Mensagem para o SNS2. Mensagem para o SQS

Real Time - Push

1. Mensagem para o SNS2. Mensagem para o SQS3. MQTT Publisher

Real Time - Push

1. Mensagem para o SNS2. Mensagem para o SQS3. MQTT Publisher4. Mosquitto Discovery

Real Time - Push

1. Mensagem para o SNS2. Mensagem para o SQS3. MQTT Publisher4. Mosquitto Discovery5. Broadcast para Mosquittos

Real Time - Autenticação

1. Frances usa Autenticador

Real Time - Autenticação

1. Frances usa Autenticador2. Token é gerado

Real Time - Autenticação

1. Frances usa Autenticador2. Token é gerado3. Frances -> MQTT Connect

Real Time - Autenticação

1. Frances usa Autenticador2. Token é gerado3. Frances -> MQTT Connect4. Frances -> MQTT Subscription

Real Time - Autenticação

1. Frances usa Autenticador2. Token é gerado3. Frances -> MQTT Connect4. Frances -> MQTT Subscription5. Channel aberto para Push

Real Time - Autenticação

1. Frances usa Autenticador2. Token é gerado3. Frances -> MQTT Connect4. Frances -> MQTT Subscription5. Channel aberto para Push6. Msg é recebida :)

E se der tudo errado?

Fallback Gama?

Fallbacks

1. Timeouts em sequência

Fallbacks

1. Timeouts em sequência2. Objetos no Thread Pool

Fallbacks

1. Timeouts em sequência2. Objetos no Thread Pool3. Chance de recovery

Fallbacks

1. Timeouts em sequência2. Objetos no Thread Pool3. Chance de recovery4. Métricas de fallbacks

Polling?

Não!

MQTT!

Circuit Break

Circuit Break State

Hystrix

Hystrix - Marotagens

1. Circuit Break

Hystrix - Marotagens

1. Circuit Break2. Latency and Fault Tolerance

Hystrix - Marotagens

1. Circuit Break2. Latency and Fault Tolerance3. Stop cascading failures

Hystrix - Marotagens

1. Circuit Break2. Latency and Fault Tolerance3. Stop cascading failures4. Resilience Engineering

Hystrix - Marotagens

1. Circuit Break2. Latency and Fault Tolerance3. Stop cascading failures4. Resilience Engineering5. Métricas em Real Time animais! :)

Hystrix - Dashboard Real Time

É isso pessoal! :)

Envie sua dúvida no Twitter!#elo7tech

Wifi: cubo-eventos Senha: cubo2016

Obrigado!

Alexandre Gamalinkedin: br.linkedin.com/in/alexandregamatwitter: @alexandregamma