If you’ve read many of my posts, especially those from my previous blog (The .NET Addict), then you’re well aware of how much I like Heroku. These guys are geniuses and the service they offer is absolutely top notch. And, by top notch, I mean, I haven’t found anyone who can offer better. People use Heroku as their go-to source for web apps and web services when they don’t want to front the infrastructure in-house. Their tiered, free-to-start pricing is absolutely ideal for independent developers who have an idea they want to build but it requires some cloud presence.
For example, think of all those iOS developers building iOS apps that need some kind of server presence or back-end to make their app work. Unless you’re a company, you probably can’t afford to stick a box in a datacenter and fire it up and do the maintenance yourself. You might go the traditional web hosting route but, you probably run into all kinds of configuration quirks and limitations. Enter Heroku. Build a Ruby on Rails site on your local machine that provides exactly the kind of back-end you need for your app and then git push your work up to Heroku. Once there, your stuff’s in the cloud.
Ok, enough about Heroku. The biggest drawback of Heroku (at least as far as many C# developers are concerned) is that it works only on Ruby on Rails and, is generally easier to access from Macs and Linux boxes than windows. Until recently, if you were a .NET developer then your only options were to go the traditional web hosting route, fire up an Amazon EC2 VM running Windows, or use Windows Azure and learn an entirely new SDK and make absolutely sure your app works nowhere but in Microsoft’s proprietary cloud.
You know what would kick ass? Heroku for .NET. It would be great if I could create a Visual Studio solution that runs and works locally, talks to local SQL databases, has unit tests that work just like my regular enterprise solutions… but then I could git push that VS solution into the cloud and then it just works.
Enter AppHarbor. These folks claim to be just that – Heroku for .NET. You can use git to push your Visual Studio 2010 solution right up to their servers. Once there, they actually will seek out and run all of the unit tests in your solution and show you the results. So now you’ve got Heroku for .NET with a little sprinkle of TeamCity and Continuous Integration thrown in for good measure.
One of the things that I love about Heroku is that I can just do a rake db:migrate and push data from my local box out to the cloud version of my application. I can do the same with an AppHarbor database – their SQL server databases are accessible directly from SQL Management Studio with SQL Server authentication. My first question is – why the hell isn’t it this easy to talk to Azure databases?? My second thought is – awesome.
If AppHarbor wants to compete with Heroku for developer mindshare, they’re going to need to provide a truckload of add-ons and plugins. If you’ve seen Heroku’s add-on page lately, you know that they have an insane amount of additional platform features that you can turn on with the flip of a switch. AppHarbor and Heroku both truly embrace the PaaS (Platform as a Service) model. The add-ons that are available at launch (which is today, actually) from AppHarbor are: MongoHQ, Cloudant, Redis, Memcacher, Mailgun, and New Relic (available next week).
AppHarbor’s infrastructure sits on top of Amazon’s infrastructure. This means that they’re basically doing all the hard work of utilizing Amazon’s virtual infrastructure, configuring the machines, partitioning things, dealing with disk space issues, clustering, load balancing – all that stuff you’d have to do if you talked directly to Amazon yourself. Coincidentally, Heroku does the same thing. Your application is really backed by Amazon’s cloud.
So, a cloud platform that allows me to create an application and git deploy to it in less than 1 minute (yes, I timed it – 42 seconds from “File -> New Project” to running on the web), gives me access to databases in the cloud (though I think their current 10MB -or- 10GB choice is a little myopic), gives me plug-ins and add-ons to add features to my virtual platform in the cloud? To quote my favorite TV personality, the Russian DirecTV guy with the miniature lap giraffe – I JUMP IN IT.
But seriously, time will tell if companies like AppHarbor are successful. One huge risk that people take when jumping into the cloud is lock-in. Nobody wants to write code for one specific cloud vendor if that cloud vendor might in the future change their platform or worse, shut down entirely. The beauty of companies like Heroku and AppHarbor is that there is no lock-in. The Ruby on Rails app that works on your Mac will work on Heroku and if Heroku burns to the ground tomorrow, heaven forbid, all that code you write is still viable elsewhere. The same goes for AppHarbor. You’re not writing code for Microsoft’s proprietary Azure Table or Queue storage – you’re hitting a SQL or mySQL server. You’re not writing code that only runs on your machine in a simulated environment that isn’t even all that good a simulator (Azure), you’re writing code that is just pure .NET that you can re-use on some other platform provider if you choose to move it, or pull it in-house if your needs change.