Merb
then and now
 Ezra Zygmuntowicz
http://engineyard.com
Merb
     Then
Sept 21st 2006
http://pastie.org/14416

   AKA Baby Merb
Merb Now
            • merb-core
• merb-action-args        • merb-haml
• merb-assets             • merb-helpers
• merb-aut...
Core Tenets of Merb
Merb should be fast
(no code is faster then no code)
Merb should be
memory efficient
Merb code should be
as simple as possible
Merb should be
   modular
Merb should be easy to
  grok and extend
 (by hackers for hackers)
Merb should focus on
the application server
  as well as the web
      framework
Merb should get out of
  your way and be
      *flexible*
Most Importantly

Merb should be an
 experimentation
     ground
Why not just work on
       rails?
Monoculture is bad
Everyone wins when
there is competition
Lot’s of merb’s lessons
can be applied back to
          rails
Merb-1.0RC drops
   tomorrow!
 Huge thanks to the
 community and all
   contributors
merb-stack: training wheels
        included
Now with that out of
    the way...
Introducing Nanite
Nanite is a new way of
   building scalable
backends for web apps
Built around RabbitMQ

 • Written in erlang, clusterable, highly
   scalable, fast as hell.
 • AMQP protocol provides many...
<3 RabbitMQ
Nanite agents
consist of multiple Actors
Nanite agents advertise
their services and status
      Feeds#crawl
       advertises:
      /feeds/crawl
Load average is ...
Nanite Mappers
Track nanites and their advertised services and status


   Can do dispatch based on a number of factors

 ...
Multiple Dispatch
      Styles
Least loaded dispatch
and the fitness function
Agents ping the mapper exchange
  every @ping_time seconds.
  Mappers track the state of all
 nanites and remove them from...
Nanite gives us:
• Presence, we know when nanites are ready
  for requests or not.
• Self assembly, nanites can come and g...
File Streaming
Nanite makes it easy to
   scale web app backends

          Git it on GitHub:
http://github.com/ezmobius/nanite
Questions?
Merb + Nanite
Upcoming SlideShare
Loading in...5
×

Merb + Nanite

12,009

Published on

This is my keynote from MerbCamp, where I talk about merb past and present as well as introduce nanite a self assembling cluster of ruby processes

Published in: Technology, Business
1 Comment
16 Likes
Statistics
Notes
No Downloads
Views
Total Views
12,009
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
200
Comments
1
Likes
16
Embeds 0
No embeds

No notes for slide

Merb + Nanite

  1. 1. Merb then and now Ezra Zygmuntowicz http://engineyard.com
  2. 2. Merb Then Sept 21st 2006 http://pastie.org/14416 AKA Baby Merb
  3. 3. Merb Now • merb-core • merb-action-args • merb-haml • merb-assets • merb-helpers • merb-auth • merb-jquery • merb-builder • merb-mailer • merb-cache • merb-parts • merb-gen • merb-slices
  4. 4. Core Tenets of Merb
  5. 5. Merb should be fast (no code is faster then no code)
  6. 6. Merb should be memory efficient
  7. 7. Merb code should be as simple as possible
  8. 8. Merb should be modular
  9. 9. Merb should be easy to grok and extend (by hackers for hackers)
  10. 10. Merb should focus on the application server as well as the web framework
  11. 11. Merb should get out of your way and be *flexible*
  12. 12. Most Importantly Merb should be an experimentation ground
  13. 13. Why not just work on rails?
  14. 14. Monoculture is bad
  15. 15. Everyone wins when there is competition
  16. 16. Lot’s of merb’s lessons can be applied back to rails
  17. 17. Merb-1.0RC drops tomorrow! Huge thanks to the community and all contributors
  18. 18. merb-stack: training wheels included
  19. 19. Now with that out of the way...
  20. 20. Introducing Nanite
  21. 21. Nanite is a new way of building scalable backends for web apps
  22. 22. Built around RabbitMQ • Written in erlang, clusterable, highly scalable, fast as hell. • AMQP protocol provides many nice features • Transient, Persistent and Transactional semantics
  23. 23. <3 RabbitMQ
  24. 24. Nanite agents consist of multiple Actors
  25. 25. Nanite agents advertise their services and status Feeds#crawl advertises: /feeds/crawl Load average is advertised as default status
  26. 26. Nanite Mappers Track nanites and their advertised services and status Can do dispatch based on a number of factors Run inside your Merb or Rails app State of all nanites is replicated across all mappers
  27. 27. Multiple Dispatch Styles
  28. 28. Least loaded dispatch and the fitness function
  29. 29. Agents ping the mapper exchange every @ping_time seconds. Mappers track the state of all nanites and remove them from mapping if they haven’t reported in within a timeout
  30. 30. Nanite gives us: • Presence, we know when nanites are ready for requests or not. • Self assembly, nanites can come and go and can run anywhere with zero configuration in the mappers. • Dispatch based on load or any fitness function that suits your app • Easily take advantage of cloud
  31. 31. File Streaming
  32. 32. Nanite makes it easy to scale web app backends Git it on GitHub: http://github.com/ezmobius/nanite
  33. 33. Questions?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×