Escalabilidade e Disponibilidade em Arquiteturas Web

59
Escalabilidade e Disponibilidade em Sistemas Distribuídos Renato Lucindo DevDay 2013

Transcript of Escalabilidade e Disponibilidade em Arquiteturas Web

Page 1: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  e  Disponibilidade  em  Sistemas  Distribuídos  

Renato  Lucindo  DevDay  2013  

Page 2: Escalabilidade e Disponibilidade em Arquiteturas Web

Renato  Lucindo    

       @rlucindo    

       /lucindo  

Page 3: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  e  Disponibilidade  em  Arquiteturas  Web  

Renato  Lucindo  DevDay  2013  

Page 4: Escalabilidade e Disponibilidade em Arquiteturas Web

Internet  

Page 5: Escalabilidade e Disponibilidade em Arquiteturas Web

Internet  

Page 6: Escalabilidade e Disponibilidade em Arquiteturas Web

Internet  

Page 7: Escalabilidade e Disponibilidade em Arquiteturas Web

Internet  

Page 8: Escalabilidade e Disponibilidade em Arquiteturas Web

Internet  

Page 9: Escalabilidade e Disponibilidade em Arquiteturas Web

Internet  

Page 10: Escalabilidade e Disponibilidade em Arquiteturas Web

Internet  

Escalabilidade   Disponibilidade  

Page 11: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  

•  Habilidade  do  sistema  de  assimilar  carga  crescente  

•  Escalabilidade  VerFcal  – Adicionar  recursos  em  um  único  nó  

•  Escalabilidade  Horizontal  – Adicionar  mais  nós  ao  sistema  

Page 12: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  

Page 13: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  

Page 14: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  

ParFcionamento  

Page 15: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  

Como  encontrar  os  dados?  

Page 16: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  

•  Habilidade  do  sistema  em  assimilar  falhas  de  soOware  e  hardware  

•  Ausência  de  ponto  único  de  falha  

Page 17: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  

Page 18: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  

Page 19: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  

Réplicas  

Page 20: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  

Como  manter  consistência?  

Page 21: Escalabilidade e Disponibilidade em Arquiteturas Web

Evolução  de  Arquitetura  

Internet   Aplicação   Dados  

Page 22: Escalabilidade e Disponibilidade em Arquiteturas Web

Evolução  de  Arquitetura  

Internet   Aplicação   Dados  

Cache  

Page 23: Escalabilidade e Disponibilidade em Arquiteturas Web

Evolução  de  Arquitetura  

Internet   Aplicação   Master  

Cache  

Slave  

Page 24: Escalabilidade e Disponibilidade em Arquiteturas Web

Evolução  de  Arquitetura  

Internet   Aplicação   Master  

Cache  

Slave  

Fila  

Aplicação  

Page 25: Escalabilidade e Disponibilidade em Arquiteturas Web

Evolução  de  Arquitetura  

Internet   Aplicação   Master  1  

Cache  

Slave  1  

Fila  

Aplicação  

Master  2  

Slave  2  

Page 26: Escalabilidade e Disponibilidade em Arquiteturas Web

Performance  

Cache    Fila    

PubSub    …  

Page 27: Escalabilidade e Disponibilidade em Arquiteturas Web

Ciclo  de    “desenvolvimento  arquitetural”  

   while  True:        -­‐  Ache  o  gargalo        -­‐  Remova  o  gargalo  

Page 28: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  –  Solução  

•  ParFcionamento  •  Sharding  –  Índice  central  – Hash  –  Índice  voláFl  

Page 29: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  –  Solução  

Internet   Aplicação   Shard  2  

Shard  3  

Shard  1  

Page 30: Escalabilidade e Disponibilidade em Arquiteturas Web

Escalabilidade  –  Solução  

Internet   Aplicação   Shard  2  

3   4  

1   2  

Shard  3  

Shard  1  

3   4  

1   2  

3   4  

1   2  

Page 31: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  –  Solução  

•  Réplicas  •  Granularidade  – RAID  – Failover  – Dados  

Page 32: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  –  Solução  

Page 33: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  –  Solução  

Page 34: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  –  Solução  

Page 35: Escalabilidade e Disponibilidade em Arquiteturas Web

Disponibilidade  –  Solução  

Page 36: Escalabilidade e Disponibilidade em Arquiteturas Web

Problemas  

Page 37: Escalabilidade e Disponibilidade em Arquiteturas Web

Teorema  CAP  

Fonte:  hbp://blog.nosqlFps.com/2011/04/cap-­‐diagram-­‐for-­‐distribuFon.html  

Page 38: Escalabilidade e Disponibilidade em Arquiteturas Web

Teorema  CAP  

Fonte:  hbp://blog.beany.co.kr/archives/275  

Page 39: Escalabilidade e Disponibilidade em Arquiteturas Web

Teorema  CAP  •  Consistência:  todas  as  operações  (leituras/escritas)  resultam  num  estado  global  consistente  

