meshu thin & rack

108
Hi!

Upload: guestbac5dc

Post on 14-Jun-2015

1.935 views

Category:

Technology


0 download

DESCRIPTION

Marc-Andre Cournoyer MeshU presentation on Thin & Rack

TRANSCRIPT

Page 1: MeshU Thin & Rack

Hi!

Page 2: MeshU Thin & Rack
Page 3: MeshU Thin & Rack
Page 4: MeshU Thin & Rack
Page 5: MeshU Thin & Rack

beard

Page 6: MeshU Thin & Rack

beard

Page 7: MeshU Thin & Rack

Thin & Rack

Page 8: MeshU Thin & Rack

© jezebel.com - http://www.flickr.com/photos/lamazone/2366616647/

Page 10: MeshU Thin & Rack

Sorry!

Page 11: MeshU Thin & Rack

Story

Page 12: MeshU Thin & Rack
Page 13: MeshU Thin & Rack
Page 14: MeshU Thin & Rack
Page 15: MeshU Thin & Rack
Page 16: MeshU Thin & Rack
Page 17: MeshU Thin & Rack

A random feed feed feed entry

Eating cookies, yummy!

Page 18: MeshU Thin & Rack
Page 19: MeshU Thin & Rack
Page 20: MeshU Thin & Rack
Page 21: MeshU Thin & Rack

Zzzz...

Page 23: MeshU Thin & Rack
Page 24: MeshU Thin & Rack

OMGWTFBBQ!!11!!1

Page 25: MeshU Thin & Rack
Page 26: MeshU Thin & Rack
Page 27: MeshU Thin & Rack
Page 28: MeshU Thin & Rack
Page 29: MeshU Thin & Rack

...

Page 30: MeshU Thin & Rack

69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"

Page 31: MeshU Thin & Rack

A random feed feed feed entry

Eating cookies, yummy!

Page 32: MeshU Thin & Rack

Cache?

Page 33: MeshU Thin & Rack

Cache?

Page 34: MeshU Thin & Rack

random

Page 35: MeshU Thin & Rack

