DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta...

Post on 13-Apr-2017

92 views 0 download

Transcript of DevCommerce Conference 2016: Concorrência em aplicações que exigem baixa latência e alta...

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

26

Obrigado Questões? ▫  gbroveri@gmail.com ▫  edermag@gmail.com