Evaluating the Cloud – first impressions
Posted by shannonclark on April 15, 2009
In theory I am a huge fan of and proponent of moving towards cloud computing, in practice as I look at currently available options even I find the curent landscape confusing, a bit convoluted, and rife with decisions and options.
Though I can program (in lots of languages) I am mostly an strategic consultant and business advisor, so while I do have specific technical requirements to look at, this article will mostly be written as a record of my process of evaluating cloud computing options from a business perspective. For a good, though incomplete, starting point for looking at cloud computing options from a more purely individual developer perspective IBM has a great article on current clound computing options.
As I have noted many times on this blog and on my twitter I am not a fan of Microsoft Vista (I consider it the worst OS I have ever used in some 25+ years of using computers). Though I have managed fairly large scale Miscrosoft servers in the past, I am also not a fan of Microsoft centric solutions for web applications – I don’t use Visual Studio as my primary development platforms, I would never encourage a client to build a web application that requires IE. So while Microsoft Azure is a cloud computing option I am not going to consider it in this blog post.
There is a more practical reason for this as well, as I write this, Microsoft has not yet announced the costs of Azure and it is currently only a Community Technology Preview. Without this data or a production ready environment Azure is not a responsible choice for a startup nor for a new venture which will be used in production of a larger company.
So what factors will I use to evaluate cloud computing options? And then what are my initial conclusions?
- Development platforms and options. Google App Engine, for example, currently only supports Python but will soon also support Java bytecode (which in turn opens it up to a range of other languages potentially). For some development needs and teams this is not a limitation at all, for others it removes App Engine as an option. Any cloud computing offering that allows for in essense virtual server instances will typically support a wide range of languages on those servers (as well as development frameworks). However other business concerns, such as how you plan on load balancing and scaling your applications may impact language and framework choices.
- Business tools included. This is more of a factor for a startup, especially a bootstrapping startup than it is for a larger company. A larger company may have preexisting payment processing systems established or may build an application for reasons other than direct revenue via the application. Not every startup either will need monetization or pass-through billing options. Here Amazon Web Services has a small lead over competitors at least in my initial research as they offer a range of options to handle payment from clients, including billing which includes the Amazon Web Services costs and only charges a small percentage on what you bill your clients over the costs of the client’s usage (currently 3% + $0.30 in most cases). Salesforce.com for example might offer access into a pre-qualified pool of potential customers, customers already paying on a monthly, per-user basic for software-as-a-service.
- Match to your business model. Different providers of cloud solutions have created those solutions based on a wildly different assumptions about the business model of their customers, understanding this and making best guesses (in the case of a startup or of a new project at a larger company) will help narrow down to a manageable pool of vendors. Some providers are optimized for the needs of applications which will store and distribute large amounts of data – here the costs per GB of data (stored and distributed) could be a key business factor in evaluating vendors. As importantly performance could be a key factor, some cloud computing vendors have already built relationships with Content Distribution Networks which can help with the delivery of large files to large numbers of people. But the same cloud vendors might not be a good solution for streaming options (depending on how they work with those content distribution networks and a range of other factors such as network topology).
- External factors – a simple example, if you have the type of service which can (and should) be crawled by search engine robots, then it needs to be easily crawled by them at all times – this means that your service needs to be persistent and likely you need a static IP address for the web server(s) hosting anything which might be linked to via external services. A more subtle point, if you will be exposing your appliction as a widget in other sites or as an application inside of social networks you will likely need to ensure 24/7 access to your application and need to have very good response times. Add in a requirement to work with external 3rd party API’s and services (ads, web services etc) and you may need to look at hybrid approaches or base your business models upon an assumption that at least one instance remains up at all times (and then have to factor in how much time it takes for additional instances to instantiate when you are looking at how you will scale if demand spikes).
- Your comfort with business partner risk – some cloud computing vendors seem unlikely to either go out of business or to exit the cloud computing business. Google and Microsoft for example are unlikely to go out of business any time soon, Salesforce.com has built a substantial and growing business on the cloud, and Amazon.com seems both profitable and deeply committed to their cloud services. Smaller vendors such as Rackspace or GoGrid or the dozens of smaller still companies present a bit more of a risk. In Rackspace’s case the risk is not so much that they will go out of business (they have prospered for many years now and are growing) but rather how/if they will consolidate a number of aquisitions. GoGrid has a compelling suite of offerings but presents a bit greater risk. For really business critical deployments (including for many startups especially once past the initial bootstrapping stage) I would thus recommend an exercise of exploring how to move from one cloud vendor to another as well as to stay aware of and have plans in place to use non-cloud based options.
- International considerations – if your business is entirely inside of the US then any cloud vendor with a US presense is a viable option. However many cloud vendors have restrictions which may impact your decision as you look at global use cases. Payment processing, a key selling point for some vendors, is often restricted to only US customers. Some vendors have great pricing of data usage within the US but charge additional fees for international traffic (directly or indirectly). For example, Amazon Web Services has different clouds for the US and the EU, data transfers within a cloud (between EC2 instances and S3 for example) are free, but if you need to move data between the EU and the US then fees are charged.
And these are by no means the only factors I am looking at, but are some of the initial ones I am considering as I research options. In follow up posts I hope to explore the current Cloud Computing landscape as well as my initial perceptions of each vendor I look at seriously. I will also, I hope, write up in more detail the technical requirements I have at the moment for the specific project which is inspiring this search.
Please add other factors you would suggest I consider in the comments below!