SlideShare uma empresa Scribd logo
1 de 112
Baixar para ler offline
Cache, Concorrência e
Sincronização na Web.
twitter: @thiagorondon - email: thiago@aware.com.br
Cache, Concorrência e
Sincronização na Web.
twitter: @thiagorondon - email: thiago@aware.com.br
Agenda - Programação
     assíncrona
O Jantar dos filósofos.
Semaphoros e Mutex
Supervisor.
Hierarquia
Deadlock e
 Livelock
   Impasse
Starvation
   já era...
Fumantes de cigarro.
Conjunto de
semaphoros.
O documento ‘It’s the
   latency, stupid’.
Criar mais bandwidth é
       trivial.
Com uma latência
ruim, você esta perdido.
Dispositivos para
consumidores são
    péssimos.
Qual a diferença entre
o boing 737 e o 747 ?
1965, 1971 e 1996.
trade-off.
armas ou manteiga.
Limitações
Disponibilidade,
Escalabilidade e
 Estabilidade.
escalabilidade.
horizontal vs vertical ?
perfomance vs
escalabilidade.
Latencia vs Throughput.
disponibilidade
particionamento
fail-over
replicação
estabilidade.
use timeouts.
Use um disjuntor e não
     um fusível.
Qual o problema de um
        crash ?
Estratégia para o
     restart.
Supervisor Hierachies
Falhe rápido.
transações.
Atomicidade.
Consistência.
Isolamento.
Durabilidade.
ACID.
Disponibilidade vs.
  Consistência.
Expectativa : “Most of
 the data, most of the
        time”.
Teorema de CAP.
Consistência,
 Disponibilidade ou
tolerante a falhas de
 particionamento ?
Primeira opção:
 Consistência
Segunda opção:
Disponibilidade
Não há terceira opção
      na web.
Ok, existe. Mas, não é
    trivial, pois ...
O que sacrificar ?
Consistência ou
Disponibilidade ?
ACID vs/e BASE.
Lei de Moore
Uma profecia que virou uma meta
 da industria de processadores.
Nós desenvolvemos
    software.
Lei de Amdahl
  Fração de melhoria ;
  Ganho de execução.

 SpeedUp = T(1) / T(N)
Um projeto novo.
Estabilidade e features.
gerenciamento.
Eventualmente
consistente ou
 disponível ?
Tomando decisões.
Servidores respondem.
Aplicativos geram
    resposta.
Estes dois objetivos são
 ortogonais !
Antes, as
recomendações.
Valores Imutáveis.
Fluxo mental e o fluxo
    implementado.
blocking!
Quando eu tenho um
     estado ?
Estados mutáveis !
Sincronização
Compartilhar estados ?
Concorrência
Você esta perto de um
deadlock ou problemas
   de escalabilidade.
Precisamos de uma
 abstração melhor.
Assíncrona e
não-blocking.
Mensagens
Baseado em eventos
Modelo Actor
MapReduce
STM
AMQP
Mas você ainda precisa
 de objetos mutáveis.
“Eureka, Eureka” por
    Arquimedes.
Sua informação velha,
  pode ser a nova.
Cache
Local temporário.
Diferencie as respostas
      e os dados.
Normalização
/Minifier/
O fluxo das
requisições.
Cache, Concorrência e
Sincronização na   Web.
Protocolo HTTP
Métodos
Stateless
Requisição e Reposta


  [             ]
Requisição e Reposta
        ( Intermediadores )
      Proxy             Tunnel

  [                              ]
              Gateway
Recursos

                        Construção


Aplicações

                        Dados
Requisição e Reposta

GET /workshop                 GET /workshop
Host: sao-paulo.pm.org        Host: sao-paulo.pm.org




  200 OK                        200 OK
  Cache-Control: max-age=60     Cache-Control: max-age=60
Requisição e Reposta
(30 segundos depois)




GET /workshop
Host: sao-paulo.pm.org




   200 OK
   Cache-Control: max-age=30
Requisição e Reposta
(1 minuto)




GET /workshop                  GET /workshop
Host: sao-paulo.pm.org         Host: sao-paulo.pm.org




   200 OK                        200 OK
   Cache-Control: max-age=60     Cache-Control: max-age=60
Arquitetura REST.
Estudo de caso.

Editores Servidor
                                         Recursos
