Cache, Concorrência e Sincronização.

112
Cache, Concorrência e Sincronização na Web. twitter: @thiagorondon - email: [email protected]

description

 

Transcript of Cache, Concorrência e Sincronização.

Page 1: Cache, Concorrência e Sincronização.

Cache, Concorrência e Sincronização na Web.

twitter: @thiagorondon - email: [email protected]

Page 2: Cache, Concorrência e Sincronização.

Cache, Concorrência e Sincronização na Web.

twitter: @thiagorondon - email: [email protected]

Page 3: Cache, Concorrência e Sincronização.

Agenda - Programação assíncrona

Page 4: Cache, Concorrência e Sincronização.

O Jantar dos filósofos.

Page 5: Cache, Concorrência e Sincronização.
Page 6: Cache, Concorrência e Sincronização.

Semaphoros e Mutex

Page 7: Cache, Concorrência e Sincronização.

Supervisor.

Page 8: Cache, Concorrência e Sincronização.

Hierarquia

Page 9: Cache, Concorrência e Sincronização.

Deadlock e Livelock

Impasse

Page 10: Cache, Concorrência e Sincronização.

Starvationjá era...

Page 11: Cache, Concorrência e Sincronização.
Page 12: Cache, Concorrência e Sincronização.

Fumantes de cigarro.

Page 13: Cache, Concorrência e Sincronização.

Conjunto de semaphoros.

Page 14: Cache, Concorrência e Sincronização.

O documento ‘It’s the latency, stupid’.

Page 15: Cache, Concorrência e Sincronização.

Criar mais bandwidth é trivial.

Page 16: Cache, Concorrência e Sincronização.

Com uma latência ruim, você esta perdido.

Page 17: Cache, Concorrência e Sincronização.

Dispositivos para consumidores são

péssimos.

Page 18: Cache, Concorrência e Sincronização.

Qual a diferença entre o boing 737 e o 747 ?

Page 19: Cache, Concorrência e Sincronização.

1965, 1971 e 1996.

Page 20: Cache, Concorrência e Sincronização.

trade-off.

Page 21: Cache, Concorrência e Sincronização.

armas ou manteiga.

Page 22: Cache, Concorrência e Sincronização.

Limitações

Page 23: Cache, Concorrência e Sincronização.

Disponibilidade, Escalabilidade e

Estabilidade.

Page 24: Cache, Concorrência e Sincronização.

escalabilidade.

Page 25: Cache, Concorrência e Sincronização.

horizontal vs vertical ?

Page 26: Cache, Concorrência e Sincronização.

perfomance vs escalabilidade.

Page 27: Cache, Concorrência e Sincronização.

Latencia vs Throughput.

Page 28: Cache, Concorrência e Sincronização.

disponibilidade

Page 29: Cache, Concorrência e Sincronização.

particionamento

Page 30: Cache, Concorrência e Sincronização.

fail-over

Page 31: Cache, Concorrência e Sincronização.

replicação

Page 32: Cache, Concorrência e Sincronização.

estabilidade.

Page 33: Cache, Concorrência e Sincronização.

use timeouts.

Page 34: Cache, Concorrência e Sincronização.

Use um disjuntor e não um fusível.

Page 35: Cache, Concorrência e Sincronização.

Qual o problema de um crash ?

Page 36: Cache, Concorrência e Sincronização.

Estratégia para o restart.

Page 37: Cache, Concorrência e Sincronização.

Supervisor Hierachies

Page 38: Cache, Concorrência e Sincronização.

Falhe rápido.

Page 39: Cache, Concorrência e Sincronização.

transações.

Page 40: Cache, Concorrência e Sincronização.

Atomicidade.

Page 41: Cache, Concorrência e Sincronização.

Consistência.

Page 42: Cache, Concorrência e Sincronização.

Isolamento.

Page 43: Cache, Concorrência e Sincronização.

Durabilidade.

Page 44: Cache, Concorrência e Sincronização.

ACID.

Page 45: Cache, Concorrência e Sincronização.

Disponibilidade vs. Consistência.

Page 46: Cache, Concorrência e Sincronização.

Expectativa : “Most of the data, most of the

time”.

Page 47: Cache, Concorrência e Sincronização.

Teorema de CAP.

Page 48: Cache, Concorrência e Sincronização.

Consistência, Disponibilidade ou

tolerante a falhas de particionamento ?

Page 49: Cache, Concorrência e Sincronização.

Primeira opção: Consistência

Page 50: Cache, Concorrência e Sincronização.

Segunda opção: Disponibilidade

Page 51: Cache, Concorrência e Sincronização.

Não há terceira opçãona web.

Page 52: Cache, Concorrência e Sincronização.

Ok, existe. Mas, não é trivial, pois ...

Page 53: Cache, Concorrência e Sincronização.

O que sacrificar ?Consistência ou Disponibilidade ?

Page 54: Cache, Concorrência e Sincronização.

ACID vs/e BASE.

Page 55: Cache, Concorrência e Sincronização.

Lei de MooreUma profecia que virou uma meta

da industria de processadores.

Page 56: Cache, Concorrência e Sincronização.

Nós desenvolvemos software.

Page 57: Cache, Concorrência e Sincronização.

Lei de AmdahlFração de melhoria ; Ganho de execução.

SpeedUp = T(1) / T(N)

