InfoQ

News

Nanite: A Self Assembling Cluster of Ruby Processes

Posted by Mirko Stocker on Nov 26, 2008

Community
Ruby
Topics
Messaging ,
Cloud Computing
Tags
XMPP ,
Erlang

Nanite is Ezra Zygmuntowicz's newest addition to Engine Yard's cloud computing strategy: a "self assembling cluster of ruby processes" to form the backend of a highly scalable web application (see Ezra's announcement).

Nanite consists of two parts: agents and mappers. Agents implement the functionality of your application and are managed by mappers, the control nodes of your system. Agents periodically advertise their status and (per default) their average load to the mappers, so the mappers can distribute work to the least loaded agent. For more information and examples, take a look at the Nanite Readme file.

Nanite is built around RabbitMQ, "a complete and highly reliable Enterprise Messaging system" built with Erlang. According to a comment in his blog, it should also work with any other AMQP compatible messaging middleware.

InfoQ: Ezra, are you using Nanite at Engine Yard? 

Yes Nanite is used as the backend for our new engine yard as a service platform. It is used for autoscaling EC2 instances as your traffic grows as well as being a core part of our service exposed to users so they can use Nanite agents as part of their apps with zero fuss.

InfoQ: Do you see other applications for Nanite besides the web?

Nanite has many applications outside of the web I think. Anytime you need to control a set of resources across a number of servers from Ruby then Nanite is a good fit.

InfoQ: We talked about Vertebra—the next generation cloud computing platform—a few months back, what's the relation between Nanite and Vertebra?

Nanite and Vertebra will eventually be able to work together via the rabbitmq/xmpp bridge. Nanite is more for scaling individual applications in a cloud environment. Vertebra is more for connecting multiple disparate systems together where each agent in the system could be on a different customers servers.
Rabbitmq's security model is based on vhosts, so anything in a vhost can talk to anything else in the same vhost. This works well for having a vhost per application space and scaling apps that way. Nanite is also higher performance messaging for application workloads where users are waiting on results. Vertebra is about coordinating multiple machines while keeping them secure form each other.

Nanite is available on GitHub, and Vertebra should be released as open source before Christmas, around December 15.

No comments

Watch Thread Reply

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.