devcommerce conference 2016: concorrência em aplicações que exigem baixa latência e alta...
Embed Size (px)
TRANSCRIPT

Concorrência, baixa latência e alta disponibilidade

HELLO! Guilherme Roveri Arquiteto de Software – Grupo Netshoes @gbroveri
2
Eder Magalhães Arquiteto de Software – Grupo Netshoes @edermag

Agenda ▫ Realidade de um e-commerce ▫ Alguns desafios ▫ Caso de uso: Inventário ▫ Arquitetura LMAX ▫ Solução Proposta ▫ Conclusões ▫ Referências
3

Realidade ▫ Negócio dinâmico ▫ Marketing digital agressivo ▫ Oferecer ótima experiência de compra ▫ Evolução contínua nos bastidores ▫ Sazonalidade: Blackfriday
4

Concorrência
Disputa frenética ao acesso a recursos partilhados…
5

Latência
Intervalo de tempo entre a ação e o efeito…
6

Disponibilidade
Percentual de tempo em que o sistema está no ar…
7

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

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

LMAX Composto por 3 segmentos:
10

Business Logic Processor
▫ Fluxo de negócio ▫ Single thread ▫ Sem acesso a banco de dados ▫ Sem controle transacional ▫ Manipulação em memória
11

Arquitetura
12

Fila + NoSQL Proposta de arquitetura c/ Fila e NoSQL p/ solução de controle de inventário
13

Inventário ▫ Operações crédito e débito; ▫ Particionamento de Produtos; ▫ Single thread p/ Consumidor;
14

Inventário
15 Business
Debit / Credit NoSQL Persistence
REST Endpoint
Message Broker

Inventário
16 Business
Debit / Credit NoSQL Persistence
Request
REST Endpoint
Message Broker

Inventário
17 Business
Debit / Credit NoSQL Persistence
Request
Partition
REST Endpoint
Message Broker
Request Queues

Inventário
18 Business
Debit / Credit NoSQL Persistence
Consumer Partition
Request
Partition
REST Endpoint
Message Broker
Request Queues

Inventário
19 Business
Debit / Credit NoSQL Persistence
Consumer Partition
Request
Partition
REST Endpoint
Message Broker
Request Queues

Inventário
20 Business
Debit / Credit NoSQL Persistence
Consumer Partition
Partition
Request
Partition
REST Endpoint
Message Broker
Request Queues

Inventário
21 Business
Debit / Credit
Reply Queues Consumer Partition
Partition
NoSQL Persistence
Request
Partition
REST Endpoint
Message Broker
Request Queues

Inventário
22
Request
Business Debit / Credit
Response
Reply Queues
Partition
Consumer Partition
Request Queues
Message Broker
Partition
NoSQL Persistence
REST Endpoint

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

Conclusão ▫ O drive é o negócio ▫ Experimentar tecnologias ▫ Clean code: testes + testes + testes
24

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