31
Acabe com a concorrência! Use EventMachine! Lucas Prim, SumOne, 2015

Acabe com a concorrência usando event machine

Embed Size (px)

Citation preview

Page 1: Acabe com a concorrência usando event machine

Acabe com a concorrência! Use EventMachine!

🎉 🎉Lucas Prim, SumOne, 2015

Page 2: Acabe com a concorrência usando event machine

Lucas Prim

We’re hiring!

Page 3: Acabe com a concorrência usando event machine

Vou contar a história do Bilgodson

🚶

Page 4: Acabe com a concorrência usando event machine

Ele tinha um problema.😨

Page 5: Acabe com a concorrência usando event machine

Ele era viciado em globo.com🙀

Page 6: Acabe com a concorrência usando event machine

E era viciado em Tweets sobre o Obama

%&

Page 7: Acabe com a concorrência usando event machine

Mas ele não sabia trocar de tabs no navegador

😧

Page 8: Acabe com a concorrência usando event machine

Ele se sentia frustrado:

Poderia estar perdendo a nova headline da globo.com pra postar em

seu grupo de Whatsapp enquanto olhava para os tweets sobre o Obama

😭

Page 9: Acabe com a concorrência usando event machine

A propósito: O Twitter acha que quem aqui é o

Obama?

Page 10: Acabe com a concorrência usando event machine

Bilgodson conheceu um amigo que programava em Ruby e

falou da sua frustração.

🏃*

Page 11: Acabe com a concorrência usando event machine

E o eu resolvi seu amigo resolveu implementar algo

pra ajudar o Bilgodson.

🎉 🎉

🎉

Page 12: Acabe com a concorrência usando event machine

Usando EventMachine!!!!!!!

😱😱 😱 😱

😱

Page 13: Acabe com a concorrência usando event machine

Bora ver a implementação?

😎😎

Page 14: Acabe com a concorrência usando event machine

–EventMachine GitHub Page

“EventMachine is an event-driven I/O and lightweight concurrency library for Ruby.” 🚶

Page 15: Acabe com a concorrência usando event machine

EM: Key Objectives• Extremely high scalability, performance and

stability for the most demanding production environments.

• An API that eliminates the complexities of high-performance threaded network programming, allowing engineers to concentrate on their application logic.😍 😍 😍

Page 16: Acabe com a concorrência usando event machine

EM: Good For• Scalable event-driven servers. Examples: Thin or Goliath.

• Scalable asynchronous clients for various protocols, RESTful APIs and so on. Examples: em-http-request or amqp gem.

• Efficient network proxies with custom logic. Examples: Proxymachine.

• File and network monitoring tools. Examples: eventmachine-tail and logstash.

😃 😃 😃

Page 17: Acabe com a concorrência usando event machine

Projeto: Tuiterator Tabajara

https://github.com/lucasprim/tuiterator-tabajara

👀

Page 18: Acabe com a concorrência usando event machine

Code Design

Runner

Config

Broker

BaseJob GloboJob

SocketJob

StreamJob

😯

Page 19: Acabe com a concorrência usando event machine

Runner

😉

Page 20: Acabe com a concorrência usando event machine

Runner

😉

Page 21: Acabe com a concorrência usando event machine

Broker

😉

Page 22: Acabe com a concorrência usando event machine

😉

Page 23: Acabe com a concorrência usando event machine

SocketJob

😉

Page 24: Acabe com a concorrência usando event machine

SocketJob

😉

Page 25: Acabe com a concorrência usando event machine

StreamJob

😉

Page 26: Acabe com a concorrência usando event machine

ruby application.rb

🎉 🎉

🎉🎉

🎉

🎉

Page 27: Acabe com a concorrência usando event machine

Como o Bilgodson não saberia abrir o console, temos também

uma client-side page conectando no nosso websocket!

😮

Page 28: Acabe com a concorrência usando event machine

Vamos ver se funciona?

😰

Page 29: Acabe com a concorrência usando event machine

Sistema funcionando!

Page 30: Acabe com a concorrência usando event machine

E o Bilgodson finalmente ficou feliz!

Triste ficaram seus contatos do Whatsapp…

**

***

Page 31: Acabe com a concorrência usando event machine

😃brigads😃n!

We’re hiring!

https://github.com/lucasprim/tuiterator-tabajara

www.slideshare.com/lucasprim

[email protected]