Getting a new project out in the world can be a rough time for a developer. Your hosting provider may not support the latest version of Ruby on Rails that you need. You don’t have the time to hassle with a fresh RavenDB install on your server. Setting up the additional logging and caching optimizations is a little too far past your expertise level. The list goes on and on.
Enter the realm of “xAAS”, the “something” as a service. You’ve probably seen them by now. Amazon was the biggest front runner to this game. Lots of smaller companies have built their entire business off of this. Google is now making a big push to get into the game as well. The result is a wonderful environment for a developer to work with, and I’ll outline the features and services that you can utilize with your next project.
What is xAAS?
Platform As a Service, Infrastructure as a Service, and many other “as a service” providers are attempting to give you computing resources as simple as you get your household utilities. Need a new web site instance? One click and you’re done. Need your own server to setup your custom software? One click and you’re up and running, including VPN access and the latest software updates. It doesn’t matter if you need PHP, .Net, Ruby on Rails, Windows, Ubuntu, Debian, or anything else. The xAAS provider handles all the messy work of setting up and maintaining the hardware and software for you. Some services even include basic installs of popular software, such as WordPress or Drupal.
This provides amazing benefits for the developer. Not so long ago, getting a project off the ground required you installing your database, installing your backend scripting language, and potentially third party libraries to support your application. You also had to make sure any updates for the server were in place. If you were starting from scratch, this could easily take a few days. This is now accomplished in minutes. In addition, this configuration available for anybody to access, instead of your own private local server. Most of your xAAS providers are now charging by the usage/processing time, so that your expenses are minimized, especially when your app is not in use, just like the electricity. Scalability is also immediately available with xAAS providers. You can start small (often for free) and when your site gains in popularity, adding additional processing power, or creating a cloned machine that is load balanced, is a few clicks away.
This sounds great! What’s available for me?!
I’m glad you asked! There are numerous xAAS services out there to match your needs. I should add that all of the services below allow you to deploy your apps directly or through a code repository (such as GitHub or BitBucket) to make things even easier:
Open Source Stack
AppFog allows you to setup Java, Java Grails, Node.js, PHP, PHP Drupal, Ruby on Rails, Python, WordPress, Sinatra, and a handful of other environments. You can also setup MySQL, MongoDB, PostgreSQL databases for your apps to interface with. RabbitHQ and Redit services are also provided. You can also install add-ons such as Logentries, Blitz, MemCached Cloud, and a lot more. Deployment and updates to your applications occurs through the command prompt using their own command line tools. You can access the databases through the command line as well.
AppFog’s pricing scheme gives you an unlimited amount of apps within a 2GB memory space (apps are stored in memory, so think of this as file storage that isn’t persistent) with 100MB database sizes for free that run under one of AppFog’s subdomains. If you need additional resources or a domain name to map to an application, pricing starts at $20 a month.
AppFog lets you choose how much memory space to allot for each application. I have a couple of Ruby on Rails apps there, one which I have using a minimal amount of space and another using the rest. I could also spawn multiple instances of a given application within the scope of my available memory.
Engine Yard is another popular PaaS that focuses on PHP, Ruby on Rails, and Node.js applications. They offer MySQL and PostreSQL as database options in addition to numerous add-ons like Appcelerator, CloudFlare, Janrain, and many more. While the platform/database options are not as diverse as AppFog, EngineYard uses the “per hour” pricing metric with a small server instance running for approximately 5 cents an hour. They also offer different tiers of support for your application instances, which can give you additional peace of mind.
App Harbor provides the latest .Net platforms (3.5+) for you to host your apps with. You can also leverage SQL Server, MySQL, RavenDB, and other popular databases for your applications. Just like the rest of the of the other xAAS offerings, there are a plethora of add-ons to use with your app. Logentires, New Relic, SendGrid, and AppFail are just a few of the examples.
App Harbor gives you a single “worker” unit and a piggyback SSL option for free. You are required to use an App Harbor subdomain for your apps. When you’re ready to start scaling out to have additional workers or background processes, pricing starts at $49 per month.
One additional benefit of App Harbor is the build service that it provides. When a fresh set of code changes are pushed into the code repository, App Harbor will grab the code and attempt a fresh build of it. If the build fails, a message is displayed in your console and the update is not pushed out to your live site. This helps prevent bad code from sneaking out accidentally.
Microsoft was a little late entering the xAAS game, but they have a huge offering for the .Net developer. You can get a simple website or database, or get a server of various sizes and capabilities. It is feasible to run 10 websites under a single small server instance and still run it for free if you keep your bandwidth/disk usage down. Azure also offers other features, such as mobile web services, media services, and even virtual instances of Visual Studio to work with online. Azure does not have any add-ons at this time, but you can configure websites with default installs of popular platforms, such as WordPress, Drupal, and phpBB. Yes, that means you can run PHP, Python, and Node (it appears) apps through Azure.
Azure is using a modular offering for services based on bandwitdh, data output, or other such metrics. When done right, it is possible to run applications through Azure for free while their usage is small. Once things start to scale out, prices begin at pennies per unit. They provide a calculator to easily estimate what your prices would be.
Services As A Service
One thing you’ll notice, is that most of the add-ons that are provided are services themselves. For example, I used the Logentries add-on in App Harbor to be able to easily view my Log4Net entries online, since I didn’t have file access directly. When I migrated my app to Azure, I simply signed up for a Logentries account and updated my configuration settings to log to my new account. Logentries is a “Log Repository As A Service” that allows me to push up to a 1GB of log entries and view one week of them in the past for free. If I need to track more data, or for longer in the past, I simply change my payment plan (really reasonable too) and everything continues as normal. Easy scaling with no hassle. You’ll find that most (if not all) of these add-ons function in this manner. It’s truly beautiful.
Go Out and Develop!
I don’t think I would have been able to expand my programming horizons as easily as I have done over the past year without the xAAS services that are out there. I have several apps out there, running various languages/databases, and I have spent absolutely nothing on them at this point, other than some late nights coding them up. I don’t have to worry about getting servers setup, just my local dev environment on my laptop. If any of them ever take off big, I’m already in a place where I can scale up with no hassle.
I highly encourage you to go out and explore these services for yourself! I think you’ll be pleasantly surprised!