Insufficient documentation on how to performance-tune a legacy Ruby on Rails stack led to a highly publicized complaint from one of the largest customers of Salesforce.com's Heroku PaaS (platform-as-a-service), Heroku has acknowledged.
As a result, Heroku pledged to improve documentation for its service.
"We failed to explain how our product works. We failed to help our customers scale. We failed our community at large," wrote Heroku General Manager Oren Teich, in a blog post. "I want to personally apologize, and commit to resolving this issue."
As organizations become more comfortable with cloud services and use them for ever-larger workloads, cloud providers such as Heroku must continue to learn how to accommodate these large jobs, as well as support their customers with new issues in scalability that may arise.
In a widely read blog item posted earlier this weekcharged that Heroku's Ruby on Rails service had degraded since the PaaS moved to a new setup for load balancing incoming requests among multiple servers.
Heroku previously used an intelligent load-balancing algorithm that would distribute incoming requests evenly among the servers (or "dynos" in Heroku parlance), but had changed to an algorithm that distributes work randomly to different dynos. Because the workload is not distributed as efficiently, Rap Genius would have to procure 50 times as many servers to get the same performance as it did with the previous load balancing scheme, Somers estimated.
As a result, Somers concluded that "Heroku is not appropriate for any Rails app that's more than a toy."
On Friday, Teich responded, admitting that the Ruby on Rails software stack that Rap Genius used, called Bamboo, has suffered in performance.
"In short, Ruby on Rails apps running on Bamboo have experienced a degradation in performance over the past [three] years as we have scaled," he wrote.
Although not mentioned by Teich, Heroku has since moved to a newer default Ruby on Rails stack, Cedar. According to at least one other Heroku customer, the service has been encouraging its customers to move from Bamboo to Cedar.
Heroku plans to post an in-depth technical review that caused the issues with Bamboo, as well as improve documentation for the service.
For others, Rap Genius' experience served as a lesson in picking the right cloud service provider.
"I still think Heroku is by far one of the easiest PaaS providers to get started with, but it is clear that if you are a Rails shop with heavy traffic, you'll want to go towards a more [infrastucture-as-a-servce]-like offering as you'll have more control over scalability and cost," wrote Andrew Glover, chief technology officer of App47, a mobile enterprise application intelligence service provider, in an email.
Others agreed that Rap Genius should have found another service to better fit its needs. Industry observer Matt Asay, a vice president of corporate strategy database provider 10Gen, criticized how Rap Genius handled its complaint.
"Seriously, what was RapGenius' point? Did fuming and shaking fists solve its problem? There's an easy solution: pay for a different service," wrote Asay in a Twitter message.
Heroku is one of a number of platform-as-service providers -- others include Google, CloudBees and Engine Yard -- that offer a hosted software stack for running online applications. The company first offered Ruby on Rails as a hosted service, but has expanded to offer other technologies as well, including Node.js, Clojure, Java, Python, and Scala.