devcommerce conference 2016: concorrência em aplicações que exigem baixa latência e alta...
TRANSCRIPT
![Page 1: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/1.jpg)
Concorrência, baixa latência e alta disponibilidade
![Page 2: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/2.jpg)
HELLO! Guilherme Roveri Arquiteto de Software – Grupo Netshoes @gbroveri
2
Eder Magalhães Arquiteto de Software – Grupo Netshoes @edermag
![Page 3: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/3.jpg)
Agenda ▫ Realidade de um e-commerce ▫ Alguns desafios ▫ Caso de uso: Inventário ▫ Arquitetura LMAX ▫ Solução Proposta ▫ Conclusões ▫ Referências
3
![Page 4: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/4.jpg)
Realidade ▫ Negócio dinâmico ▫ Marketing digital agressivo ▫ Oferecer ótima experiência de compra ▫ Evolução contínua nos bastidores ▫ Sazonalidade: Blackfriday
4
![Page 5: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/5.jpg)
Concorrência
Disputa frenética ao acesso a recursos partilhados…
5
![Page 6: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/6.jpg)
Latência
Intervalo de tempo entre a ação e o efeito…
6
![Page 7: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/7.jpg)
Disponibilidade
Percentual de tempo em que o sistema está no ar…
7
![Page 8: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/8.jpg)
Caso de uso
COMO um provedor e-commerce PRECISO de um mecanismo robusto para gerenciar o inventário PARA evitar perdas E garantir satisfação dos clientes
8
![Page 9: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/9.jpg)
LMAX ▫ Plataforma para comercialização de produtos do mercado financeiro para varejo
▫ Eliminar concorrência ▫ Regras de negócio usando memória
e event sourcing ▫ Alto throughput c/ baixa latência ▫ Ex: 6 milhões de transações por seg
9
![Page 10: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/10.jpg)
LMAX Composto por 3 segmentos:
10
![Page 11: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/11.jpg)
Business Logic Processor
▫ Fluxo de negócio ▫ Single thread ▫ Sem acesso a banco de dados ▫ Sem controle transacional ▫ Manipulação em memória
11
![Page 12: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/12.jpg)
Arquitetura
12
![Page 13: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/13.jpg)
Fila + NoSQL Proposta de arquitetura c/ Fila e NoSQL p/ solução de controle de inventário
13
![Page 14: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/14.jpg)
Inventário ▫ Operações crédito e débito; ▫ Particionamento de Produtos; ▫ Single thread p/ Consumidor;
14
![Page 15: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/15.jpg)
Inventário
15 Business
Debit / Credit NoSQL Persistence
REST Endpoint
Message Broker
![Page 16: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/16.jpg)
Inventário
16 Business
Debit / Credit NoSQL Persistence
Request
REST Endpoint
Message Broker
![Page 17: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/17.jpg)
Inventário
17 Business
Debit / Credit NoSQL Persistence
Request
Partition
REST Endpoint
Message Broker
Request Queues
![Page 18: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/18.jpg)
Inventário
18 Business
Debit / Credit NoSQL Persistence
Consumer Partition
Request
Partition
REST Endpoint
Message Broker
Request Queues
![Page 19: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/19.jpg)
Inventário
19 Business
Debit / Credit NoSQL Persistence
Consumer Partition
Request
Partition
REST Endpoint
Message Broker
Request Queues
![Page 20: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/20.jpg)
Inventário
20 Business
Debit / Credit NoSQL Persistence
Consumer Partition
Partition
Request
Partition
REST Endpoint
Message Broker
Request Queues
![Page 21: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/21.jpg)
Inventário
21 Business
Debit / Credit
Reply Queues Consumer Partition
Partition
NoSQL Persistence
Request
Partition
REST Endpoint
Message Broker
Request Queues
![Page 22: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/22.jpg)
Inventário
22
Request
Business Debit / Credit
Response
Reply Queues
Partition
Consumer Partition
Request Queues
Message Broker
Partition
NoSQL Persistence
REST Endpoint
![Page 23: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/23.jpg)
Inventário Tecnologias
23
Request
Business Debit / Credit
Response
Reply Queues
Partition
Consumer Partition
Partition
ü Spring Java; ü Spring Cloud; ü RabbitMQ ü Cassandra
REST Endpoint
Message Broker
NoSQL Persistence
Request Queues
![Page 24: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/24.jpg)
Conclusão ▫ O drive é o negócio ▫ Experimentar tecnologias ▫ Clean code: testes + testes + testes
24
![Page 25: DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta disponibilidade](https://reader035.vdocuments.pub/reader035/viewer/2022062316/58ee93741a28ab39358b45cb/html5/thumbnails/25.jpg)
Referências ▫ https://www.infoq.com/presentations/LMAX ▫ https://github.com/LMAX-Exchange ▫ http://martinfowler.com/articles/lmax.html ▫ http://www.datastax.com/dev/blog/scalable-
inventory ▫ http://henryr.github.io/cap-faq/
▫ http://www.slideshare.net/edermag
25