90
Acelerando Sistemas Distribuídos

Acelerando Sistemas Distribuídos

Embed Size (px)

DESCRIPTION

5° Rs On Rails - Acelerando Sistemas Distribuídos

Citation preview

Page 1: Acelerando Sistemas Distribuídos

Acelerando Sistemas

Distribuídos

Page 2: Acelerando Sistemas Distribuídos

@johalfe

@spiceee

Page 3: Acelerando Sistemas Distribuídos
Page 4: Acelerando Sistemas Distribuídos

onrails#

Page 5: Acelerando Sistemas Distribuídos

SOA

Page 6: Acelerando Sistemas Distribuídos
Page 7: Acelerando Sistemas Distribuídos

Sistema Distribuído

Page 8: Acelerando Sistemas Distribuídos
Page 9: Acelerando Sistemas Distribuídos

“Um sistema distribuído consiste em múltiplas aplicações autônomas que interagem para atingir uma meta comum”

Page 10: Acelerando Sistemas Distribuídos

“Um sistema distribuído consiste em múltiplas aplicações autônomas que interagem para atingir uma meta comum”

Wolfgang Emmerich

Page 11: Acelerando Sistemas Distribuídos
Page 12: Acelerando Sistemas Distribuídos

“Afirmar que um sistema distribuído funciona com uma meta comum num ambiente aberto como a Internet é algo difícil.”

Page 13: Acelerando Sistemas Distribuídos

“Afirmar que um sistema distribuído funciona com uma meta comum num ambiente aberto como a Internet é algo difícil.”

Roy Fielding

Page 14: Acelerando Sistemas Distribuídos

Por que sistema distribuído?

Page 15: Acelerando Sistemas Distribuídos

Prós

Page 16: Acelerando Sistemas Distribuídos

Desacoplamento

Page 17: Acelerando Sistemas Distribuídos

Desacoplamentode responsabilidade, de domínio, de

arquitetura, de classes, de código

Page 18: Acelerando Sistemas Distribuídos

Db não é API

Page 19: Acelerando Sistemas Distribuídos

Db não é APIdifícil manter contratos e regras de negócio

Page 20: Acelerando Sistemas Distribuídos

Escalabilidade

Page 21: Acelerando Sistemas Distribuídos

Disponibilidade

Page 22: Acelerando Sistemas Distribuídos

Performance

Page 23: Acelerando Sistemas Distribuídos

Custo

Page 24: Acelerando Sistemas Distribuídos

Contras

Page 25: Acelerando Sistemas Distribuídos

Logs

Page 26: Acelerando Sistemas Distribuídos

Testes

Page 27: Acelerando Sistemas Distribuídos

Deploy

Page 28: Acelerando Sistemas Distribuídos

Granularidade

Page 29: Acelerando Sistemas Distribuídos

Versionamento

Page 30: Acelerando Sistemas Distribuídos

Segurança/Auth

Page 31: Acelerando Sistemas Distribuídos

ENV=development

Page 32: Acelerando Sistemas Distribuídos

Latência

Page 33: Acelerando Sistemas Distribuídos

Complexidade

Page 34: Acelerando Sistemas Distribuídos

Arquitetura distribuída do iba

Page 35: Acelerando Sistemas Distribuídos
Page 36: Acelerando Sistemas Distribuídos

Toolbox

Page 37: Acelerando Sistemas Distribuídos
Page 38: Acelerando Sistemas Distribuídos
Page 39: Acelerando Sistemas Distribuídos
Page 40: Acelerando Sistemas Distribuídos
Page 41: Acelerando Sistemas Distribuídos

+Resque

Page 42: Acelerando Sistemas Distribuídos
Page 43: Acelerando Sistemas Distribuídos
Page 44: Acelerando Sistemas Distribuídos
Page 45: Acelerando Sistemas Distribuídos
Page 46: Acelerando Sistemas Distribuídos

“why so slow?”

Page 47: Acelerando Sistemas Distribuídos

“why so slow?”

The Armin

