SlideShare uma empresa Scribd logo
1 de 164
Baixar para ler offline
Backend
de extrema performance
Alexandre Gama
linkedin: br.linkedin.com/in/alexandregama
twitter: @alexandregamma
Envie sua dúvida no Twitter!
#elo7tech
Agenda
1. Decisões Arquiteturais
Agenda
1. Decisões Arquiteturais
2. Arquitetura Real Time
Agenda
1. Decisões Arquiteturais
2. Arquitetura Real Time
3. Resiliência entre Sistemas
Talk7
Sival
Fofo
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. HTTP
2. HTTP/2
3. TCP
4. UDP
5. WebSocket
6. XMPP
HTTP
HTTP
1. Request / Response
HTTP
1. Request / Response
2. Document-centric
HTTP
1. Request / Response
2. Document-centric
3. Overhead de Headers
HTTP
1. Request / Response
2. Document-centric
3. Overhead de Headers
4. Complexo
HTTP
1. Request / Response
2. Document-centric
3. Overhead de Headers
4. Complexo
5. 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/Response
2. Server Push
HTTP/2
1. Não somente Request/Response
2. Server Push
3. Mulplexing
HTTP/2
1. Não somente Request/Response
2. Server Push
3. Mulplexing
4. Streaming
HTTP/2
1. Não somente Request/Response
2. Server Push
3. Mulplexing
4. Streaming
5. Full-duplex
Ainda é HTTP :(
#xatiadinhu :(
HTTP/2
1. Overhead de Headers
HTTP/2
1. Overhead de Headers
2. Document-centric
HTTP/2
1. Overhead de Headers
2. Document-centric
3. Complexo
HTTP/2
1. Overhead de Headers
2. Document-centric
3. Complexo
4. Amazon não tem suporte :(
WebSockets
WebSockets
1. Protocolo de Transporte
WebSockets
1. Protocolo de Transporte
2. Full-duplex
WebSockets
1. Protocolo de Transporte
2. Full-duplex
3. Streaming
WebSockets
1. Protocolo de Transporte
2. Full-duplex
3. Streaming
4. WebSockets + protocolos = s2
WebSockets
1. Protocolo de Transporte
2. Full-duplex
3. Streaming
4. WebSockets + protocolos = s2
5. Suporte pelos browsers
WebSockets
1. Protocolo de Transporte
2. Full-duplex
3. Streaming
4. WebSockets + protocolos = s2
5. Suporte pelos browsers
6. Awesome :)
WebSockets = Transporte
Protocolo de Comunicacão
WebSockets + ?
MQTT
MQTT
1. Protocolo de Comunicação
MQTT
1. Protocolo de Comunicação
2. Baixo Overhead
MQTT
1. Protocolo de Comunicação
2. Baixo Overhead
3. Garantia de Entrega (QoS)
MQTT
1. Protocolo de Comunicação
2. Baixo Overhead
3. Garantia de Entrega (QoS)
4. Simples
MQTT
1. Protocolo de Comunicação
2. Baixo Overhead
3. Garantia de Entrega (QoS)
4. Simples
5. 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.1
2. Suporte a WebSockets
Mosquitto - Marotagens
1. Implementação do MQTT 3.0 e 3.1
2. Suporte a WebSockets
3. Baixo consumo de recursos
Mosquitto - Marotagens
1. Implementação do MQTT 3.0 e 3.1
2. Suporte a WebSockets
3. Baixo consumo de recursos
4. Implementado em C
Mosquitto - Marotagens
1. Implementação do MQTT 3.0 e 3.1
2. Suporte a WebSockets
3. Baixo consumo de recursos
4. Implementado em C
5. Leve
WebSockets + MQTT = s2
Resumo Marotão
Protocolo
1. WebSockets
Protocolo
1. WebSockets
2. MQTT
Protocolo
1. WebSockets
2. MQTT
3. Mosquitto
Frances quer a
mensagem!
Arquitetura Real Time
Real Time - Envio de Msg
MQTT - Publish
MQTT - Publish
MQTT - Publish
MQTT - Publish
MQTT - Publish
mqtt-publisher
MQTT - Publish
mqtt-publisher
MQTT - Publish
mqtt-publisher
Discovery
MQTT - Publish
mqtt-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 SNS
2. Mensagem para o SQS
Real Time - Push
1. Mensagem para o SNS
2. Mensagem para o SQS
3. MQTT Publisher
Real Time - Push
1. Mensagem para o SNS
2. Mensagem para o SQS
3. MQTT Publisher
4. Mosquitto Discovery
Real Time - Push
1. Mensagem para o SNS
2. Mensagem para o SQS
3. MQTT Publisher
4. Mosquitto Discovery
5. Broadcast para Mosquittos
Real Time - Autenticação
1. Frances usa Autenticador
Real Time - Autenticação
1. Frances usa Autenticador
2. Token é gerado
Real Time - Autenticação
1. Frances usa Autenticador
2. Token é gerado
3. Frances -> MQTT Connect
Real Time - Autenticação
1. Frances usa Autenticador
2. Token é gerado
3. Frances -> MQTT Connect
4. Frances -> MQTT Subscription
Real Time - Autenticação
1. Frances usa Autenticador
2. Token é gerado
3. Frances -> MQTT Connect
4. Frances -> MQTT Subscription
5. Channel aberto para Push
Real Time - Autenticação
1. Frances usa Autenticador
2. Token é gerado
3. Frances -> MQTT Connect
4. Frances -> MQTT Subscription
5. Channel aberto para Push
6. Msg é recebida :)
E se der tudo
errado?
Fallback Gama?
Fallbacks
1. Timeouts em sequência
Fallbacks
1. Timeouts em sequência
2. Objetos no Thread Pool
Fallbacks
1. Timeouts em sequência
2. Objetos no Thread Pool
3. Chance de recovery
Fallbacks
1. Timeouts em sequência
2. Objetos no Thread Pool
3. Chance de recovery
4. Métricas de fallbacks
Polling?
Não!
MQTT!
Circuit Break
Circuit Break State
Hystrix
Hystrix - Marotagens
1. Circuit Break
Hystrix - Marotagens
1. Circuit Break
2. Latency and Fault Tolerance
Hystrix - Marotagens
1. Circuit Break
2. Latency and Fault Tolerance
3. Stop cascading failures
Hystrix - Marotagens
1. Circuit Break
2. Latency and Fault Tolerance
3. Stop cascading failures
4. Resilience Engineering
Hystrix - Marotagens
1. Circuit Break
2. Latency and Fault Tolerance
3. Stop cascading failures
4. Resilience Engineering
5. 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 Gama
linkedin: br.linkedin.com/in/alexandregama
twitter: @alexandregamma

