Escalabilidade	  e	  Disponibilidade	  em	  Sistemas	  Distribuídos	  Renato	  Lucindo	  DevDay	  2013	  
Renato	  Lucindo	  	  	  	  	  	  @rlucindo	  	  	  	  	  	  /lucindo	  
Escalabilidade	  e	  Disponibilidade	  em	  Arquiteturas	  Web	  Renato	  Lucindo	  DevDay	  2013	  
Internet	  
Internet	  
Internet	  
Internet	  
Internet	  
Internet	  
Internet	  Escalabilidade	   Disponibilidade	  
Escalabilidade	  •  Habilidade	  do	  sistema	  de	  assimilar	  carga	  crescente	  •  Escalabilidade	  VerFcal	  – Adici...
Escalabilidade	  
Escalabilidade	  
Escalabilidade	  ParFcionamento	  
Escalabilidade	  Como	  encontrar	  os	  dados?	  
Disponibilidade	  •  Habilidade	  do	  sistema	  em	  assimilar	  falhas	  de	  soOware	  e	  hardware	  •  Ausência	  de	...
Disponibilidade	  
Disponibilidade	  
Disponibilidade	  Réplicas	  
Disponibilidade	  Como	  manter	  consistência?	  
Evolução	  de	  Arquitetura	  Internet	   Aplicação	   Dados	  
Evolução	  de	  Arquitetura	  Internet	   Aplicação	   Dados	  Cache	  
Evolução	  de	  Arquitetura	  Internet	   Aplicação	   Master	  Cache	  Slave	  
Evolução	  de	  Arquitetura	  Internet	   Aplicação	   Master	  Cache	  Slave	  Fila	  Aplicação	  
Evolução	  de	  Arquitetura	  Internet	   Aplicação	   Master	  1	  Cache	  Slave	  1	  Fila	  Aplicação	  Master	  2	  Sl...
Performance	  Cache	  	  Fila	  	  PubSub	  	  …	  
Ciclo	  de	  	  “desenvolvimento	  arquitetural”	  	  	  while	  True:	  	   	   	  -­‐	  Ache	  o	  gargalo	  	   	   	  ...
Escalabilidade	  –	  Solução	  •  ParFcionamento	  •  Sharding	  – Índice	  central	  – Hash	  – Índice	  voláFl	  
Escalabilidade	  –	  Solução	  Internet	   Aplicação	   Shard	  2	  Shard	  3	  Shard	  1	  
Escalabilidade	  –	  Solução	  Internet	   Aplicação	   Shard	  2	  3	   4	  1	   2	  Shard	  3	  Shard	  1	  3	   4	  1	 ...
Disponibilidade	  –	  Solução	  •  Réplicas	  •  Granularidade	  – RAID	  – Failover	  – Dados	  
Disponibilidade	  –	  Solução	  
Disponibilidade	  –	  Solução	  
Disponibilidade	  –	  Solução	  
Disponibilidade	  –	  Solução	  
Problemas	  
Teorema	  CAP	  Fonte:	  hbp://blog.nosqlFps.com/2011/04/cap-­‐diagram-­‐for-­‐distribuFon.html	  
Teorema	  CAP	  Fonte:	  hbp://blog.beany.co.kr/archives/275	  
Teorema	  CAP	  •  Consistência:	  todas	  as	  operações	  (leituras/escritas)	  resultam	  num	  estado	  global	  consi...
Teorema	  CAP	  	  C	  +	  A:	  problemas	  na	  rede	  podem	  fazer	  o	  sistema	  ficar	  indisponível	  
Teorema	  CAP	  	  C	  +	  P:	  clientes	  nem	  sempre	  conseguem	  realizar	  operações	  
Teorema	  CAP	  	  A	  +	  P:	  clientes	  podem	  ler	  dados	  inconsistentes	  (valores	  anFgos	  ou	  não	  terminado...
Teorema	  CAP	  •  Na	  práFca,	  C	  +	  A	  e	  C	  +	  P	  são	  o	  mesmo:	  – C	  +	  A:	  não	  é	  tolerante	  a	  ...
Falácias	  de	  Sistemas	  Distribuídos	  •  L.	  Peter	  Deutsch/Sun	  –	  1991	  
Falácias	  de	  Sistemas	  Distribuídos	  •  L.	  Peter	  Deutsch/Sun	  –	  1991	  – The	  network	  is	  reliable	  
Falácias	  de	  Sistemas	  Distribuídos	  •  L.	  Peter	  Deutsch/Sun	  –	  1991	  – The	  network	  is	  reliable	  – Lat...
Falácias	  de	  Sistemas	  Distribuídos	  •  L.	  Peter	  Deutsch/Sun	  –	  1991	  – The	  network	  is	  reliable	  – Lat...
Falácias	  de	  Sistemas	  Distribuídos	  •  L.	  Peter	  Deutsch/Sun	  –	  1991	  – The	  network	  is	  reliable	  – Lat...
Falácias	  de	  Sistemas	  Distribuídos	  •  L.	  Peter	  Deutsch/Sun	  –	  1991	  – The	  network	  is	  reliable	  – Lat...
Falácias	  de	  Sistemas	  Distribuídos	  •  L.	  Peter	  Deutsch/Sun	  –	  1991	  – The	  network	  is	  reliable	  – Lat...
Falácias	  de	  Sistemas	  Distribuídos	  •  L.	  Peter	  Deutsch/Sun	  –	  1991	  – The	  network	  is	  reliable	  – Lat...
Falácias	  de	  Sistemas	  Distribuídos	  •  L.	  Peter	  Deutsch/Sun	  –	  1991	  – The	  network	  is	  reliable	  – Lat...
Evolução	  Arquitetural	  	  while	  True:	  	   	   	  -­‐	  Ache	  o	  gargalo	  	   	   	  -­‐	  Remova	  o	  gargalo	 ...
Evolução	  Arquitetural	  Load	  
Evolução	  Arquitetural	  Load	  $ kill -STOP …
NÃO	  EXISTEM	  SOLUÇÕES	  PRONTAS	  
Resumo	  	  while	  True:	  	   	   	  -­‐	  Ache	  o	  gargalo	  	   	   	  -­‐	  Remova	  o	  gargalo	  	  •  Escalabili...
Leia!	  
Obrigado!	  	  	  	  	  	  @rlucindo	  	  	  	  	  	  /lucindo	  
Próximos SlideShares
Carregando em…5
×

Escalabilidade e Disponibilidade em Arquiteturas Web

2.052 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
7 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.052
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
30
Comentários
0
Gostaram
7
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Escalabilidade e Disponibilidade em Arquiteturas Web

  1. 1. Escalabilidade  e  Disponibilidade  em  Sistemas  Distribuídos  Renato  Lucindo  DevDay  2013  
  2. 2. Renato  Lucindo            @rlucindo            /lucindo  
  3. 3. Escalabilidade  e  Disponibilidade  em  Arquiteturas  Web  Renato  Lucindo  DevDay  2013  
  4. 4. Internet  
  5. 5. Internet  
  6. 6. Internet  
  7. 7. Internet  
  8. 8. Internet  
  9. 9. Internet  
  10. 10. Internet  Escalabilidade   Disponibilidade  
  11. 11. Escalabilidade  •  Habilidade  do  sistema  de  assimilar  carga  crescente  •  Escalabilidade  VerFcal  – Adicionar  recursos  em  um  único  nó  •  Escalabilidade  Horizontal  – Adicionar  mais  nós  ao  sistema  
  12. 12. Escalabilidade  
  13. 13. Escalabilidade  
  14. 14. Escalabilidade  ParFcionamento  
  15. 15. Escalabilidade  Como  encontrar  os  dados?  
  16. 16. Disponibilidade  •  Habilidade  do  sistema  em  assimilar  falhas  de  soOware  e  hardware  •  Ausência  de  ponto  único  de  falha  
  17. 17. Disponibilidade  
  18. 18. Disponibilidade  
  19. 19. Disponibilidade  Réplicas  
  20. 20. Disponibilidade  Como  manter  consistência?  
  21. 21. Evolução  de  Arquitetura  Internet   Aplicação   Dados  
  22. 22. Evolução  de  Arquitetura  Internet   Aplicação   Dados  Cache  
  23. 23. Evolução  de  Arquitetura  Internet   Aplicação   Master  Cache  Slave  
  24. 24. Evolução  de  Arquitetura  Internet   Aplicação   Master  Cache  Slave  Fila  Aplicação  
  25. 25. Evolução  de  Arquitetura  Internet   Aplicação   Master  1  Cache  Slave  1  Fila  Aplicação  Master  2  Slave  2  
  26. 26. Performance  Cache    Fila    PubSub    …  
  27. 27. Ciclo  de    “desenvolvimento  arquitetural”      while  True:        -­‐  Ache  o  gargalo        -­‐  Remova  o  gargalo  
  28. 28. Escalabilidade  –  Solução  •  ParFcionamento  •  Sharding  – Índice  central  – Hash  – Índice  voláFl  
  29. 29. Escalabilidade  –  Solução  Internet   Aplicação   Shard  2  Shard  3  Shard  1  
  30. 30. Escalabilidade  –  Solução  Internet   Aplicação   Shard  2  3   4  1   2  Shard  3  Shard  1  3   4  1   2  3   4  1   2  
  31. 31. Disponibilidade  –  Solução  •  Réplicas  •  Granularidade  – RAID  – Failover  – Dados  
  32. 32. Disponibilidade  –  Solução  
  33. 33. Disponibilidade  –  Solução  
  34. 34. Disponibilidade  –  Solução  
  35. 35. Disponibilidade  –  Solução  
  36. 36. Problemas  
  37. 37. Teorema  CAP  Fonte:  hbp://blog.nosqlFps.com/2011/04/cap-­‐diagram-­‐for-­‐distribuFon.html  
  38. 38. Teorema  CAP  Fonte:  hbp://blog.beany.co.kr/archives/275  
  39. 39. 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  
  40. 40. Teorema  CAP    C  +  A:  problemas  na  rede  podem  fazer  o  sistema  ficar  indisponível  
  41. 41. Teorema  CAP    C  +  P:  clientes  nem  sempre  conseguem  realizar  operações  
  42. 42. Teorema  CAP    A  +  P:  clientes  podem  ler  dados  inconsistentes  (valores  anFgos  ou  não  terminados)  
  43. 43. 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  
  44. 44. Falácias  de  Sistemas  Distribuídos  •  L.  Peter  Deutsch/Sun  –  1991  
  45. 45. Falácias  de  Sistemas  Distribuídos  •  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  
  46. 46. Falácias  de  Sistemas  Distribuídos  •  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  – Latency  is  zero  
  47. 47. Falácias  de  Sistemas  Distribuídos  •  L.  Peter  Deutsch/Sun  –  1991  – The  network  is  reliable  – Latency  is  zero  – Bandwidth  is  infinite  
  48. 48. 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  
  49. 49. 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  
  50. 50. 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  
  51. 51. 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  
  52. 52. 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  
  53. 53. Evolução  Arquitetural    while  True:        -­‐  Ache  o  gargalo        -­‐  Remova  o  gargalo    •  Logs,  contadores,  gráficos  •  Testes:  load  &  kill  
  54. 54. Evolução  Arquitetural  Load  
  55. 55. Evolução  Arquitetural  Load  $ kill -STOP …
  56. 56. NÃO  EXISTEM  SOLUÇÕES  PRONTAS  
  57. 57. Resumo    while  True:        -­‐  Ache  o  gargalo        -­‐  Remova  o  gargalo    •  Escalabilidade:  ParFção  de  dados  •  Disponibilidade:  Réplicas  •  Performance:  Cache,  Filas,  PubSub,  …  
  58. 58. Leia!  
  59. 59. Obrigado!            @rlucindo            /lucindo  

×