Page 48: Acelerando Sistemas Distribuídos
Page 49: Acelerando Sistemas Distribuídos

custo do REST

Page 50: Acelerando Sistemas Distribuídos

Granularidade (again)

Page 51: Acelerando Sistemas Distribuídos

Filters, group-bys

Page 52: Acelerando Sistemas Distribuídos

Meta comum?

Page 53: Acelerando Sistemas Distribuídos

“Faster, faster, faster, now!”

Page 54: Acelerando Sistemas Distribuídos

“Faster, faster, faster, now!”

The Armin

Page 55: Acelerando Sistemas Distribuídos

Cacheia tudo!

Page 56: Acelerando Sistemas Distribuídos

“Need more memcache!”

Page 57: Acelerando Sistemas Distribuídos

“Need more memcache!”

The Armin

Page 58: Acelerando Sistemas Distribuídos

Varnish + ETag + fragment caching

Page 59: Acelerando Sistemas Distribuídos

Invalidação de cache = uma das

coisas mais difíceis blah blah

Page 60: Acelerando Sistemas Distribuídos

Difícil customizar por usuário

Page 61: Acelerando Sistemas Distribuídos

Rethink

Page 62: Acelerando Sistemas Distribuídos
Page 63: Acelerando Sistemas Distribuídos

API

Page 64: Acelerando Sistemas Distribuídos

APIEager loading de entidades que compoem

uma unidade de informação

Page 65: Acelerando Sistemas Distribuídos

API

Page 66: Acelerando Sistemas Distribuídos

O cliente escolhe o nível de detalhes que precisa

API

Page 67: Acelerando Sistemas Distribuídos

Um passo para trás: unificar

alguns serviços

Page 68: Acelerando Sistemas Distribuídos

Um passo para trás: unificar

alguns serviçosAnalisamos serviços que poderiam ser

acoplados sem grande impacto à plataforma

Page 69: Acelerando Sistemas Distribuídos

Preconsume

Page 70: Acelerando Sistemas Distribuídos

PreconsumeColocar a informação numa camada de custo

mais baixo de obtenção

Page 71: Acelerando Sistemas Distribuídos

App Server

Page 72: Acelerando Sistemas Distribuídos

App ServerBuscar um app server que se adaptasse

melhor ao nosso stack

Page 73: Acelerando Sistemas Distribuídos

CAB: Cache Against Boiada

Page 74: Acelerando Sistemas Distribuídos

separando o tipo de cache pelo tipo de usuário

CAB: Cache Against Boiada

Page 75: Acelerando Sistemas Distribuídos

“Venha me ler todinha no iba”

Page 76: Acelerando Sistemas Distribuídos

Um só framework

Page 77: Acelerando Sistemas Distribuídos

Mais de um framework num sistema distribuído requer mais manutenção

Um só framework

Page 78: Acelerando Sistemas Distribuídos

Eliminar concorrência entre Back-Office e

User-facing

Page 79: Acelerando Sistemas Distribuídos

Eliminar concorrência entre Back-Office e

User-facing

o usuário querendo comprar um livro não precisa sofrer com um processo de

faturamento

Page 80: Acelerando Sistemas Distribuídos

Async?

Page 81: Acelerando Sistemas Distribuídos

Async?Começar a explorar non-blocking app stacks

Page 82: Acelerando Sistemas Distribuídos
Page 83: Acelerando Sistemas Distribuídos

“Ah! Joga tudo no Redis”

Page 84: Acelerando Sistemas Distribuídos

“Cache vai nos salvar”

Page 85: Acelerando Sistemas Distribuídos

O MongoDB é foda! Mas depois ele cobra

a conta.

Page 86: Acelerando Sistemas Distribuídos

Modelagem errada

Page 87: Acelerando Sistemas Distribuídos

Conclusão

Page 88: Acelerando Sistemas Distribuídos

Perguntas?

Page 89: Acelerando Sistemas Distribuídos

Free Stuff

Page 90: Acelerando Sistemas Distribuídos

Obrigado!