SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
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

Semelhante a Distribuindo Sistemas

Modelo de Dados: Entendendo e “re-”construindo...
Modelo de Dados: Entendendo e “re-”construindo...Modelo de Dados: Entendendo e “re-”construindo...
Modelo de Dados: Entendendo e “re-”construindo...Wesley Seidel
 
Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013
Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013
Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013PentahoBrasil
 
TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
TDCSP2019  - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...TDCSP2019  - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...Fulvio Mascara
 
Dados Abertos - Conceitos e Primeiros Passos
Dados Abertos - Conceitos e Primeiros PassosDados Abertos - Conceitos e Primeiros Passos
Dados Abertos - Conceitos e Primeiros PassosDiego Rabatone Oliveira
 
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorch
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorchFacebook Developer Circles SP - Redes neurais convolucionais com PyTorch
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorchFulvio Mascara
 
ENGENHARIA DE COMPUTAÇÃO E INTELIGÊNCIA ARTIFICIAL
ENGENHARIA DE COMPUTAÇÃO E INTELIGÊNCIA ARTIFICIALENGENHARIA DE COMPUTAÇÃO E INTELIGÊNCIA ARTIFICIAL
ENGENHARIA DE COMPUTAÇÃO E INTELIGÊNCIA ARTIFICIALActiveEon
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilJose Augusto Carvalho
 
Sistemas de recomendação
Sistemas de recomendaçãoSistemas de recomendação
Sistemas de recomendaçãoLeonardo Marinho
 
Apresentação no I.P.Santarém.
Apresentação no I.P.Santarém.Apresentação no I.P.Santarém.
Apresentação no I.P.Santarém.Carlos J. Costa
 
Big data e o dirieto internacional - SILVA JR., Nelmon J.
Big data e o dirieto internacional - SILVA JR., Nelmon J.Big data e o dirieto internacional - SILVA JR., Nelmon J.
Big data e o dirieto internacional - SILVA JR., Nelmon J.Autônomo
 
I Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
I Oficina Técnica de Publicação de Dados Abertos e Transparência AtivaI Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
I Oficina Técnica de Publicação de Dados Abertos e Transparência Ativanitaibezerra
 

Semelhante a Distribuindo Sistemas (20)

Php do Jeito Certo
Php do Jeito CertoPhp do Jeito Certo
Php do Jeito Certo
 
Modelo de Dados: Entendendo e “re-”construindo...
Modelo de Dados: Entendendo e “re-”construindo...Modelo de Dados: Entendendo e “re-”construindo...
Modelo de Dados: Entendendo e “re-”construindo...
 
Aula 5
Aula 5 Aula 5
Aula 5
 
Integração de Plataformas Institucionais com Repositórios de Dados: Ligação d...
Integração de Plataformas Institucionais com Repositórios de Dados: Ligação d...Integração de Plataformas Institucionais com Repositórios de Dados: Ligação d...
Integração de Plataformas Institucionais com Repositórios de Dados: Ligação d...
 
Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013
Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013
Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013
 
TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
TDCSP2019  - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...TDCSP2019  - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
 
Dados Abertos - Conceitos e Primeiros Passos
Dados Abertos - Conceitos e Primeiros PassosDados Abertos - Conceitos e Primeiros Passos
Dados Abertos - Conceitos e Primeiros Passos
 
Revista programar 15
Revista programar 15Revista programar 15
Revista programar 15
 
Grails latinoware
Grails latinowareGrails latinoware
Grails latinoware
 
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorch
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorchFacebook Developer Circles SP - Redes neurais convolucionais com PyTorch
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorch
 
ENGENHARIA DE COMPUTAÇÃO E INTELIGÊNCIA ARTIFICIAL
ENGENHARIA DE COMPUTAÇÃO E INTELIGÊNCIA ARTIFICIALENGENHARIA DE COMPUTAÇÃO E INTELIGÊNCIA ARTIFICIAL
ENGENHARIA DE COMPUTAÇÃO E INTELIGÊNCIA ARTIFICIAL
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
Data Science For Dummies From a Dummy
Data Science For Dummies From a DummyData Science For Dummies From a Dummy
Data Science For Dummies From a Dummy
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Sistemas de recomendação
Sistemas de recomendaçãoSistemas de recomendação
Sistemas de recomendação
 
Apresentação no I.P.Santarém.
Apresentação no I.P.Santarém.Apresentação no I.P.Santarém.
Apresentação no I.P.Santarém.
 
Big data e o dirieto internacional - SILVA JR., Nelmon J.
Big data e o dirieto internacional - SILVA JR., Nelmon J.Big data e o dirieto internacional - SILVA JR., Nelmon J.
Big data e o dirieto internacional - SILVA JR., Nelmon J.
 
Laudo Forense Digital (Cenário 4)
Laudo Forense Digital  (Cenário 4)Laudo Forense Digital  (Cenário 4)
Laudo Forense Digital (Cenário 4)
 
Revista Programar 01
Revista Programar 01Revista Programar 01
Revista Programar 01
 
I Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
I Oficina Técnica de Publicação de Dados Abertos e Transparência AtivaI Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
I Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
 

Distribuindo Sistemas