There’s a lot of muscle under the hood of the Engine Yard AppCloud and xCloud offerings providing Rails/Ruby automation, management and support. I am ecstatic to announce that a critical layer of our automation – fog, the Ruby library for cloud computing and provisioning, along with its creator Wesley Beary – are being promoted to the Engine Yard Open Source Program! The momentum of cloud computing will only grow in 2011 and we feel it is critical that Wesley helps fog and the Ruby cloud community lead the way.
The buzzword “cloud” is regularly misused, often to the point that it’s almost synonymous with the base concept of the “Internet” itself. A good definition is “on-demand self-service Internet infrastructure where you use only what you need, all managed by a browser, application or API.” ISPs and new entrants are clamoring to rebrand themselves as “cloud providers” or to create new cloud infrastructure; and so the fight for mind share and market share begins. Arguably Amazon’s AWS cloud suite is both the early pioneer, and the current front runner.
The fog library is an abstraction layer to provision resources (for example, EC2 computing or S3 storage resources) across the growing array of cloud providers. Most recently, our community’s own gemcutter rubygems service was reimplemented to use fog to control AWS S3 for storing rubygems.
Wesley started the fog project before he joined Engine Yard. After he came on-board, fog was adopted to replace the hard-wired AWS-specific portions of Engine Yard AppCloud. He’s been working on fog in his spare time. The cloud space is quickly evolving and gaining momentum across a growing number of competing vendors and stakeholders. At Engine Yard, we feel it’s critical to invest in ensuring the continued success of fog as a strong, active community project.
Fog isn’t just a library for huge platforms such as Engine Yard’s AppCloud or xCloud. It is the ideal library to use instead of pulling out your favourite AWS-based library. Using fog instead of an AWS-specific library means your code is deliberately independent of any one infrastructure vendor from day one.
For example, to get started using fog:
sudo gem install fog
Now just type “fog” to try it out. You can be confident that fog should let you know what you need to do. Here is an example of server creation for Amazon EC2:
>> server = AWS.servers.create
ArgumentError: image_id is required for this operation
>> server = AWS.servers.create(:image_id => 'ami-5ee70037')
>> server.destroy # cleanup after yourself or regret $$$ it
Currently fog includes support for a vast and increasing array of providers including: AWS, Terremark, Rackspace, Go Grid, vCloud, Blue Box, Slicehost, Linode and New Servers.
Beyond supporting the vast and increasing array of cloud providers there are some interesting cross-language library issues to be investigated, such as continuous testing against the APIs and cloud community events.
Fog recently achieved 500 watchers on GitHub and has been a top Trending Repo on several occasions.
Engine Yard AppCloud and xCloud now automate and support almost 1500 customers. Our support for fog and Ruby cloud libraries is to ensure that applications and platforms can take advantage of the growing availability of cloud infrastructure around the world.