Distribuindo Sistemas
-
Upload
luiz-rocha -
Category
Technology
-
view
265 -
download
0
description
Transcript of Distribuindo Sistemas
![Page 1: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/1.jpg)
Distribuindo SistemasLições (re)aprendidas na construção de um Sistema de Sistemas
1Friday, June 14, 13
![Page 2: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/2.jpg)
br.linkedin.com/lsdrochaLuiz Rocha { github.com/lsdr
twitter.com/lsdr
lsdr.net
2Friday, June 14, 13
![Page 3: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/3.jpg)
Sistemas distribuídos são
legais
3Friday, June 14, 13
![Page 4: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/4.jpg)
p2p
4Friday, June 14, 13
![Page 5: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/5.jpg)
client-server5Friday, June 14, 13
![Page 6: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/6.jpg)
clusteringn-tier
6Friday, June 14, 13
![Page 7: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/7.jpg)
a web
http://www.flickr.com/photos/gwgwijnands/5018129073/sizes/o/in/photostream/7Friday, June 14, 13
![Page 8: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/8.jpg)
• Você está cercado de sistemas distribuídos
• Diversos “estilos” de arquitetura
• Sistema de Sistemas
recapitulando
8Friday, June 14, 13
![Page 9: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/9.jpg)
Fatos Públicos e Notórios
9Friday, June 14, 13
![Page 10: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/10.jpg)
1960 - 1970
10Friday, June 14, 13
![Page 11: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/11.jpg)
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
11Friday, June 14, 13
![Page 12: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/12.jpg)
Concorrência
Desacoplamento de Componentes
Ausência de Memória Compartilhada
Relógios Independentes
Propagação de Falhas
12Friday, June 14, 13
![Page 13: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/13.jpg)
“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
13Friday, June 14, 13
![Page 14: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/14.jpg)
Princípio da Robustez
“Seja conservador no que você faz,
seja liberal com o que aceita dos
outros.”Jon Postel
14Friday, June 14, 13
![Page 15: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/15.jpg)
A rede é confiávelA latência é zero
A banda é infinitaA rede é segura
Topologias não mudamExiste um administrador
Custo de transporte é zeroA rede é homogênea
8Falácias da Computação Distribuída
Peter Deutsch1994
15Friday, June 14, 13
![Page 16: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/16.jpg)
• 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
16Friday, June 14, 13
![Page 17: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/17.jpg)
Sistemas de Sistemas
17Friday, June 14, 13
![Page 18: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/18.jpg)
18Friday, June 14, 13
![Page 19: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/19.jpg)
Outro Publicador?
WTF?
19Friday, June 14, 13
![Page 20: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/20.jpg)
20Friday, June 14, 13
![Page 21: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/21.jpg)
requisitosnegóciospessoas
orçamentosprioridades
culturas
independênciaescalasimplicidademanutenção
21Friday, June 14, 13
![Page 22: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/22.jpg)
Lei de Gall
“Um sistema complexo que funciona invariavelmente evoluiu de um sistema
simples que funcionava.”
22Friday, June 14, 13
![Page 23: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/23.jpg)
CMSCDSWKS
23Friday, June 14, 13
![Page 24: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/24.jpg)
CMScriação/gestão
CDSWKS
24Friday, June 14, 13
![Page 25: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/25.jpg)
CMSCDS
distribuição
WKS25Friday, June 14, 13
![Page 26: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/26.jpg)
CMSCDSWKS
inteligência26Friday, June 14, 13
![Page 27: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/27.jpg)
+40sistemasrecursos, APIs,
serviços, sites, ...
27Friday, June 14, 13
![Page 28: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/28.jpg)
28Friday, June 14, 13
![Page 30: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/30.jpg)
• Componentização e independência das partes
• Construção por composição
• Emerge da necessidade, não de desenho prévio
recapitulando
30Friday, June 14, 13
![Page 31: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/31.jpg)
Lições(re)aprendidas
31Friday, June 14, 13
![Page 32: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/32.jpg)
Não existem exceções para a Lei de Postel
32Friday, June 14, 13
![Page 33: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/33.jpg)
API
case http.status_codewhen 200 faz_alguma_coisawhen 404 mostre_erro
Cliente200 OK
33Friday, June 14, 13
![Page 34: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/34.jpg)
API
case http.status_codewhen 200 faz_alguma_coisawhen 404 mostre_erro
Cliente410 Gone
??34Friday, June 14, 13
![Page 35: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/35.jpg)
API
case http.status_codewhen 200 faz_alguma_coisawhen 404 mostre_erro
Cliente984 Oi?
??35Friday, June 14, 13
![Page 36: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/36.jpg)
for tag in tags: processe_tag(tag)
API Cliente
{ “titulo”: “Distribuindo Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6}
36Friday, June 14, 13
![Page 37: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/37.jpg)
{ “titulo”: “Distribuindo Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6}
for tag in tags: processe_tag(tag)
API Cliente
??37Friday, June 14, 13
![Page 38: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/38.jpg)
API Cliente
{ “titulo”: “Distribuindo Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6}
persistir(doc)
38Friday, June 14, 13
![Page 39: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/39.jpg)
API Cliente
{ “titulo”: “Distribuindo Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6}
??persistir(doc)
39Friday, June 14, 13
![Page 40: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/40.jpg)
Sempre existem ruídos
40Friday, June 14, 13
![Page 41: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/41.jpg)
• 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
41Friday, June 14, 13
![Page 42: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/42.jpg)
Esteja preparado para falhas
42Friday, June 14, 13
![Page 43: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/43.jpg)
43Friday, June 14, 13
![Page 44: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/44.jpg)
??44Friday, June 14, 13
![Page 45: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/45.jpg)
Cache
??45Friday, June 14, 13
![Page 46: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/46.jpg)
Cache não é só para performance
46Friday, June 14, 13
![Page 47: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/47.jpg)
• independência entre cliente e servidor
• cópias locais podem introduzir inconsistências, mas adicionam resiliência
• invalidar cache é insano, deixe expirar
47Friday, June 14, 13
![Page 48: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/48.jpg)
Redes não são mágicas
48Friday, June 14, 13
![Page 49: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/49.jpg)
Toda rede falha
49Friday, June 14, 13
![Page 50: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/50.jpg)
Toda rede oscila
50Friday, June 14, 13
![Page 51: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/51.jpg)
Pacotes se perdem
51Friday, June 14, 13
![Page 52: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/52.jpg)
API Cliente
API Cliente
API Cliente
10 ms
10 seg
timeout?
semresposta?
52Friday, June 14, 13
![Page 53: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/53.jpg)
Se a rede cair, quanto tempo seu cliente permanece vivo?
53Friday, June 14, 13
![Page 54: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/54.jpg)
54Friday, June 14, 13
![Page 55: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/55.jpg)
DDoS auto-inflingido
55Friday, June 14, 13
![Page 56: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/56.jpg)
Graceful Degradation
56Friday, June 14, 13
![Page 57: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/57.jpg)
• 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
57Friday, June 14, 13
![Page 58: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/58.jpg)
Perguntas?
58Friday, June 14, 13
![Page 59: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/59.jpg)
Obrigado!
59Friday, June 14, 13
![Page 60: Distribuindo Sistemas](https://reader033.fdocuments.us/reader033/viewer/2022060112/556a6f0ed8b42ab0468b5190/html5/thumbnails/60.jpg)
http://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods/
http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing
http://en.wikipedia.org/wiki/Gall's_law
http://en.wikipedia.org/wiki/Robustness_principle
http://www.rgoarchitects.com/Files/fallacies.pdf
http://nighthacks.com/roller/jag/resource/Fallacies.html
http://www.artima.com/weblogs/viewpost.jsp?thread=46706
http://www.amundsen.com/blog/archives/1089
http://en.wikipedia.org/wiki/Two_Generals%27_Problem
http://en.wikipedia.org/wiki/Byzantine_fault_tolerance
http://www.amazon.com/Distributed-Systems-Concepts-Design-Edition/dp/0321263545/
60Friday, June 14, 13