Archive for January, 2009

Engine Yard Solo Goes Live!

By Leah Silber | January 28th, 2009 at 9:01AM

Earlier this month, Engine Yard announced two key components of our strategy for the Cloud. The announcement went over really well, and we’ve been getting lots of great feedback from customers and community members—thanks!

<p>Today though, things get even better. Today, Engine Yard Solo is available for purchase!</p>


<p>In case you missed the details, here&#8217;s a little recap:</p>


<p>For two years Engine Yard has specialized in Ruby and Rails application deployment by providing premium deployment services for over 400 customers on in-house hardware. <a href="http://www.engineyard.com/products/cloud">Engine Yard Solo</a> now extends this expertise to companies of all sizes by offering their services for deploying applications on the Amazon Web Services cloud.</p>


<p>The new Solo offering is built on Engine Yard&#8217;s battle-hardened experience hosting hundreds of applications on the Company&#8217;s own internal cloud. By coupling Solo with Amazon <span class="caps">EC2</span>, Engine Yard has lowered the price point for customers that want an entry-level service plan without sacrificing the tried-and-true Engine Yard stack.</p>


<p>With Solo, customers benefit from:</p>


<ul>
<li>Engine Yard&#8217;s years of experience deploying Ruby on Rails applications</li>
    <li>Amazon&#8217;s elastic cloud infrastructure</li>
    <li>Seamless automated deployment tailored to running Ruby applications</li>
</ul>


<p>Recently, a Solo Beta Tester launched his production application, <a href="http://hashtags.org/" rel="nofollow">Hashtags.org</a> on Solo, and things have been going great!</p>


<p>To share a few Twitter comments:</p>


<blockquote>
    <p>&#8220;Engine Yard Solo is impressive. It makes putting a rails app in production dead simple.&#8221;&#8212;Nadim</p>
</blockquote>


<blockquote>
    <p>&#8220;Engine Yard Solo just automated me out of a gig and that is freaking <span class="caps">AWESOME</span>.&#8221;&#8212;John M. Carlin</p>
</blockquote>


<p>The feedback has been great, the community has been great, and the future is looking bright. Thanks for being a part of it!</p>
Share this post:
  • email
  • Digg
  • del.icio.us
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter
  • Google Bookmarks
  • Facebook
  • LinkedIn
Popularity: unranked |
Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...

Rails 3 Status Update — A Fresh Look at Callbacks

By Yehuda Katz | January 16th, 2009 at 1:01AM

After I finished the first stage of the ActionView refactor I was working on (I’m currently working on some small issues with Josh and getting ready to merge it into the official Rails3 branch), I decided to take a fresh look at the performance numbers. As expected, by initial refactor did not really improve performance (it wasn’t intended to — I mainly just moved things around and cleaned up the code path), but one thing that stuck out at me was how expensive the callback system is.

<p>This is the case in both Rails and Merb, although Merb&#8217;s smaller callback feature set makes it somewhat faster than Rails&#8217; at present (but not significantly so; both systems use the same basic approach). So I decided to spend some time today trying to make the callbacks faster. The first thing I noticed was that the ActiveSupport callbacks are fairly limited (for instance, missing around filters), and that ActionPack uses a small part of the ActiveSupport system and then layers on scads of additional functionality.</p>


<p>After spending a few hours trying to improve the performance of the callbacks, I remembered that Carl had considered an interesting approach for the Merb callbacks that involved dispensing with iteration in favor of a single compiled method that inlined the filters. In his original experiments (which supported before, after, and around filters, but not conditions), he was able to make filters run about an order of magnitude faster than Merb&#8217;s system.</p>


<p>Effectively, the approach boils down to:</p>

before_filter :foo
after_filter :bar
around_filter :baz

def _run_hookz foo baz do yield baz end end 

This completely removes the need for iteration at runtime, and compiles down the hooks into a single, speedy method. What complicated matters a bit was:

