Acelerando Sistemas Distribuídos

Preview:

DESCRIPTION

5° Rs On Rails - Acelerando Sistemas Distribuídos

Citation preview

Acelerando Sistemas

Distribuídos

@johalfe

@spiceee

onrails#

SOA

Sistema Distribuído

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

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

Wolfgang Emmerich

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

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

Roy Fielding

Por que sistema distribuído?

Prós

Desacoplamento

Desacoplamentode responsabilidade, de domínio, de

arquitetura, de classes, de código

Db não é API

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

Escalabilidade

Disponibilidade

Performance

Custo

Contras

Logs

Testes

Deploy

Granularidade

Versionamento

Segurança/Auth

ENV=development

Latência

Complexidade

Arquitetura distribuída do iba

Toolbox

+Resque

“why so slow?”

“why so slow?”

The Armin

custo do REST

Granularidade (again)

Filters, group-bys

Meta comum?

“Faster, faster, faster, now!”

“Faster, faster, faster, now!”

The Armin

Cacheia tudo!

“Need more memcache!”

“Need more memcache!”

The Armin

Varnish + ETag + fragment caching

Invalidação de cache = uma das

coisas mais difíceis blah blah

Difícil customizar por usuário

Rethink

API

APIEager loading de entidades que compoem

uma unidade de informação

API

O cliente escolhe o nível de detalhes que precisa

API

Um passo para trás: unificar

alguns serviços

Um passo para trás: unificar

alguns serviçosAnalisamos serviços que poderiam ser

acoplados sem grande impacto à plataforma

Preconsume

PreconsumeColocar a informação numa camada de custo

mais baixo de obtenção

App Server

App ServerBuscar um app server que se adaptasse

melhor ao nosso stack

CAB: Cache Against Boiada

separando o tipo de cache pelo tipo de usuário

CAB: Cache Against Boiada

“Venha me ler todinha no iba”

Um só framework

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

Um só framework

Eliminar concorrência entre Back-Office e

User-facing

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

Async?

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

“Ah! Joga tudo no Redis”

“Cache vai nos salvar”

O MongoDB é foda! Mas depois ele cobra

a conta.

Modelagem errada

Conclusão

Perguntas?

Free Stuff

Obrigado!

Recommended