Drinking The Erlang Kool-Aid

Posted: May 21st, 2008 | Author: kevin | Filed under: Erlang | View Comments

I’m writing this from the May meeting of raleigh.rb. James Robertson, of Cincom is giving a presentation on the merits of Smalltalk and Seaside. Most of his presentation is the standard Smaltalk boiler-plate stuff I’m already familiar with but there are a few nuggets.

Like scaling Seaside-based apps. When James was using DabbleDB as an example of a large-scale Seaside app someone from the audience asked “how do you scale out a Seaside app?”

The solution James described which, frankly, struck me as Ugly with a capital ‘U’. The gist of their scaling solution is to run many virtual machines — think VM as in VMWare not a Smalltalk VM. Each virtual machine hosts a fixed number of Smalltalk images. Each unique user is routed to their own Smalltalk image. Once assigned, a user sticks to their Smalltalk image via session affinity.

Eww.

I must be drinking the Erlang Kool-Aid because the setup described seems, well, just wrong. What happens if there aren’t enough virtual machines? What happens if there aren’t enough Smalltalk images? What happens if a user blows out the memory footprint for their Smalltalk image?

I’ve been spoiled by Erlang’s seamless distribution mechanisms and OTP’s robust fault-tolerance. For large-scale deployments using anything else seems, well, kind of hackish.


  • I couldn't agree more. I little part of me died when I heard that scaleability "solution" - and I'm not even one of these "gotta scale" bigots.
  • Fine. That *is* a hack that is working for DabbleDB so far. You can also scale (nearly) seamlessly using GemStone/S instead, which makes the entire large cluster look like a single VM with failover, clustering, transactions, and all that ACID-y goodness. (See http://seaside.gemstone.com for more.)
blog comments powered by Disqus