(

Page 36: MeshU Thin & Rack
Page 37: MeshU Thin & Rack
Page 38: MeshU Thin & Rack

Web Server

Page 39: MeshU Thin & Rack

Event Driven Web Server

Page 40: MeshU Thin & Rack
Page 41: MeshU Thin & Rack
Page 42: MeshU Thin & Rack

Process-Based

Page 43: MeshU Thin & Rack

So what?

Page 44: MeshU Thin & Rack

server = TCPServer.new('localhost', 3000)

loop do client = server.accept

puts client.read

client.close

end

Page 45: MeshU Thin & Rack

server = TCPServer.new('localhost', 3000)

loop do client = server.accept

puts client.read

client.close

end

Page 46: MeshU Thin & Rack

ServerClient

Page 47: MeshU Thin & Rack

ServerClient Serverread

Server

Page 48: MeshU Thin & Rack

server = TCPServer.new('localhost', 3000)

loop do client = server.accept

puts client.read

client.close

end

Page 49: MeshU Thin & Rack

server = TCPServer.new('localhost', 3000)

loop do client = server.accept Thread.new do puts client.read

client.close endend

Page 50: MeshU Thin & Rack

ServerClientClientClient

Page 51: MeshU Thin & Rack

ServerClient Thread

Client Thread

Client Thread

Page 52: MeshU Thin & Rack

Time

Page 53: MeshU Thin & Rack

Resources

Page 54: MeshU Thin & Rack

(?)

Page 55: MeshU Thin & Rack

@kernel notify me if readable

Page 56: MeshU Thin & Rack

Non-Blocking Sockets

Page 57: MeshU Thin & Rack

I/O Multiplexing

Page 58: MeshU Thin & Rack

OMGWTFBBQ!!11!!1

Page 59: MeshU Thin & Rack

F******

Page 60: MeshU Thin & Rack

You lost me at I/O

Page 61: MeshU Thin & Rack

Complex

Page 63: MeshU Thin & Rack

Event Driven

Page 64: MeshU Thin & Rack

Event Driven Web Server

Page 65: MeshU Thin & Rack

server = TCPServer.new('localhost', 3000)

server.on_readable do client = server.accept client.on_readable do puts client.read

client.close endend

Page 66: MeshU Thin & Rack

More Connections

Page 67: MeshU Thin & Rack

Less Memory

Page 68: MeshU Thin & Rack

Faster

Page 69: MeshU Thin & Rack
Page 70: MeshU Thin & Rack

(

Page 71: MeshU Thin & Rack

HTTP

Page 72: MeshU Thin & Rack

Simple

Page 73: MeshU Thin & Rack

Flexible

Page 74: MeshU Thin & Rack

Elegant

Page 75: MeshU Thin & Rack

Beautiful

Page 76: MeshU Thin & Rack

and

Page 77: MeshU Thin & Rack

Sexy

Page 78: MeshU Thin & Rack

Sexy

GET /love HTTP/1.1POST /hot HTTP/1.1GET /it_on HTTP/1.1

Page 79: MeshU Thin & Rack

Request Response

Page 80: MeshU Thin & Rack

Request

Page 81: MeshU Thin & Rack

POST /path HTTP/1.1Host: localhostConnection: closeContent-Length: 6

ohaie!

Page 82: MeshU Thin & Rack

Response

Page 83: MeshU Thin & Rack

HTTP/1.1 200 OKContent-Length: 34Content-Type: text/html

<html> <h1>kthxbaie</h1></html>

Page 84: MeshU Thin & Rack
Page 85: MeshU Thin & Rack
Page 86: MeshU Thin & Rack
Page 87: MeshU Thin & Rack

API

Page 88: MeshU Thin & Rack

HTTP

Page 89: MeshU Thin & Rack

WSGI

Page 90: MeshU Thin & Rack

API

Page 91: MeshU Thin & Rack

line1

Page 92: MeshU Thin & Rack

proc { |env| [200, {}, "kthxbai"] }

Page 93: MeshU Thin & Rack

env = { "REQUEST_METHOD" => "POST", "PATH_INFO" => "/", "HTTP_VERSION" => "1.1", "HTTP_HOST" => "localhost", "HTTP_CONNECTION" => "close", "CONTENT_LENGTH" => "6"}

POST / HTTP/1.1Host: localhostConnection: closeContent-Length: 6

ohaie!

Page 94: MeshU Thin & Rack

HTTP/1.1 200 OKContent-Length: 34Content-Type: text/html

<html> <h1>kthxbaie</h1></html>

[ 200, { "Content-Length" => "34", "Content-Type" => "text/html" }, [ "<html>", " <h1>kthxbaie</h1>", "</html>" ]]

Page 95: MeshU Thin & Rack

class MyApp def call(env) [ 200, { 'Content-Type' => 'text/plain' }, "you requested " + env['PATH_INFO'] ] endend

Page 96: MeshU Thin & Rack

Run it

Page 97: MeshU Thin & Rack

my_app.ru

Page 98: MeshU Thin & Rack

run MyApp.new

Page 99: MeshU Thin & Rack

map '/other' do run OtherApp.newend

run MyApp.new

Page 100: MeshU Thin & Rack

use Rack::CommonLogger

map '/other' do run OtherApp.newend

run MyApp.new

Page 101: MeshU Thin & Rack

thin start -R my_app.ru

Page 102: MeshU Thin & Rack

Ebb

Page 103: MeshU Thin & Rack

))

Page 104: MeshU Thin & Rack

A random feed feed feed entry

Eating cookies, yummy!

Page 105: MeshU Thin & Rack

A random feed feed feed entry

Eating cookies, yummy!

Page 106: MeshU Thin & Rack

self.demo! :code

Page 107: MeshU Thin & Rack

Thanks!http://code.macournoyer.com/thin

Page 108: MeshU Thin & Rack

Questions ?