There are two types of cloud infrastructure offerings that are important for small business and startups: developer-centric hosting services, which take care of a lot of the day-to-day system tasks for you, or the infrastructure-focused options, which give you flexibility at the cost of having to do a lot of custom configuration. There are also service-tier systems that support the more flexible options, but I’m going to focus on an overview of the major cloud-based easy-to-get-into services that I know of.
All of these options require you to build your app with the platform in mind. Some knowledge of the limitations and capabilities of the systems will go a long way in smoothing the deployment of your new app. Building to these environments requires a certain amount of trust, however, and porting your app to a different platform once you’re up and running may be a chore if you don’t take steps early on.
Google has App Engine, a python-centric platform with a rich API that allows developers to build fairly robust applications quickly, deploy them, and just let them run. There’s no system administration involved whatsoever, which allows very small teams to build robust tools quickly without worrying about scaling, configuring servers, single points of failure or any of that rigamarole.
What you don’t get is some of the standard tools that most web developers take for granted: instead of a SQL-compliant database, you get BigTable. It’s capable, but different. Scheduled tasks currently don’t work, either. You can build an api-based, authenticated action and trigger it remotely to work around that, but watch for fault tolerance if you go that route. The biggest drawback is that the offering is free, but capped. Meaning, if you consume your allotted resources for the month, you’re done until the calendar ticks by. Google hasn’t yet opened payments for AppEngine, but it looks like the payment system is just around the corner.
Mosso’s CloudSites product is more flexible: you get your choice of Windows or Linux, and you deploy your app or web site onto their servers. You get a full hosting environment, witn no shell access – all control is done through their web panel. It’s a big benefit if you’re not command-line centric. On the Linux side, you get PHP, Perl, Python, MySQL; Windows users can choose from different versions of the .NET framework, and use IIS and SQL Server. So you can build your application using your favorite framework that fits within those parameters, just remember that you have very little system control. If you’re using CPAN modules, you’ll have to use what they have available or build them into your app directly. You can’t install anything else. However, they offer 500GB of bandwidth out of the gate, with a slightly expensive $.25/GB once you go over. At $100, it’s not a bad option. Check their Does It Fit? page to see if what you’re building fits in their parameters.
EngineYard is a fairly new player in the cloud game. They got started in 2006 as a Ruby on Rails hosting company, and had some really bad hiccups geting started (sorry guys, but I was a customer then and remember the whole cluster taking over an hour to reboot). They are, however, really damn smart, and determined to live on the bleeding edge. They use a custom-build, highly tuned Gentoo Linux server image that’s optimized to host Rails apps, and they do it very well. They’re driving a lot of thought and development in the systems administration world.
Recently, they just opened up Solo, in partnership with Amazon. They’re hosting and provisioning server instances using their custom stack on EC2, and make it pretty easy to get a Rails app off the ground. They charge a premium: $125/month, as opposed to a raw EC2 box at $70 or so, but what you get is a prebuilt box with a lot of good, smart defaults in the setup that’s built to reliably host a Rails app. If you’re not a sysadmin, or can’t affor the time or cash to get that work done for you, this looks to be a good route to go.