Palestra arquitetura de processamento em tempo real

1,962 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,962
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Often attributed to Gates in 1981. Gates considered the IBM PC's 640kB program memory a significant breakthrough over 8-bit systems that were typically limited to 64kB, but he has denied making this remark. Also see the 1989 and 1993 rem arks above. I've said some stupid things and some wrong things, but not that. No one involved in computers would ever say that a certain amount of memory is enough for all time … I keep bumping into that silly quotation attributed to me that says 640K of memory is enough. There's never a citation; the quotation just floats like a rumor, repeated again and again.
  • Real Time - A real time system may be one where its application can be considered (within context) to be mission critical . The anti-lock brakes on a car are a simple example of a real-time computing system — the real-time constraint in this system is the time in which the brakes must be released to prevent the wheel from locking. Real-time computations can be said to have failed if they are not completed before their deadline, where their deadline is relative to an event. A real-time deadline must be met, regardless of system load . Hard and Soft - th e goal of a hard real-time system is to ensure that all deadlines are met, but for soft real-time systems the goal becomes meeting a certain subset of deadlines in order to optimize some application specific criteria.
  • CouchDB: B est used: For accumulating, occasionally changing data, on which pre-defined queries are to be run. Places where versioning is important. Redis: Best used: For rapidly changing data with a foreseeable database size (should fit mostly in memory). Mongo: Best used: If you need dynamic queries. If you prefer to define indexes, not map/reduce functions. If you need good performance on a big DB. If you wanted CouchDB, but your data changes too much, filling up disks. Cassandra: Best used: When you write more than you read (logging). If every component of the system must be in Java. ("No one gets fired for choosing Apache's stuff.")
  • Palestra arquitetura de processamento em tempo real

    1. 1. Arquiteturas de Processamento em Tempo Real <ul><li>Campus Party 2011 </li></ul><ul><li>Leandro C. A. Lima </li></ul>
    2. 2. Objetivos <ul><li>Pensar um pouco sobre a evolução dos sistemas </li></ul><ul><li>Refletir sobre os recursos computacionais disponíveis </li></ul><ul><li>Ponderar benefícios em sistemas de resultados em Tempo Real </li></ul><ul><li>Ver um exemplo prático dos pontos abordados. </li></ul>
    3. 3. Cenário Wow! 5Mb!!!
    4. 4. Oh! Really ?! <ul><li>Bill Gates em 1981 </li></ul><ul><ul><li>“640K ought to be enough for anybody” </li></ul></ul>
    5. 5. Cenário <ul><li>&quot;The number of transistors incorporated in a chip will approximately double every 24 months.&quot; — Gordon Moore, Intel Co-Founder </li></ul><ul><li>Intel has kept that pace for over 40 years, providing more functions on a chip at significantly lower cost per function. </li></ul>
    6. 6. Text http://www.mocom2020.com/data/2009/05/computer-power-future.gif
    7. 7. O que mudou no caminho ? <ul><li>Custo computacional caiu consideravelmente </li></ul><ul><li>Memória e discos aumentaram consideravelmente </li></ul><ul><li>Conectividade e banda aumentaram drásticamente </li></ul><ul><li>Usuários que fazer e acontecer “na hora”. </li></ul><ul><li>Computação elástica, nuvem, etc. </li></ul>
    8. 8. Hoje em dia ...
    9. 9. Mobilidade <ul><li>http://twitpic.com/135xa </li></ul><ul><li>http://www.editorsweblog.org/multimedia/2009/01/twitter_first_off_the_mark_with_hudson_p.php </li></ul>
    10. 10. Imagine o mundo assim <ul><li>Seu email enviado hoje, chega só amanhã na caixa postal do destinatário </li></ul><ul><li>Tweets só são agregados e distribuídos uma vez por dia à meia-noite </li></ul><ul><li>Foursquare só mostra amanhã os lugares onde vc esteve hoje </li></ul>
    11. 11. Não faz sentido <ul><li>A informação deve ser entregue na hora </li></ul><ul><li>Os usuários esperam isso, é o natural </li></ul><ul><li>Certamente você já ficou impaciente com um email de confirmação de cadastro que não chega “nunca” </li></ul>
    12. 12. Então, porque ... <ul><li>Seu extrato do banco tem que ficar pronto amanhã ? </li></ul><ul><li>Sua compra de créditos não é processada na hora ? </li></ul><ul><li>Seu WebAnalytics te conta amanhã o que aconteceu hoje ? </li></ul>
    13. 13. Se a informação é <ul><li>Entregue em tempo real (tv, internet, rádio, etc.) </li></ul><ul><li>Disseminada, comentada, criticada dinâmicamente milhares de vezes por segundo </li></ul>
    14. 14. A sua resposta ... <ul><li>Deve ser instantânea </li></ul><ul><li>Informação é poder </li></ul><ul><li>Vantagem competitiva </li></ul><ul><li>Quem sabe antes, resolve antes e sai na frente </li></ul>
    15. 15. Procrastinação <ul><li>Não adianta deixar para depois </li></ul><ul><li>Se pode ser feito “agora”, melhor fazê-lo </li></ul><ul><li>Processos em batch desnecessários </li></ul><ul><li>Analogia com o arquivista </li></ul>
    16. 16. Isto é um arquivo Esse é o arquivista!
    17. 17. Exemplo: <ul><li>Um sistema que notifique o usuário quando seu saldo está zerado </li></ul><ul><li>Intenção é que o cliente compre mais créditos </li></ul><ul><li>Para o usuário é importante manter o serviço ativo </li></ul>
    18. 18. Processo Batch <ul><li>Uma ou duas vezes por dia </li></ul><ul><li>Verifica quem tem Saldo <=0 </li></ul><ul><li>Manda e-mail/SMS para o cliente </li></ul><ul><li>NOT OK! Ritmo de consumo é alto </li></ul><ul><li>A empresa perde receita </li></ul><ul><li>O cliente perde oportunidades </li></ul>
    19. 19. Resultado: <ul><li>Saldo zerado por várias horas </li></ul><ul><li>Batch rodou às 21h, compra às 21:30 </li></ul>
    20. 21. Batchless <ul><li>Serviço de controle de saldo </li></ul><ul><li>Componente intercepta os eventos </li></ul><ul><li>Resultado é saldo <=0 : notifica </li></ul><ul><li>O sistema envia e-mail/SMS na hora que interessa para o cliente </li></ul><ul><li>Potencializa a receita da empresa </li></ul><ul><li>Oportunidades relevantes para o cliente </li></ul>
    21. 22. Resultado: <ul><li>Cliente notificado na hora </li></ul><ul><li>Minutos depois compra efetuada </li></ul>
    22. 24. Real Time <ul><li>Como assim ? </li></ul><ul><li>Definição de Real Time Computing </li></ul><ul><li>Mas é ? Ou não é ? </li></ul><ul><li>Mercado, negócios e os termos: depende do contexto </li></ul>
    23. 25. Mas... Batchless ? <ul><li>É a arte de fazer &quot;agora&quot;, não deixar para depois </li></ul><ul><li>É um convite à racionalização, à busca de alternativas, à entrega mais breve de valor ao cliente </li></ul><ul><li>Não é o “caminho mais fácil” </li></ul>
    24. 26. É, Batchless. <ul><li>Encontre a verdade, não tenha medo </li></ul><ul><li>Problemas acontecem e é melhor que sejam notados o quanto antes (por você, não pelo cliente) </li></ul><ul><li>É seu desafio desenvolver arquiteturas e sistemas robustos e que saibam comunicar seu estado e se recuperar de falhas </li></ul>
    25. 27. Os meios
    26. 28. Cloud Computing <ul><li>Reforça o conceito de commodity computing </li></ul><ul><li>Deploy ágil de infra-estrutura </li></ul><ul><li>Infra-estrutura elástica = Custo variável </li></ul>
    27. 29. Opções <ul><li>Amazon EC2, AWS, Elastic Beanstalk </li></ul><ul><li>Google App Engine </li></ul><ul><li>VPS`s no Brasil - UOLHost, Locaweb, etc. </li></ul>
    28. 30. Nem sempre <ul><li>Ponderar peso dos fatores </li></ul><ul><li>Custo de banda pode ser um problema </li></ul><ul><li>Melhor benefício, pelo menor custo </li></ul><ul><li>Batido, mas é verdade: There’s no silver bullet . </li></ul>
    29. 31. Plataforma <ul><li>Java (Spring, Struts, vRaptor, Grails) </li></ul><ul><li>PHP </li></ul><ul><li>Python (django, etc.) </li></ul><ul><li>Arquitetura é importante </li></ul>
    30. 32. SQL, NoSQL, ? <ul><li>Bancos relacionais </li></ul><ul><li>Schemaless </li></ul><ul><li>O que precisamos em cada projeto ? </li></ul><ul><li>Muitas operações de escrita ? </li></ul><ul><li>Muitas buscas ? </li></ul>
    31. 34. Arquitetura Buffer Buffer DC1 DC2 DC3 Redundância de Data-Centers Escalabilidade Horizontal Alta Disponibilidade Plano B Escalabilidade Horizontal Sharding Redundância Replicação
    32. 35. Case <ul><li>Click analysis - Tempo Real </li></ul><ul><li>Uso em sites e grandes portais </li></ul><ul><li>Picos de 150 req/seg para um único cliente </li></ul><ul><li>Benchmark de 1800 req/seg </li></ul><ul><li>Demanda variável </li></ul>
    33. 36. Ao redor <ul><li>IPTables - parar o estrago o quanto antes </li></ul><ul><li>Websocket - conteúdo sob demanda para o browser </li></ul><ul><li>Cache - Local storage, memcache, etc. </li></ul><ul><li>Javascript - Ajax, e muito mais pela sua imaginação </li></ul>
    34. 37. Bibliografia <ul><li>http://www.intel.com/technology/mooreslaw/ </li></ul><ul><li>http://www.intel.com/about/companyinfo/museum/exhibits/moore.htm </li></ul><ul><li>http://en.wikipedia.org/wiki/Moore's_law </li></ul><ul><li>http://www.mocom2020.com/2009/05/evolution-of-computer-capacity-and-costs/ </li></ul><ul><li>http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis </li></ul><ul><li>http://en.wikipedia.org/wiki/Real-time_computing </li></ul><ul><li>http://en.wikipedia.org/wiki/WebSockets </li></ul><ul><li>http://www.drbyterecuperacaodedados.com.br/hard-disk.htm </li></ul>
    35. 38. Perguntas ? <ul><li>@leandrocl </li></ul><ul><li>[email_address] </li></ul><ul><li>www.leandrolima.eti.br </li></ul>

    ×