Page 58: Cache, Concorrência e Sincronização.

Um projeto novo.

Page 59: Cache, Concorrência e Sincronização.

Estabilidade e features.

Page 60: Cache, Concorrência e Sincronização.

gerenciamento.

Page 61: Cache, Concorrência e Sincronização.

Eventualmente consistente ou

disponível ?

Page 62: Cache, Concorrência e Sincronização.

Tomando decisões.

Page 63: Cache, Concorrência e Sincronização.

Servidores respondem.

Page 64: Cache, Concorrência e Sincronização.

Aplicativos geram resposta.

Page 65: Cache, Concorrência e Sincronização.

Estes dois objetivos são

ortogonais !

Page 66: Cache, Concorrência e Sincronização.

Antes, as recomendações.

Page 67: Cache, Concorrência e Sincronização.

Valores Imutáveis.

Page 68: Cache, Concorrência e Sincronização.

Fluxo mental e o fluxo implementado.

Page 69: Cache, Concorrência e Sincronização.

blocking!

Page 70: Cache, Concorrência e Sincronização.

Quando eu tenho um estado ?

Page 71: Cache, Concorrência e Sincronização.

Estados mutáveis !

Page 72: Cache, Concorrência e Sincronização.

Sincronização

Page 73: Cache, Concorrência e Sincronização.

Compartilhar estados ?

Page 74: Cache, Concorrência e Sincronização.

Concorrência

Page 75: Cache, Concorrência e Sincronização.

Você esta perto de um deadlock ou problemas

de escalabilidade.

Page 76: Cache, Concorrência e Sincronização.

Precisamos de uma abstração melhor.

Page 77: Cache, Concorrência e Sincronização.

Assíncrona e não-blocking.

Page 78: Cache, Concorrência e Sincronização.

Mensagens

Page 79: Cache, Concorrência e Sincronização.

Baseado em eventos

Page 80: Cache, Concorrência e Sincronização.

Modelo Actor

Page 81: Cache, Concorrência e Sincronização.

MapReduce

Page 82: Cache, Concorrência e Sincronização.

STM

Page 83: Cache, Concorrência e Sincronização.

AMQP

Page 84: Cache, Concorrência e Sincronização.

Mas você ainda precisa de objetos mutáveis.

Page 85: Cache, Concorrência e Sincronização.

“Eureka, Eureka” por Arquimedes.

Page 86: Cache, Concorrência e Sincronização.

Sua informação velha, pode ser a nova.

Page 87: Cache, Concorrência e Sincronização.

Cache

Page 88: Cache, Concorrência e Sincronização.

Local temporário.

Page 89: Cache, Concorrência e Sincronização.

Diferencie as respostas e os dados.

Page 90: Cache, Concorrência e Sincronização.

Normalização

Page 91: Cache, Concorrência e Sincronização.

/Minifier/

Page 92: Cache, Concorrência e Sincronização.

O fluxo das requisições.

Page 93: Cache, Concorrência e Sincronização.

Cache, Concorrência e

Sincronização na Web.

Page 94: Cache, Concorrência e Sincronização.

Protocolo HTTP

Page 95: Cache, Concorrência e Sincronização.

Métodos

Page 96: Cache, Concorrência e Sincronização.

Stateless

Page 97: Cache, Concorrência e Sincronização.

Requisição e Reposta

[ ]

Page 98: Cache, Concorrência e Sincronização.

Requisição e Reposta

[ ]Proxy

Gateway

Tunnel

( Intermediadores )

Page 99: Cache, Concorrência e Sincronização.

Recursos

Construção

Dados

Aplicações

Page 100: Cache, Concorrência e Sincronização.

GET /workshopHost: sao-paulo.pm.org

GET /workshopHost: sao-paulo.pm.org

200 OKCache-Control: max-age=60

200 OKCache-Control: max-age=60

Requisição e Reposta

Page 101: Cache, Concorrência e Sincronização.

GET /workshopHost: sao-paulo.pm.org

200 OKCache-Control: max-age=30

(30 segundos depois)

Requisição e Reposta

Page 102: Cache, Concorrência e Sincronização.

GET /workshopHost: sao-paulo.pm.org

GET /workshopHost: sao-paulo.pm.org

200 OKCache-Control: max-age=60

200 OKCache-Control: max-age=60

(1 minuto)

Requisição e Reposta

Page 103: Cache, Concorrência e Sincronização.

Arquitetura REST.

Page 104: Cache, Concorrência e Sincronização.

Estudo de caso.

Editores

Usuários

Servidor

dadosconstruçãocache

Recursos

Page 105: Cache, Concorrência e Sincronização.

Meus projetos

Page 106: Cache, Concorrência e Sincronização.

Referencias

Page 107: Cache, Concorrência e Sincronização.

Edsger Dijkstra

Page 108: Cache, Concorrência e Sincronização.

Andrew Stuart Tanenbaum

Page 109: Cache, Concorrência e Sincronização.

Donald Knuth

Page 110: Cache, Concorrência e Sincronização.

Roy Fielding

Page 111: Cache, Concorrência e Sincronização.

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/

Page 112: Cache, Concorrência e Sincronização.

FIM

• http://twitter.com/thiagorondon

• http://slideshare.net/thiagorondon

• http://github.com/maluco

• http://www.maluco.com.br/