<ul>
<li>Rails&#8217; support for conditions (also supported in Merb, but not in Carl&#8217;s original prototype)</li>
    <li>Rails&#8217; support for various filter types, including strings (which get evalled), procs, blocks, and arbitrary objects</li>
</ul>


<p>After playing around a bit, I managed to support conditional filters as well as all the supported Rails filter types using the speedier callback system.I compared the ActionPack filtering system to the old ActiveSupport callbacks to the new callbacks. According to my benchmarks, the new system is 15-20x faster than the old one. Here are the actual benchmarks for 100,000 iterations (2 before filters, 1 after filter with a proc conditions).</p>

JRuby Results |

actionpack 2.406 | old 1.798 | new 0.089 |

  MRI (1.8) Results |

actionpack 4.190 | old 3.063 | new 0.276 |

  MRI (1.9) Results |

actionpack 2.617 | old 2.137 | new 0.157 |

Keep in mind that I haven’t retrofitted the ActionPack filters to use the new callback system yet; I had to make ActiveSupport::Callbacks support around_filters first, but that there shouldn’t be any reason it won’t work. Also, adding around_filter support to ActiveSupport::Callbacks means that Test::Unit will now have around filters for free as part of the retrofit (this should affect ActiveRecord as well, for anyone who needs around filters in AR’s hooks).

<p><strong>Also, and this is a big caveat</strong>: this is most certainly not an optimization that is likely to significantly help most apps where the overhead is in database access or rendering. However, one of my personal goals for the work I&#8217;m doing is to reduce the need for things like Rack Metal by reducing the overhead of rendering a request through the full stack. Filters are used throughout the render path and we shockingly using 10-20% of the 4ms a render :text =&gt; &#8220;Hello world&#8221; was taking up. I was surprised that the action itself was only about 7% of the default render path.</p>


<p>So again, shaving off under 1ms is not likely to help many apps, but it is a step in the direction of making it possible to build high-performance APIs and service tiers on top of the full Rails request cycle. You can follow along this callback work on my <a href='http://github.com/wycats/rails/tree/optimize_callbacks'>optimize_callbacks</a> branch.</p>


<p>P.S. Merb 1.0.8 should be released tomorrow. It&#8217;ll include a bunch of pending fixes (including a fix for PIDs being overwritten in production when using merb -i)</p>
Share this post:
  • email
  • Digg
  • del.icio.us
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter
  • Google Bookmarks
  • Facebook
  • LinkedIn
Popularity: unranked |
Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...

Updated Public Erlang AMI

By Kevin Smith | January 15th, 2009 at 8:01PM

I spent a bit of time this evening cleaning house on my S3 bucket and EC2 AMIs. I’ve de-published and removed my existing Erlang AMI. The Erlang build was quite old and not many people were using it.

<p>I&#8217;ve put together a new <span class="caps">AMI</span> using Fedora 8 and the latest Erlang build (R12B-5 as of this writing). Erlang was built with <code>--enable-threads, --enable-smp, --enable-hipe</code>, and <code>--enable-kernel-poll</code>. <span class="caps">SSL</span> support is included, too.</p>


<p>It&#8217;s a 32 bit image for now, but if there&#8217;s interest I&#8217;ll build a 64 bit version of it too.</p>


<p>The <span class="caps">AMI</span> id of the image is <code>ami-e8ba5d81</code>. Searches for &#8220;hypotheticalabs&#8221; in Amazon&#8217;s <span class="caps">AWS</span> console should find it, too.</p>


<p>I&#8217;ll augment this image a bit with mochiweb and a few other handy libs. Looks for updates on that front soonish.</p>


<p><em>Note: Yes, Erlang was built from source. The Fedora &#8212; and Ubuntu for that matter &#8212; build of Erlang is quite old. I have a violent allergy to RPMs and didn&#8217;t feel like spending the hours it&#8217;d take to package things up properly.</em></p>
Share this post:
  • email
  • Digg
  • del.icio.us
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter
  • Google Bookmarks
  • Facebook
  • LinkedIn
Popularity: unranked |
Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...

