Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Distribuindo Sistemas

Distribuindo Sistemas

Lições (re)aprendidas na construção de um Sistema de Sistemas

Luiz Rocha

June 14, 2013
Tweet

More Decks by Luiz Rocha

Other Decks in Programming

Transcript

  1. • Você está cercado de sistemas distribuídos • Diversos “estilos”

    de arquitetura • Sistema de Sistemas recapitulando 8 Friday, June 14, 13
  2. clássica “Um sistema distribuído é aquele no qual componentes localizados

    em computadores interligados em rede se comunicam e coordenam suas ações apenas passando mensagens” 1988 - Coulouris, Dollimore, Kindberg 11 Friday, June 14, 13
  3. “Um sistema distribuído é aquele onde uma falha em um

    computador que você nunca imaginou que existisse te impede de usar seu próprio computador.” Leslie Lamport 13 Friday, June 14, 13
  4. Princípio da Robustez “Seja conservador no que você faz, seja

    liberal com o que aceita dos outros.” Jon Postel 14 Friday, June 14, 13
  5. A rede é confiável A latência é zero A banda

    é infinita A rede é segura Topologias não mudam Existe um administrador Custo de transporte é zero A rede é homogênea 8Falácias da Computação Distribuída Peter Deutsch 1994 15 Friday, June 14, 13
  6. • Sistemas distribuídos não são novidade! • Ainda assim, todo

    mundo desliza na hora H • “Aqueles que desconhecem o passado estão fadados à repetí-lo.” recapitulando 16 Friday, June 14, 13
  7. Lei de Gall “Um sistema complexo que funciona invariavelmente evoluiu

    de um sistema simples que funcionava.” 22 Friday, June 14, 13
  8. • Componentização e independência das partes • Construção por composição

    • Emerge da necessidade, não de desenho prévio recapitulando 30 Friday, June 14, 13
  9. for tag in tags: processe_tag(tag) API Cliente { “titulo”: “Distribuindo

    Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6 } 36 Friday, June 14, 13
  10. { “titulo”: “Distribuindo Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6 }

    for tag in tags: processe_tag(tag) API Cliente ?? 37 Friday, June 14, 13
  11. • complicado propagar custo de manutenção para clientes • client-first

    - a exemplo da web • causo: application/xhtml+xml versus text/html para servir XHTML 1.0 41 Friday, June 14, 13
  12. • independência entre cliente e servidor • cópias locais podem

    introduzir inconsistências, mas adicionam resiliência • invalidar cache é insano, deixe expirar 47 Friday, June 14, 13
  13. API Cliente API Cliente API Cliente 10 ms 10 seg

    timeout? sem resposta? 52 Friday, June 14, 13
  14. • considere sempre caso em que a rede falha •

    considere sempre que as mensagens vão crescer de tamanho • não faça requisições em série 57 Friday, June 14, 13