Mais conteúdo relacionado

Semelhante a Backend de extrema performance com arquitetura real time e resiliência

TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...tdc-globalcode
 
Ferment io t - Distributed and Scalable IoT Solution
Ferment io t - Distributed and Scalable IoT SolutionFerment io t - Distributed and Scalable IoT Solution
Ferment io t - Distributed and Scalable IoT SolutionDonato Vianna
 
Multicast on Cisco Network
Multicast on Cisco NetworkMulticast on Cisco Network
Multicast on Cisco Networkhome
 
Protocolo MQTT: Message Queuing Telemetry Transport
Protocolo MQTT: Message Queuing Telemetry TransportProtocolo MQTT: Message Queuing Telemetry Transport
Protocolo MQTT: Message Queuing Telemetry TransportNorberto Enomoto
 
TradeTech Brazil 2011 - O Desafio Da Latencia
TradeTech Brazil 2011 - O Desafio Da LatenciaTradeTech Brazil 2011 - O Desafio Da Latencia
TradeTech Brazil 2011 - O Desafio Da LatenciaJose Ricardo Maia Moraes
 
MQTT: Message Queuing Telemetry Transport (IoT)
MQTT: Message Queuing Telemetry Transport (IoT)MQTT: Message Queuing Telemetry Transport (IoT)
MQTT: Message Queuing Telemetry Transport (IoT)Norberto Enomoto
 
Explicando segurança e privacidade com Wireshark (2017)
Explicando segurança e privacidade com Wireshark (2017)Explicando segurança e privacidade com Wireshark (2017)
Explicando segurança e privacidade com Wireshark (2017)Euler Neto
 
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...Francois Marier
 
Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores Maurício Moreira Neto
 
A nova Central de Notificações do Windows Phone
A nova Central de Notificações do Windows PhoneA nova Central de Notificações do Windows Phone
A nova Central de Notificações do Windows PhoneAndre Carlucci
 
#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2Luiz Avila
 
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2tdc-globalcode
 
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo SilveiraServlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo SilveiraCaelum
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesJose Augusto Carvalho
 
Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Rodrigo Stefani Domingues
 

Semelhante a Backend de extrema performance com arquitetura real time e resiliência (20)

TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
 
Ferment io t - Distributed and Scalable IoT Solution
Ferment io t - Distributed and Scalable IoT SolutionFerment io t - Distributed and Scalable IoT Solution
Ferment io t - Distributed and Scalable IoT Solution
 
Multicast on Cisco Network
Multicast on Cisco NetworkMulticast on Cisco Network
Multicast on Cisco Network
 
Protocolo MQTT: Message Queuing Telemetry Transport
Protocolo MQTT: Message Queuing Telemetry TransportProtocolo MQTT: Message Queuing Telemetry Transport
Protocolo MQTT: Message Queuing Telemetry Transport
 
MQTT VS REST
MQTT VS RESTMQTT VS REST
MQTT VS REST
 
TradeTech Brazil 2011 - O Desafio Da Latencia
TradeTech Brazil 2011 - O Desafio Da LatenciaTradeTech Brazil 2011 - O Desafio Da Latencia
TradeTech Brazil 2011 - O Desafio Da Latencia
 
MQTT: Message Queuing Telemetry Transport (IoT)
MQTT: Message Queuing Telemetry Transport (IoT)MQTT: Message Queuing Telemetry Transport (IoT)
MQTT: Message Queuing Telemetry Transport (IoT)
 
Explicando segurança e privacidade com Wireshark (2017)
Explicando segurança e privacidade com Wireshark (2017)Explicando segurança e privacidade com Wireshark (2017)
Explicando segurança e privacidade com Wireshark (2017)
 
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
 
Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores
 
A nova Central de Notificações do Windows Phone
A nova Central de Notificações do Windows PhoneA nova Central de Notificações do Windows Phone
A nova Central de Notificações do Windows Phone
 
Tcp ip
Tcp ipTcp ip
Tcp ip
 
2017 elipse mqtt
2017 elipse mqtt2017 elipse mqtt
2017 elipse mqtt
 
#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2
 
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
 
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo SilveiraServlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar Configurações
 
VRaptor4 & plugins
VRaptor4 & pluginsVRaptor4 & plugins
VRaptor4 & plugins
 
Aula 1
Aula 1Aula 1
Aula 1
 
Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017
 

Backend de extrema performance com arquitetura real time e resiliência