•  Disponibilidade:  todas  as  requisições  (em  nós  sem  falha)  devem  ter  uma  resposta  válida  

•  Tolerância  a  Par5ção  (de  rede):  os  nós  podem  não  conseguir  se  comunicar  

Escolha  DOIS  

Page 40: Escalabilidade e Disponibilidade em Arquiteturas Web

Teorema  CAP  

 C  +  A:  problemas  na  rede  podem  fazer  o  sistema  ficar  indisponível  

Page 41: Escalabilidade e Disponibilidade em Arquiteturas Web

Teorema  CAP  

 C  +  P:  clientes  nem  sempre  conseguem  realizar  operações  

Page 42: Escalabilidade e Disponibilidade em Arquiteturas Web

Teorema  CAP  

 A  +  P:  clientes  podem  ler  dados  inconsistentes  (valores  anFgos  ou  não  terminados)  

Page 43: Escalabilidade e Disponibilidade em Arquiteturas Web

Teorema  CAP  

•  Na  práFca,  C  +  A  e  C  +  P  são  o  mesmo:  – C  +  A:  não  é  tolerante  a  parFção  de  rede  – C  +  P:  não  é  disponível  quando  uma  parFção  de  rede  ocorre  

•  Problema:  P  –  parFção  de  rede  – Mais  comum:  Latência  de  rede.  

•  Escolha  UM  – Consistência  – Disponibilidade  

Page 44: Escalabilidade e Disponibilidade em Arquiteturas Web

Falácias  de  Sistemas  Distribuídos  

•  L.  Peter  Deutsch/Sun  –  1991  

Page 45: Escalabilidade e Disponibilidade em Arquiteturas Web

Falácias  de  Sistemas  Distribuídos  

•  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  

Page 46: Escalabilidade e Disponibilidade em Arquiteturas Web

Falácias  de  Sistemas  Distribuídos  

•  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  – Latency  is  zero  

Page 47: Escalabilidade e Disponibilidade em Arquiteturas Web

Falácias  de  Sistemas  Distribuídos  

•  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  – Latency  is  zero  – Bandwidth  is  infinite  

Page 48: Escalabilidade e Disponibilidade em Arquiteturas Web

Falácias  de  Sistemas  Distribuídos  

•  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  – Latency  is  zero  – Bandwidth  is  infinite  – The  network  is  secure  

Page 49: Escalabilidade e Disponibilidade em Arquiteturas Web

Falácias  de  Sistemas  Distribuídos  

•  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  – Latency  is  zero  – Bandwidth  is  infinite  – The  network  is  secure  – Topology  doesn’t  change  

Page 50: Escalabilidade e Disponibilidade em Arquiteturas Web

Falácias  de  Sistemas  Distribuídos  

•  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  – Latency  is  zero  – Bandwidth  is  infinite  – The  network  is  secure  – Topology  doesn’t  change  – There  is  one  administrator  

Page 51: Escalabilidade e Disponibilidade em Arquiteturas Web

Falácias  de  Sistemas  Distribuídos  

•  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  – Latency  is  zero  – Bandwidth  is  infinite  – The  network  is  secure  – Topology  doesn’t  change  – There  is  one  administrator  – Transport  cost  is  zero  

Page 52: Escalabilidade e Disponibilidade em Arquiteturas Web

Falácias  de  Sistemas  Distribuídos  

•  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  – Latency  is  zero  – Bandwidth  is  infinite  – The  network  is  secure  – Topology  doesn’t  change  – There  is  one  administrator  – Transport  cost  is  zero  – The  network  is  homogenous  

Page 53: Escalabilidade e Disponibilidade em Arquiteturas Web

Evolução  Arquitetural  

 while  True:        -­‐  Ache  o  gargalo        -­‐  Remova  o  gargalo  

 •  Logs,  contadores,  gráficos  •  Testes:  load  &  kill  

Page 54: Escalabilidade e Disponibilidade em Arquiteturas Web

Evolução  Arquitetural  

Load  

Page 55: Escalabilidade e Disponibilidade em Arquiteturas Web

Evolução  Arquitetural  

Load  

$ kill -STOP …

Page 56: Escalabilidade e Disponibilidade em Arquiteturas Web

NÃO  EXISTEM  SOLUÇÕES  PRONTAS  

Page 57: Escalabilidade e Disponibilidade em Arquiteturas Web

Resumo  

 while  True:        -­‐  Ache  o  gargalo        -­‐  Remova  o  gargalo  

 •  Escalabilidade:  ParFção  de  dados  •  Disponibilidade:  Réplicas  •  Performance:  Cache,  Filas,  PubSub,  …  

Page 58: Escalabilidade e Disponibilidade em Arquiteturas Web

Leia!  

Page 59: Escalabilidade e Disponibilidade em Arquiteturas Web

Obrigado!    

       @rlucindo    

       /lucindo