distribuindo sistemas

Post on 31-May-2015

265 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Palestra sobre sistemas distribuídos e a experiência com o Alexandria no 2o ENCATEC

TRANSCRIPT

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

1Friday, June 14, 13

br.linkedin.com/lsdrochaLuiz Rocha { github.com/lsdr

twitter.com/lsdr

lsdr.net

2Friday, June 14, 13

Sistemas distribuídos são

legais

3Friday, June 14, 13

p2p

4Friday, June 14, 13

client-server5Friday, June 14, 13

clusteringn-tier

6Friday, June 14, 13

a web

http://www.flickr.com/photos/gwgwijnands/5018129073/sizes/o/in/photostream/7Friday, June 14, 13

• Você está cercado de sistemas distribuídos

• Diversos “estilos” de arquitetura

• Sistema de Sistemas

recapitulando

8Friday, June 14, 13

Fatos Públicos e Notórios

9Friday, June 14, 13

1960 - 1970

10Friday, June 14, 13

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

Concorrência

Desacoplamento de Componentes

Ausência de Memória Compartilhada

Relógios Independentes

Propagação de Falhas

12Friday, June 14, 13

“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

Princípio da Robustez

“Seja conservador no que você faz,

seja liberal com o que aceita dos

outros.”Jon Postel

14Friday, June 14, 13

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

• 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

Sistemas de Sistemas

17Friday, June 14, 13

18Friday, June 14, 13

Outro Publicador?

WTF?

19Friday, June 14, 13

20Friday, June 14, 13

requisitosnegóciospessoas

orçamentosprioridades

culturas

independênciaescalasimplicidademanutenção

21Friday, June 14, 13

Lei de Gall

“Um sistema complexo que funciona invariavelmente evoluiu de um sistema

simples que funcionava.”

22Friday, June 14, 13

CMSCDSWKS

23Friday, June 14, 13

CMScriação/gestão

CDSWKS

24Friday, June 14, 13

CMSCDS

distribuição

WKS25Friday, June 14, 13

CMSCDSWKS

inteligência26Friday, June 14, 13

+40sistemasrecursos, APIs,

serviços, sites, ...

27Friday, June 14, 13

28Friday, June 14, 13

http://j.mp/rest-na-abril29Friday, June 14, 13

• 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

Lições(re)aprendidas

31Friday, June 14, 13

Não existem exceções para a Lei de Postel

32Friday, June 14, 13

API

case http.status_codewhen 200 faz_alguma_coisawhen 404 mostre_erro

Cliente200 OK

33Friday, June 14, 13

API

case http.status_codewhen 200 faz_alguma_coisawhen 404 mostre_erro

Cliente410 Gone

??34Friday, June 14, 13

API

case http.status_codewhen 200 faz_alguma_coisawhen 404 mostre_erro

Cliente984 Oi?

??35Friday, June 14, 13

for tag in tags: processe_tag(tag)

API Cliente

{ “titulo”: “Distribuindo Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6}

36Friday, June 14, 13

{ “titulo”: “Distribuindo Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6}

for tag in tags: processe_tag(tag)

API Cliente

??37Friday, June 14, 13

API Cliente

{ “titulo”: “Distribuindo Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6}

persistir(doc)

38Friday, June 14, 13

API Cliente

{ “titulo”: “Distribuindo Sistemas”, “tags”: [“sistemas”, “diversão”], “nota”: 6}

??persistir(doc)

39Friday, June 14, 13

Sempre existem ruídos

40Friday, June 14, 13

• 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

Esteja preparado para falhas

42Friday, June 14, 13

43Friday, June 14, 13

??44Friday, June 14, 13

Cache

??45Friday, June 14, 13

Cache não é só para performance

46Friday, June 14, 13

• 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

Redes não são mágicas

48Friday, June 14, 13

Toda rede falha

49Friday, June 14, 13

Toda rede oscila

50Friday, June 14, 13

Pacotes se perdem

51Friday, June 14, 13

API Cliente

API Cliente

API Cliente

10 ms

10 seg

timeout?

semresposta?

52Friday, June 14, 13

Se a rede cair, quanto tempo seu cliente permanece vivo?

53Friday, June 14, 13

54Friday, June 14, 13

DDoS auto-inflingido

55Friday, June 14, 13

Graceful Degradation

56Friday, June 14, 13

• 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

Perguntas?

58Friday, June 14, 13

Obrigado!

59Friday, June 14, 13

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

top related