Chef

By Ezra Zygmuntowicz | January 15th, 2009 at 2:01PM

Yesterday we announced Engine Yard Solo which is our new Engine Yard on AWS platform. If you haven’t yet watched the screencast then you should check it out:

<ul>
<li><a href='http://www.engineyard.com/solo'>Engine Yard Solo Screencast</a></li>
</ul>


<p>I&#8217;m using a really sweet configuration management engine called Chef that is being open sourced today. My good friends at <a href='http://www.opscode.com/'>OpsCode</a> are responsible for the project.</p>


<p>If you have ever used or thought about using a system like Puppet then you owe it to your self to give Chef a try. Chef is a state based, declarative configuration management engine. You define recipes of how you want your system to look and then Chef makes it so.</p>


<p>The big advantage Chef has over Puppet is that the codebase is 1/10th the size and it is pure ruby, including the recipe <span class="caps">DSL</span>. Puppet&#8217;s biggest flaw is its configuration language that is not quite ruby and not quite turing complete. So you end up wrestling with it to get it to do anything.</p>


<p>Chef is just pure ruby so anything you can do in ruby you can do in your recipes. It also uses a simple merb-core/couchdb server for centralized storage of node configs and each server you manage gets an openid for identity.</p>


<p>If you have a hand in building or configuring any servers, you need to learn Chef <strong>now</strong>.</p>


<p>You need two repos to get Chef running, chef and ohai:</p>


<ul>
<li><a href='http://github.com/opscode/chef'>chef</a></li>
    <li><a href='http://github.com/opscode/ohai'>ohai</a></li>
</ul>


<p>Ohai is a gem that interrogates your system and gathers facts about it. Chef is the gem that runs your recipes and actually does the work of configuring the system.</p>


<p>Here are the docs to get started with:</p>


<ul>
<li><a href='http://wiki.opscode.com/display/chef/Home'>Chef Wiki</a></li>
</ul>


<p>I believe that Chef will play a very important role in the future of building and managing servers in the ruby community as well as anyone else who needs repeatable server build outs.</p>


<p>We will expose a way to have your own custom Chef recipes applied via our management app so that anything we haven&#8217;t already written recipes for you can write yourself and get applied as part of a server build.</p>
Share this post:
  • email
  • Digg
  • del.icio.us
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter
  • Google Bookmarks
  • Facebook
  • LinkedIn
Popularity: unranked |
Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...

Upcoming Shows; Sponsored by Engine Yard!

By Leah Silber | January 15th, 2009 at 3:01AM

Here at Engine Yard we love to get out and meet the people; to talk to the customers, developers and entrepreneurs making the business and technical decisions about the web. As such, we travel a lot, attending Ruby and Rails shows around the world.

We’d love to meet you! Details on our full calendar can be found here, but here’s a peek into some of our favorite shows coming up:

acts_as_conference

February 6-7, Orlando, Florida

This will be our second year sponsoring acts_as_conference, and we’re excited to be back! This year’s roster is impressive, with talks by Engine Yard friends like Lew Cirne of New Relic and Jim Weirich of EdgeCase. Registration is open now, and seats are going fast!

Scotland on Rails

March 26-28, Edinburgh, Scotland

This will also be our second time sponsoring Scotland on Rails, and we’re just as excited! The show received widespread praise last year as one of the best regional Ruby shows around, and knowing the hard work that goes into it, it looks like it’s poised for another smashing success!

The speakers come from all around the world, including Jim Remsik of our friend and partner Hashrocket. Registration just opened, and the early-bird discount is available until February 8th!

Engine Yard’s Yehuda Katz will be presenting at both events, talking about developments related to the upcoming Rails/Merb merger, i.e. Rails3, and he’d love to meet you.

Feel free to email the events team if you need more information, or want to talk to us about _your_ event.

Share this post:
  • email
  • Digg
  • del.icio.us
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter
  • Google Bookmarks
  • Facebook
  • LinkedIn
Popularity: unranked |
Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...