devcommerce conference 2016: concorrência em aplicações que exigem baixa latência e alta...

26
Concorrência, baixa latência e alta disponibilidade

Upload: imasters

Post on 13-Apr-2017

95 views

Category:

Education


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

LMAX Composto por 3 segmentos:

10

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

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

Arquitetura

12

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

26

Obrigado Questões? ▫  [email protected] ▫  [email protected]