• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Practical Intro Merb
 

Practical Intro Merb

on

  • 1,452 views

 

Statistics

Views

Total Views
1,452
Views on SlideShare
1,452
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Practical Intro Merb Practical Intro Merb Presentation Transcript

    • Merb, not rails? ! A practical introduction to a new framework.
    • Intro to merb
    • What is merb? • MVC Framework. • Similar to Rails. • Lightweight, extensible, fast.
    • Merb Ideology • Hacker-friendly. • Core should be small, plugins bountiful. • Code should be as simple as possible. • Code should not be “magical.”
    • Merb is like rails • Application structure is very similar • Can use ActiveRecord
    • What does merb-core include? • rack-based request handling • session handling • before / after filters • layouts / views with erb • routing
    • What does merb-core include? • gem-based plugins • mailers • partials • exceptions • generator for controllers, and models (integrates with your chosen ORM).
    • What is elsewhere? • an ORM (can use ActiveRecord, DataMapper, Sequel) • form helpers such as form_for (merb_helper) • ActiveSupport and all those little ruby extensions (extlib?)
    • What is elsewhere? • flash (merb_has_flash and redirect :message) • redirect(quot;/posts/34quot;, :message => { :notice => 'Post updated successfully!' }) • scaffolding • caching (merb-cache) • ajax library (merb_jquery)
    • DataMapper • Thread-safe. • Supports data stores you don’t manage. • Optimizations in eager-loading, lazy-loading, etc.
    • What do we need helper functions for? • Why not just use HTML for templating instead of all those helper functions? • Why not just use JQuery for AJAX instead of all those AJAX helper functions?
    • Thread-safety • Merb is thread-safe now. • Rails will be thread-safe in 2.2. • What does that mean? http:// blog.headius.com/2008/08/qa-what-thread- safe-rails-means.html
    • Considerations • Does your app block? • File uploads • Remote HTTP calls • Facebook app: 1-2s wait time? • Do you have native threads? • JRuby / C ruby differences
    • Instances Required Merb Rails C MRI, one core, no blocking 1 1 C MRI, one core, 80% blocking 1 5 C MRI, two cores, no blocking 2 2 C MRI, two core, 80% blocking 2 10 Jruby, one core, no blocking 1 1 Jruby, one core, 80% blocking 1 5 Jruby, two cores, no blocking 1 2 Jruby, two core, 80% blocking 1 10 Jruby, 16 cores, 80% blocking 1 80
    • Case study
    • The Project • CMS for Faculty. • Keeps track of courses, education, biography info, etc. • Deployed to Tomcat.
    • Requirements • 2500 faculty websites. • 5 concurrent backend users. • 500 users per day on the public facing pages.
    • Can Rails handle that? • One process per file upload? • RAM requirements?
    • Why merb? • Thread-safe. • Low memory footprint. • ???
    • Why JRuby? • Authentication integration using JRadius • Java platform lowers IT stress level.
    • What is development like? • There are no books... yet. • The codebase is changing. • Smaller userbase than rails. • If you are doing anything weird, be prepared to corepatch!
    • Problems • File upload broken in Tomcat deploy. • Partial behavior is totally weird. • Render syntax changed / broke export code. • Activerecord-jdbc mysql quote error. • String concurrency problem??
    • Other Issues • acts_as_list had to be extracted from ActiveRecord files and manually included in init.rb.
    • Post-mortem
    • Speed Comparison • Test with simple merb / rails apps using ActiveRecord • Tests using ab -n 10000 • Testing serially, not concurrently. • Tested on this MacBook Pro
    • C MRI Mongrel • Merb: 170 requests / second • Rails: 32 requests / second
    • JRuby Tomcat • Merb: 69 requests / second • Rails : 121 requests / second
    • JRuby Mongrel • Merb: 104 requests / second • Rails: 29 requests / second
    • JRuby Glassfish • Merb: 106 requests / second • Rails : 125 requests / second
    • What is the deal? • JRuby thread pool, instead of thread instantiation? • Default session handling? • Overspinning threads in app server? • Incorrect JIT compilation?
    • Tomcat Memory Usage • Merb: ~30 MB for all threads • Rails: ~60 MB+ additional memory per process • (Tested on Tomcat)
    • Was it worth it? • Thread-safety is a minor advantage when it comes to file uploads. • Merb uses less memory. • Merb is slower than rails. • Merb may die on string thread-safe bug until JRuby / Merb team fix it.
    • Conclusion
    • Consider merb if... • you’re writing a small tool. • you have limited memory requirements. • you like trying new ORMs. • you need fast performance (and you’ve figured out why it runs so slow on JRuby). • you like hacking about in frameworks.
    • Upcoming • Merb 1.0 is released Oct 11-12. • MerbCamp is in San Diego Oct 11-12. • Merb in Action book (2009?).
    • Available • I’m available for contracts again. Talk to me here, at 408-646-2240 or paulboone@mindbucket.com. • http://www.mindbucket.com/