Before we get to the Enterprise implication of EC2 and S3, I should probably let the people that haven’t heard about them a little background. Amazon S3 is a service that launched a few months ago that provides a simple web services interface to store and retrieve any amount of data, at any time, from anywhere on the web. It gives you access to a highly scalable, reliable, fast data storage infrastructure without spending the millions it would take to create a redundant, fault-tolerant SAN environment. Amazon Elastic Compute Cloud (Amazon EC2) is a new service that launched last week that finally realizes the promise of grid computing for me.
Amazon EC2 gives you access to a virtual computing environment in the cloud. Your applications run on a “virtual CPU”, the equivalent of a 1.7 GHz Xeon processor with 1.75 GB of RAM, 160 GB of local disk and 250 Mb/second of network bandwidth. You pay 10 cents per hour (per instance) which would amount to about $72 per month. You can provision one, hundreds or even thousands of servers or grow capacity as needed as your application grows. Can you imagine being able to provision 1, 2 or 500 additional servers in minutes for your application programmatically?
To setup your instance, Amazon gives you tools to create your own Amazon Machine Image (AMI). An AMI is simply a packaged-up environment that includes all the necessary bits to set up and boot your instance (Currently Fedora Core 3 and 4 systems based on the Linux 2.6 kernel are explicitly supported, although any Linux distribution which runs on this kernel version should work.) that can include a webserver, database server, etc. Once you create your AMI, you upload it to Amazon S3 and your instance is ready to go. You can target that image to multiple instances or build out your web tier on a set of machine, your middle tier on another set and your database on another set as well. Since this is essentially virtualized Linux, any applications that work on Linux should work here including Java applications. Amazon EC2 is a closed-beta program and I haven’t gotten access to the beta yet but Edwin Ong over at castblog has a nice review with some great screenshots that will demonstrate the potential here.
Now that you have the background on S3 and EC2, you can just imagine the potential for startups. Instead of having to pay for terabytes of storage if you are the next Flickr or YouTube killer, you can simply use S3 for all your storage needs and have a redundant, encrypted file system that’s fairly bulletproof and grows with you. Instead of having to forecast your storage needs, you can focus on other real tangible problems. EC2 now provides the same on the computing side of the house. Not sure how many dedicated managed servers to get at your ISP? Well, just use EC2 and grow your farm of dedicated virtual boxes you as need them. And so if Digg, Techmeme, Reddit or TechCrunch or the meme of your choice is sending you millions of hits, add a few virtual servers to support your application and then scale back as traffic dissipates.
The advantages of this virtual platform are pretty obvious but I see major potential of this model for the enterprises. Take any of your Fortune 1000 companies or millions of other smaller companies than that. Most of them are required either by regulation or competitive landscape to have BCP (business continuity) plans, especially if they are in a highly-regulated industry like banking/finance, insurance, health-care etc. So what if you could build out a virtual BCP environment where you test, build and deploy your applications on a few EC2 instances to validate your applications and scale up by adding additional instances if you really need to failover your applications. The traditional model of BCP is building out another datacenter or leasing space (colocation) in an established datacenter center that meets your power, telecom/network, security and service needs which costs anywhere from several thousands to millions depending on the scale. What if you could completely eliminate that cost by using Amazon’s virtual computing grid? What if you could deploy all of your applications that are critical to running the business in case of a disaster on a virtual cluster of servers without paying the cost of a full-physical build-out? The question of privacy, data encryption and access controls would need to be flushed out but Amazon could potentially be the solution for companies that are struggling to justify exorbitant BCP costs.
I think S3 has already changed the competitive landscape and realized the dream of the virtual storage network and EC2 is going to be type of disruptive change that will turn the market on its head. I cannot wait to see the tools that are going to pop around the EC2 space to make the creation and deployment of your virtual server easier than the current command line process. S3 is a great example with some great applications that have popped up to take advantage of S3 and my current favorite is JungleDisk. S3 over WebDAV ï¿½ brilliant. As an aside, I am working on my own version of an AJAX enabled S3 web application but it’s more for personal use that will end up being used as tutorial-ware more than anything. It’s interesting to see the mini-industry that has popped around S3 and EC2 will draw even greater interest. It will only be a matter of time before you will have your vendors offering one-click setup of your Amazon EC2 server preloaded with the Linux flavor of your choice along with applications you need. I can also see a new group of hosting providers jumping as VAR vendors to resell the many virtual instances they pay for as shared host servers slices. The potential is limitless – Now I just need to get into the beta so I can see it for real.