Cloud Computing is Hot at Railsconf
Posted by Andy Singleton on Thu, Jun 12, 2008 @ 09:58 AM
Last weekend I spent 1.5 days at
Railsconf. It was a 6,000 mile round trip squeezed into a weekend
between busy working weeks, and interrupted by the datacenter
explosion that took down our site. So, I didn't get to see many
technical talks. I did get a feeling for what's hot: cloud
computing.
The vendor booths were dominated cloud
computing infrastructure providers. Amazon was there representing
EC2, the key enabling infrastructure. Heroku showed rails
development and deployment on EC2, backed by their recently announced
VC funding. Morph showed a more enterprise-oriented service for
hosting and scaling Rails and java applications on EC2. Rightscale
showed a polished version of their more general-purpose EC2 cluster
management tools, backed by their recent VC investment. Engineyard,
which runs their own full-service, fully staffed virtual server
cloud, was doing a booming business, backed by their recent VC
investment. They talked about releasing some of their management
tools as open source projects. Clearly the Silicon Valley money is
going into infrastructure at this stage. Sun was showing off an
Assembla-like workspace that will showcase their ability to host team
applications on their cloud computing infrastructure. Google was the
big player that wasn't there, as their recently announced Google App
Engine runs only Python and faces off against the Ruby-centric Amazon
cloud.
I'm a convert to cloud infrastructure.
We have started moving our clients onto Amazon servers. Assembla.com
was hurt by our dependence on a more traditional
server topology, and we'll be moving it into a virtual server cloud
over the next month.
There are number of implications for
software developers:
You can get instant staging
servers. Start releasing even faster. We find this very useful, and we will build it into Assembla workspaces.
You can put high-volume fragments
of your app on high-volume hosts. For example, the big selling
point of Google App Engine is that it can handle a very large number
of HTTP requests and survive a slashdotting or a facebook-scale
rampup. If you are considering adding a facebook front end, or a
component like polling chat that is very request intensive, you have
an incentive to throw that onto Google App Engine and link it to the
rest of your systems with web services.
You need to think about file
management. Files in a system like Amazon EC2 don't just live on a
permanent, homogeneous SAN. You need to back them up to a storage
cloud (S3) and restore them when you move to new virtual servers.
Amazon and Google offer BigDB and SimpleDB, which aren't exactly the
same as the databases and persistent stores you are used to.
We have to move beyond HTTP request based
applications to new mesh-computing architectures that send messages
in real time. I saw some interesting projects based on the XMPP
jabber protocol, Erlang, and the eJabberd server, which is a jabber
server written in Erlang. To back up, XMPP is a protocol for sending
messages to jabber instant messengers, but it can also be used to
send messages between servers, or to route messages through a
high-volume cluster to handle Twitter style applications. Erlang is
a computer language that naturally distributes processing to
multiple servers. We are seeing these tools deployed to manage
servers in the cloud. However, we are also seeing applications in
which browser ajax panels connect directly to XMPP servers for
real-time chat or dashboards.
Having a professional-quality
repository with a build, stage, release process is important for
cloud applications, because your team and your code are likely to be
distributed in the cloud just as your servers are.