Escalabilidade e Disponibilidade em Arquiteturas Web

Post on 06-Jun-2015

1.305 views 1 download

Transcript of Escalabilidade e Disponibilidade em Arquiteturas Web

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  – Adicionar  recursos  em  um  único  nó  

•  Escalabilidade  Horizontal  – Adicionar  mais  nós  ao  sistema  

Escalabilidade  

Escalabilidade  

Escalabilidade  

ParFcionamento  

Escalabilidade  

Como  encontrar  os  dados?  

Disponibilidade  

•  Habilidade  do  sistema  em  assimilar  falhas  de  soOware  e  hardware  

•  Ausência  de  ponto  único  de  falha  

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  

Slave  2  

Performance  

Cache    Fila    

PubSub    …  

Ciclo  de    “desenvolvimento  arquitetural”  

   while  True:        -­‐  Ache  o  gargalo        -­‐  Remova  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   2  

3   4  

1   2  

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  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  

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  terminados)  

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  

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  – Latency  is  zero  

Falácias  de  Sistemas  Distribuídos  

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

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  

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  

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  

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  

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  

Evolução  Arquitetural  

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

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

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  

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

Leia!  

Obrigado!    

       @rlucindo    

       /lucindo