Usuários
            construção   cache   dados
Meus projetos
Referencias
Edsger Dijkstra
Andrew Stuart
 Tanenbaum
Donald Knuth
Roy Fielding
Perl Mongers

• Grupos para discutir sobre tudo o que
  você quiser... Filosofia, Política, Astronomia
  e etc.
• Eventos anuais.YAPC::Brasil, Equinócio,
  workshops, encontros técnicos, ... .
• http://sao-paulo.pm.org/
FIM

• http://twitter.com/thiagorondon
• http://slideshare.net/thiagorondon
• http://github.com/maluco
• http://www.maluco.com.br/

Mais conteúdo relacionado

Semelhante a Cache, Concorrência e Sincronização.

HTTP, Requisição e Resposta
HTTP, Requisição e RespostaHTTP, Requisição e Resposta
HTTP, Requisição e RespostaThiago Rondon
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Fabiano Weimar
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentasluanrjesus
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuningDell Technologies
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsJorge Walendowsky
 
Cache em aplicações web
Cache em aplicações webCache em aplicações web
Cache em aplicações webJean Carlo Emer
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxDell Technologies
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosCaio Cutrim
 
Planejamento de Capacidade - Técnicas e Ferramentas
Planejamento de Capacidade - Técnicas e FerramentasPlanejamento de Capacidade - Técnicas e Ferramentas
Planejamento de Capacidade - Técnicas e FerramentasRodrigo Campos
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosCaio Cutrim
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
[DataFest-2017] Apache Cassandra Para Sistemas de Alto DesempenhoEiti Kimura
 

Semelhante a Cache, Concorrência e Sincronização. (20)

HTTP, Requisição e Resposta
HTTP, Requisição e RespostaHTTP, Requisição e Resposta
HTTP, Requisição e Resposta
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentas
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuning
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.js
 
Criando Aplicações Resilientes
Criando Aplicações ResilientesCriando Aplicações Resilientes
Criando Aplicações Resilientes
 
Cache em aplicações web
Cache em aplicações webCache em aplicações web
Cache em aplicações web
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Bigadata casese opotunidades
Bigadata casese opotunidadesBigadata casese opotunidades
Bigadata casese opotunidades
 
Plone na nuvem
Plone na nuvemPlone na nuvem
Plone na nuvem
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredos
 
Planejamento de Capacidade - Técnicas e Ferramentas
Planejamento de Capacidade - Técnicas e FerramentasPlanejamento de Capacidade - Técnicas e Ferramentas
Planejamento de Capacidade - Técnicas e Ferramentas
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem Segredos
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Processamento em Big Data
Processamento em Big DataProcessamento em Big Data
Processamento em Big Data
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 

Mais de Thiago Rondon

AppCívico - Tecnologias cívicas estão impactando políticas públicas
AppCívico - Tecnologias cívicas estão impactando políticas públicasAppCívico - Tecnologias cívicas estão impactando políticas públicas
AppCívico - Tecnologias cívicas estão impactando políticas públicasThiago Rondon
 
Democracia nas eleições
Democracia nas eleiçõesDemocracia nas eleições
Democracia nas eleiçõesThiago Rondon
 
IOTA - Open Indicators of Transparency and Accountability
IOTA - Open Indicators of Transparency and AccountabilityIOTA - Open Indicators of Transparency and Accountability
IOTA - Open Indicators of Transparency and AccountabilityThiago Rondon
 
Dados abertos é inovação
Dados abertos é inovaçãoDados abertos é inovação
Dados abertos é inovaçãoThiago Rondon
 
YAPC::2014 Accountability
YAPC::2014 AccountabilityYAPC::2014 Accountability
YAPC::2014 AccountabilityThiago Rondon
 
Provisionamento orquestrado nas nuvens com Juju
Provisionamento orquestrado nas nuvens com JujuProvisionamento orquestrado nas nuvens com Juju
Provisionamento orquestrado nas nuvens com JujuThiago Rondon
 
introducción a la Red Latinoamericana
introducción a la Red Latinoamericanaintroducción a la Red Latinoamericana
introducción a la Red LatinoamericanaThiago Rondon
 
TDC 2012 - You, Me and Opendata
TDC 2012 - You, Me and Opendata TDC 2012 - You, Me and Opendata
TDC 2012 - You, Me and Opendata Thiago Rondon
 
