Palestra arquitetura de processamento em tempo real

Preview:

Citation preview

Arquiteturas de Processamento em Tempo Real

Campus Party 2011Leandro C. A. Lima

Objetivos

Pensar um pouco sobre a evolução dos sistemas

Refletir sobre os recursos computacionais disponíveis

Ponderar benefícios em sistemas de resultados em Tempo Real

Ver um exemplo prático dos pontos abordados.

Cenário

Wow! 5Mb!!!

Oh! Really ?!

Bill Gates em 1981

“640K ought to be enough for anybody”

Cenário

"The number of transistors incorporated in a chip will approximately double every 24 months." — Gordon Moore, Intel Co-Founder

Intel has kept that pace for over 40 years, providing more functions on a chip at significantly lower cost per function.

Text

http://www.mocom2020.com/data/2009/05/computer-power-future.gif

O que mudou no caminho ?

Custo computacional caiu consideravelmente

Memória e discos aumentaram consideravelmente

Conectividade e banda aumentaram drásticamente

Usuários que fazer e acontecer “na hora”.

Computação elástica, nuvem, etc.

Hoje em dia ...

Mobilidade

http://twitpic.com/135xa

http://www.editorsweblog.org/multimedia/2009/01/twitter_first_off_the_mark_with_hudson_p.php

Imagine o mundo assim

Seu email enviado hoje, chega só amanhã na caixa postal do destinatário

Tweets só são agregados e distribuídos uma vez por dia à meia-noite

Foursquare só mostra amanhã os lugares onde vc esteve hoje

Não faz sentido

A informação deve ser entregue na hora

Os usuários esperam isso, é o natural

Certamente você já ficou impaciente com um email de confirmação de cadastro que não chega “nunca”

Então, porque ...

Seu extrato do banco tem que ficar pronto amanhã ?

Sua compra de créditos não é processada na hora ?

Seu WebAnalytics te conta amanhã o que aconteceu hoje ?

Se a informação é

Entregue em tempo real (tv, internet, rádio, etc.)

Disseminada, comentada, criticada dinâmicamente milhares de vezes por segundo

A sua resposta ...

Deve ser instantânea

Informação é poder

Vantagem competitiva

Quem sabe antes, resolve antes e sai na frente

Procrastinação

Não adianta deixar para depois

Se pode ser feito “agora”, melhor fazê-lo

Processos em batch desnecessários

Analogia com o arquivista

Isto é um arquivo

Esse é o arquivista!

Exemplo:

Um sistema que notifique o usuário quando seu saldo está zerado

Intenção é que o cliente compre mais créditos

Para o usuário é importante manter o serviço ativo

Processo Batch

Uma ou duas vezes por dia

Verifica quem tem Saldo <=0

Manda e-mail/SMS para o cliente

NOT OK! Ritmo de consumo é alto

A empresa perde receita

O cliente perde oportunidades

Resultado:

Saldo zerado por várias horas

Batch rodou às 21h, compra às 21:30

Batchless

Serviço de controle de saldo

Componente intercepta os eventos

Resultado é saldo <=0 : notifica

O sistema envia e-mail/SMS na hora que interessa para o cliente

Potencializa a receita da empresa

Oportunidades relevantes para o cliente

Resultado:

Cliente notificado na hora

Minutos depois compra efetuada

Real Time

Como assim ?

Definição de Real Time Computing

Mas é ? Ou não é ?

Mercado, negócios e os termos: depende do contexto

Mas... Batchless ?

É a arte de fazer "agora", não deixar para depois

É um convite à racionalização, à busca de alternativas, à entrega mais breve de valor ao cliente

Não é o “caminho mais fácil”

É, Batchless.

Encontre a verdade, não tenha medo

Problemas acontecem e é melhor que sejam notados o quanto antes (por você, não pelo cliente)

É seu desafio desenvolver arquiteturas e sistemas robustos e que saibam comunicar seu estado e se recuperar de falhas

Os meios

Cloud Computing

Reforça o conceito de commodity computing

Deploy ágil de infra-estrutura

Infra-estrutura elástica = Custo variável

Opções

Amazon EC2, AWS, Elastic Beanstalk

Google App Engine

VPS`s no Brasil - UOLHost, Locaweb, etc.

Nem sempre

Ponderar peso dos fatores

Custo de banda pode ser um problema

Melhor benefício, pelo menor custo

Batido, mas é verdade: There’s no silver bullet.

Plataforma

Java (Spring, Struts, vRaptor, Grails)

PHP

Python (django, etc.)

Arquitetura é importante

SQL, NoSQL, ?

Bancos relacionais

Schemaless

O que precisamos em cada projeto ?

Muitas operações de escrita ?

Muitas buscas ?

Arquitetura

BBufuffeferr

BBufuffeferr

BBufuffeferr

BBufuffeferr

DC1 DC2 DC3

Redundância de

Data-Centers

Redundância de

Data-Centers

Escalabilidade Horizontal

Escalabilidade Horizontal

Alta Disponibilidad

e

Alta Disponibilidad

e

Plano BPlano B

Escalabilidade Horizontal

Sharding

Escalabilidade Horizontal

Sharding

RedundânciaReplicação

RedundânciaReplicação

Case

Click analysis - Tempo Real

Uso em sites e grandes portais

Picos de 150 req/seg para um único cliente

Benchmark de 1800 req/seg

Demanda variável

Ao redor

IPTables - parar o estrago o quanto antes

Websocket - conteúdo sob demanda para o browser

Cache - Local storage, memcache, etc.

Javascript - Ajax, e muito mais pela sua imaginação

Bibliografia

http://www.intel.com/technology/mooreslaw/

http://www.intel.com/about/companyinfo/museum/exhibits/moore.htm

http://en.wikipedia.org/wiki/Moore's_law

http://www.mocom2020.com/2009/05/evolution-of-computer-capacity-and-costs/

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

http://en.wikipedia.org/wiki/Real-time_computing

http://en.wikipedia.org/wiki/WebSockets

http://www.drbyterecuperacaodedados.com.br/hard-disk.htm

Perguntas ?

@leandrocl

leandrocl@gmail.com

www.leandrolima.eti.br

Recommended