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