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