You, me and Opendata - v2
You, me and Opendata - v2You, me and Opendata - v2
You, me and Opendata - v2Thiago Rondon
 
OGP: You, Me and Opendata
OGP: You, Me and OpendataOGP: You, Me and Opendata
OGP: You, Me and OpendataThiago Rondon
 
Statim, time series interface for Perl.
Statim, time series interface for Perl.Statim, time series interface for Perl.
Statim, time series interface for Perl.Thiago Rondon
 
Opendata - Não posso fazer tijolos sem barro !
Opendata - Não posso fazer tijolos sem barro !Opendata - Não posso fazer tijolos sem barro !
Opendata - Não posso fazer tijolos sem barro !Thiago Rondon
 
Dados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governoDados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governoThiago Rondon
 
Para onde foi o meu dinheiro ?
Para onde foi o meu dinheiro ?Para onde foi o meu dinheiro ?
Para onde foi o meu dinheiro ?Thiago Rondon
 
Datos abiertos, Gobierno y la sociedad en conjunto.
Datos abiertos, Gobierno y la sociedad en conjunto.Datos abiertos, Gobierno y la sociedad en conjunto.
Datos abiertos, Gobierno y la sociedad en conjunto.Thiago Rondon
 

Mais de Thiago Rondon (20)

AppCívico - Tecnologias cívicas estão impactando políticas públicas
AppCívico - Tecnologias cívicas estão impactando políticas públicasAppCívico - Tecnologias cívicas estão impactando políticas públicas
AppCívico - Tecnologias cívicas estão impactando políticas públicas
 
Democracia nas eleições
Democracia nas eleiçõesDemocracia nas eleições
Democracia nas eleições
 
IOTA - Open Indicators of Transparency and Accountability
IOTA - Open Indicators of Transparency and AccountabilityIOTA - Open Indicators of Transparency and Accountability
IOTA - Open Indicators of Transparency and Accountability
 
Dados abertos é inovação
Dados abertos é inovaçãoDados abertos é inovação
Dados abertos é inovação
 
YAPC::2014 Accountability
YAPC::2014 AccountabilityYAPC::2014 Accountability
YAPC::2014 Accountability
 
IOTA
IOTAIOTA
IOTA
 
Docker
DockerDocker
Docker
 
Auto Scaling AWS
Auto Scaling AWSAuto Scaling AWS
Auto Scaling AWS
 
Provisionamento orquestrado nas nuvens com Juju
Provisionamento orquestrado nas nuvens com JujuProvisionamento orquestrado nas nuvens com Juju
Provisionamento orquestrado nas nuvens com Juju
 
introducción a la Red Latinoamericana
introducción a la Red Latinoamericanaintroducción a la Red Latinoamericana
introducción a la Red Latinoamericana
 
Iota
IotaIota
Iota
 
TDC 2012 - You, Me and Opendata
TDC 2012 - You, Me and Opendata TDC 2012 - You, Me and Opendata
TDC 2012 - You, Me and Opendata
 
You, me and Opendata - v2
You, me and Opendata - v2You, me and Opendata - v2
You, me and Opendata - v2
 
OGP: You, Me and Opendata
OGP: You, Me and OpendataOGP: You, Me and Opendata
OGP: You, Me and Opendata
 
Onde Acontece ?
Onde Acontece ?Onde Acontece ?
Onde Acontece ?
 
Statim, time series interface for Perl.
Statim, time series interface for Perl.Statim, time series interface for Perl.
Statim, time series interface for Perl.
 
Opendata - Não posso fazer tijolos sem barro !
Opendata - Não posso fazer tijolos sem barro !Opendata - Não posso fazer tijolos sem barro !
Opendata - Não posso fazer tijolos sem barro !
 
Dados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governoDados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governo
 
Para onde foi o meu dinheiro ?
Para onde foi o meu dinheiro ?Para onde foi o meu dinheiro ?
Para onde foi o meu dinheiro ?
 
Datos abiertos, Gobierno y la sociedad en conjunto.
Datos abiertos, Gobierno y la sociedad en conjunto.Datos abiertos, Gobierno y la sociedad en conjunto.
Datos abiertos, Gobierno y la sociedad en conjunto.
 

Cache, Concorrência e Sincronização.