SlideShare uma empresa Scribd logo
Distribuindo Sistemas
Lições (re)aprendidas na construção de um Sistema de Sistemas
1Friday, June 14, 13
br.linkedin.com/lsdrocha
Luiz 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-server
5Friday, June 14, 13
clustering
n-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á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
8
Falácias da
Computação
Distribuída
Peter Deutsch
1994
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
requisitos
negócios
pessoas
orçamentos
prioridades
culturas
independência
escala
simplicidade
manutençã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
CMS
CDS
WKS
23Friday, June 14, 13
CMS
criação/gestão
CDS
WKS
24Friday, June 14, 13
CMS
CDS
distribuição
WKS
25Friday, June 14, 13
CMS
CDS
WKS
inteligência
26Friday, June 14, 13
+40
sistemas
recursos, APIs,
serviços, sites, ...
27Friday, June 14, 13
28Friday, June 14, 13
http://j.mp/rest-na-abril
29Friday, 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_code
when 200
faz_alguma_coisa
when 404
mostre_erro
Cliente
200 OK
33Friday, June 14, 13
API
case http.status_code
when 200
faz_alguma_coisa
when 404
mostre_erro
Cliente
410 Gone
?? 34Friday, June 14, 13
API
case http.status_code
when 200
faz_alguma_coisa
when 404
mostre_erro
Cliente
984 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?
sem
resposta?
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

Mais conteúdo relacionado

PDF
Viva para amar o aprendizado
PDF
Pensamento Computacional
PDF
ElasticSearch
PDF
Introdução a Sistemas Distribuídos
PDF
Aula 2 introdução a sistemas distribuídos
PPT
Aula 1 introdução à engenharia de software1 (1)
PPT
Sistemas operacionais sistemas-distribuidos
PDF
Introducao.2s
Viva para amar o aprendizado
Pensamento Computacional
ElasticSearch
Introdução a Sistemas Distribuídos
Aula 2 introdução a sistemas distribuídos
Aula 1 introdução à engenharia de software1 (1)
Sistemas operacionais sistemas-distribuidos
Introducao.2s

Semelhante a Distribuindo Sistemas (20)

KEY
Sistemas para o Mundo Real
ODP
Introdução à Engenharia de Software (parte II)
PDF
Modelos e Padrões de Engenharia de Software
PPTX
Engenharia de Software Reuso Engenharia de Software Reuso Engenharia de Softw...
PDF
Arquitetura Funcional em Microservices
PPTX
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
PDF
Sistemas Distribuídos - Aula 4
PDF
Aula Introdução a Sistemas Distribuídos.pdf
PPTX
Criando Framework - Conceitos, Estratégias e Dicas
PPTX
aula projeto e des sistemas 22 03 2021.pptx
PDF
Sistemas Distribuídos - Aula 1
PPT
Aula1 introducao engsw
PDF
Apresentação da disciplina de Introdução à Informática
PDF
Padroes De Projeto
PDF
Aula - Introdução a Engenharia de Software
PPTX
P2_Aula1-convertido.pptx
PPTX
Aula07 - Sistemas Distribuídos - Aula de Revisão da NP1
PDF
Introdução à Engenharia de Software
PPTX
Reuso de software
PPTX
Resumo capítulo 1 livro Engenharia de Software Moderna
Sistemas para o Mundo Real
Introdução à Engenharia de Software (parte II)
Modelos e Padrões de Engenharia de Software
Engenharia de Software Reuso Engenharia de Software Reuso Engenharia de Softw...
Arquitetura Funcional em Microservices
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Sistemas Distribuídos - Aula 4
Aula Introdução a Sistemas Distribuídos.pdf
Criando Framework - Conceitos, Estratégias e Dicas
aula projeto e des sistemas 22 03 2021.pptx
Sistemas Distribuídos - Aula 1
Aula1 introducao engsw
Apresentação da disciplina de Introdução à Informática
Padroes De Projeto
Aula - Introdução a Engenharia de Software
P2_Aula1-convertido.pptx
Aula07 - Sistemas Distribuídos - Aula de Revisão da NP1
Introdução à Engenharia de Software
Reuso de software
Resumo capítulo 1 livro Engenharia de Software Moderna
Anúncio

Último (8)

PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Mecânico de Manutenção de Equipamentos.pptx
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Manejo integrado de pragas na cultura do algodão
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Mecânico de Manutenção de Equipamentos.pptx
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Viasol Energia Solar -Soluções para geração e economia de energia
Arquitetura de computadores - Memórias Secundárias
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Manejo integrado de pragas na cultura do algodão
Anúncio

Distribuindo Sistemas