"Wanted: a framework for building available services on the cloud" Kiran-Kumar Muniswamy-Reddy, Harvard School of Engineering and Applied Sciences Many of the services provided by cloud providers are designed to be highly available. Extending the services to provide some additional functionality, however, is hard as any extension service that a user builds and deploys cannot be as available as the services provided by the cloud provider. For example, AWS S3 provides a simple PUT/GET interface for objects. S3 is designed by Amazon to be highly available. We wanted to use S3 as a back-end, but we also needed to ensure consistency across multiple objects, i.e., either all the objects are stored or none of them are stored. One simple solution for this would have been deploy a service on EC2 instances that ensures multi object consistency. EC2, however, is not as highly available as S3. Luckily, we could get around this by coupling S3 with another AWS service, Simple Queuing Service (SQS), to ensure both multi-object consistency and availability. Another example is Vertica's on-demand cloud version that is hosted on AWS EC2. The on-demand service provides automatic scaling, replication, failover, and recovery. Vertica presumably had to build a service on EC2 instances that ensured all these properties. While the current cloud services are being built with the correct abstractions, many users will end up developing their own solutions to take advantage of the availability that cloud services promise. Cloud companies can actually fill this gap for the users by providing frameworks that reduce the time to build available services. One example is RightScale, a company that allows customers to build scalable and reliable customer facing websites and batch processing back-ends on the cloud. The cloud, however, is not limited to hosting websites and batch processing jobs. Furthermore, if the cloud providers themselves solve the problem, it will result in reduced pricing for users. For example, if we had used EC2 instances to provide a transactional interface to S3 that is also highly available, the cost would have been an order of magnitude higher than just using S3. A cloud provider, on the other hand, might be able to provide the same features at a lower cost by amortizing the cost across many services. If, indeed the cloud services provided a framework for building available services, the questions are: What applications should the framework cater to? What are the appropriate knobs to expose to users?