I received my Amazon Web Services developer's news shot last week. It followed up on recent announcements that their Elastic Compute Cloud (EC2) offering was moving from Beta into General Availability. With that announcement came a Service Level Agreement (SLA) of 99.95% within a region and failing to do so would make customers eligible for service credits. OK, so this is no different to a managed hosting provider running your platform. The difference is the actual service: the elastic, utility style cost model, cloud scale and all round different to hosting-provider service!
The thing of course that interested me most recently about AWS was the ability to run Windows Server and SQL Server - just ahead of some of the announcements Microsoft will be making about it's Cloud Computing strategy at the MS Professional Developer's Conference. To quote Amazon: "...an ideal environment for deploying ASP.NET web sites, high performance computing clusters, media transcoding solutions...". But what appeared next was perhaps my first experience of the Cloud/Utility computing reality: "Pricing for Amazon EC2 running Windows Server begins at $0.125 per compute hour.". I personally consume Amazon S3 to store my personal data mirrored off my Windows Home Server, and I get the usage bill every month, but there was something about this that signaled to me that Cloud Computing for Microsoft based solutions was genuinely off to the races.
So Amazon's take on exploiting their platform for Cloud Computing is clear. Use classic on-premise technology with an underlying infrastructure that will scale, and a billing model to go with it. As an architect there are many questions, but there is one obvious one that interests me: If you have a very large amount of data, and the infrastructure is modelled towards scale-out not scale-up, how are you going to build in a partitioning scheme so it is palatable to each compute node? After all, am I going to get a a 128GB of RAM SQL Server node linked to a 5TB data file in EC2? With Amazon Elastic Block Store I can have 1TB but it can only be connected to one EC2 instance, and we are encouraged to manage multiple EBS volumes attached to each instance to drive IO throughput etc. So even though it is cloud, I still have a lot to think about in how to architect a solution to scale and perform.
Remember that scalable does not mean “at large scale” it just means that the architecture can move from very small scale to very large scale where cost is commensurate with scale. Therefore those operating at small scale only need to have a scalable architecture even if they have yet to exploit this and move to large scale. Cloud computing could be for everyone not just people trying to recreate MySpace or Facebook.
So let's wait to hear this week about Microsoft's interpretation of what Cloud Computing means! From what I know it will represent a very interesting time for architects to apply their thinking power on how to properly exploit these platforms as well as how the economics influence the solutions we will build.
I have copied verbatim some of the AWS roadmap plans for completeness:
Lastly, to help its customers better plan their future hardware and software investments, AWS is providing visibility into plans to release several new features in 2009 that will make managing cloud-based applications even easier. These features will help provide even more cost-efficient consumption of Amazon EC2 and greater visibility into the operational health of applications running in the AWS cloud. These features include:
- Load balancing - Enables AWS customers to balance incoming requests and distribute traffic across multiple Amazon EC2 instances.
- Auto-scaling - Automatically grows and shrinks usage of Amazon EC2 compute capacity based on application requirements.
- Cloud monitoring - Enables AWS customers to monitor operational metrics of Amazon EC2, providing visibility into usage of the AWS cloud.
- Management Console - Provides a simple, point-and-click web interface that lets customers manage and access their AWS cloud resources.