Amazon recently announced two new AWS services: DynamoDB and Simple Workflow Services. These announcements have generated lots of discussion about whether Amazon is moving into the Platform-as-a-Service space. I believe Amazon is doing something altogether different from PaaS. I believe their new offerings are consistent with their historical path, and that their overall approach is highly complementary to PaaS.
To put it simplistically, PaaS is about simplifying the complexities of deploying and operating web-scale applications. PaaS services enable quick and easy application deployment. They use infrastructure abstraction to provide automatic scaling and redundancy for application code.
PaaS is about “containers”. AWS, on the other hand, is about “building blocks”. Whereas PaaS is targeted at developers, AWS seems targeted more at architects. One can imagine system/application architects saying things like:
- We need a clustered RDBMS
- We need a highly scalable data store
- We need in-memory caching
- We need asynchronous messaging
- We need workflow scheduling
- We need to send outbound email
AWS is continually announcing new services that provide solutions to more and more application architecture needs. In a sense they are the cloud analog of developer libraries like .NET or the JDK. Why write your own string comparison function when you can call strcmp? Why write your own workflow scheduling subsystem when you can call SWF? Whereas PaaS says “run your things inside our thing”, AWS says “connect our things to your thing”. If anything, AWS services jump past PaaS to define a developer-oriented SaaS layer. While CloudFormation may be my least-favorite AWS service, it does conceptually introduce the idea of building cloud applications by wiring services together.
Whereas PaaS offers simplicity, AWS offers power. The two are strongly complementary. With AWS the app vendor still has to deploy and operate the core application that uses architecture services. The app vendor still has to figure out scalability, redundancy, and deployment for their core. It therefore seems a logical solution to run that core inside a PaaS, and connect it to needed AWS architecture services.
It may in fact be in Amazon’s roadmap to directly impinge on the PaaS value proposition. I don’t however, see DynamoDB or SWF as being part of that strategy. Instead, I see them as a natural continuation of their historical support for application architecture services.