Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Brooklyn, NY Small Ruby web tool github.com/luislavena/brooklyn
Slide 2
Slide 2 text
Luis Lavena Work: area17.com Twitter: @luislavena GitHub: luislavena
Slide 3
Slide 3 text
Problem Create minimal service (just JSON) In Ruby Rack compatible
Slide 4
Slide 4 text
Drama Need for speed (fewer allocs/req) Less Ruby magic No backward compatibility Small codebase No code is faster than no code
Slide 5
Slide 5 text
Goal Understand what is going on
Slide 6
Slide 6 text
Reference: Rack class HelloWorld def call(env) [ 200, {"Content-Type" => "text/html"}, ["Hello World!"] ] end end run HelloWorld.new
Slide 7
Slide 7 text
Minimal DSL (Sinatra) require "sinatra/base" class HelloWorld < Sinatra::Base get "/" do "Hello World!" end end run HelloWorld
Slide 8
Slide 8 text
Brooklyn require "brooklyn" class HelloWorld < Brooklyn::App get "/" do "Hello World!" end end run HelloWorld.new
Slide 9
Slide 9 text
Codebase Sinatra: 2035 lines (1738 sloc, 1 file) Brooklyn: 217 lines (165 sloc, 7 files)
Slide 10
Slide 10 text
Performance Rack: 7637 req/sec (1.0x) Sinatra: 2712 req/sec (0.35x) Brooklyn: 5827 req/sec (0.76x) github.com/luislavena/bench-micro
Slide 11
Slide 11 text
Again Rack-powered (use middlewares) No code is faster than no code Less ruby magic Code you can understand (in 10 minutes)
Slide 12
Slide 12 text
Thanks! github.com/luislavena/brooklyn