I'm currently on a web app scalability kick (or to be buzzword friendly: I'm looking into leveraging Cloud Computing). I've now made it through a book on Google App Engine, and have started to delve into the other major player in the cloud space: Amazon.
While Google App Engine gives you a single contained environment that turns your programs into a scalability monster, Amazon appears to be more interested in delivering individual services so you can roll your own. At first, I was pretty turned off by this because the App Engine solution seemed to account for a great many nuances that an Amazon based solution would still need to handle. But, as I get to know the Amazon services better I'm seeing just how powerful they are.
Why couldn't you create the following with relative ease:
- Implement the standard HTTP REST protocol behind Amazon's web services. This is little more than porting PHP code to PLT-Scheme. There are plenty of examples of handling XML returned from services, too.
- Create a simple wrapper API around SDB, SQS and S3. This would give you instant access to a massively scalable and distributed database, queue and file system.
- Run the Stateless PLT-Web Server, a server optimized to not store state on the local machine, on a EC2 Linux box.
- Use Auto Scaling to spin up new stateless web servers as needed.
Of course, you could create the above solution with nearly any programming language. Though using PLT-Scheme's stateless web server has some interesting advantages because of its continuation support. Not only could you stash continuations in a store for the web user to execute later on, but I wonder if you could add them to queue, and have another application execute them altogether. The continuation pattern may be an excellent way to fork off tasks to be handled by other services.
The bottom line is this: thanks to Amazon, nearly any language can be used to develop a massively scalable architecture. Man, am I impressed.
No comments:
Post a Comment