Warning – As we proceed through the maze of cloud acronyms from SaaS right through to IaaS things will start to get progressively technical(ish), so if you are not so inclined look away now
As we are an avid user (and fan) of Amazon AWS all examples will be based on the Amazon PaaS/IaaS structure.
Amazon Web Services (AWS) is probably not the first cloud service that springs to mind when you think of PaaS (Platform-as-a-Service). AWS is known primarily as an Infrastructure-as-a-Service platform (IaaS) and with good reason: the Amazon cloud is practically synonymous with public cloud computing (Netflix being a flagpole user) in general and with IaaS in particular. So why talk about PaaS on AWS?
The answer is that many of the services available in AWS are comparable to services available in PaaS offerings. The key distinguishing feature between an IaaS and a PaaS is the type of service offered. In an IaaS customers typically work with virtual machines that they configure themselves; in a PaaS customers work with services created and maintained by the PaaS provider. AWS has a mix of both. We will look at Amazon AWS as an IaaS platform in a later article, but for now this article will focus more on platform services you can use without having to create and maintain your own application servers.
One common feature of PaaS offerings is automatic load balancing and auto-scaling. The PaaS service monitors the load on your application (SaaS), and can add extra servers if needed, and distribute work across a set of servers. Amazon AWS offers the Elastic Load Balancing service that performs similar functions. Once you have created a set of servers, you can create a load balancer from the management console and configure it to manage loads of multiple protocols (e.g. HTTP, HTTPS, TCP, etc) and perform health checks on the servers. Since any traffic to the domain name mapped to the load balancer is distributed across the cluster, you gain improved fault tolerance. You can also configure the load balancing service to manage auto-scaling as well.
Elastic load balancing is in some ways a small step toward PaaS like services. If you want even more PaaS-like functionality while still retaining a substantial degree of control over the underlying infrastructure, then you may want to look at Amazon Elastic Beanstalk. Like more traditional PaaS services, you upload your application and publish your application to Amazon Elastic Beanstalk, so very much like how Microsoft Azure used to solely function.
Amazon Elastic Beanstalk manages load balancing and virtual machines, but developers can still control lower level infrastructure configuration if needed. For example, developers can specify virtual machine instance types, a particular relational database for storage, replication for an application in multiple zones, and modify environment settings if needed. An added benefit for developers is that there is no additional charge to run Amazon Elastic Beanstalk. Charges are based on the underlying resources, such as EC2 instances and storage.
AWS also includes a number of services commonly used in large scale distributed applications, including search, workflow, and messaging queues. These are all services you can establish for yourself in the Amazon cloud but if you prefer a more PaaS-like option, you have one available for you. For example, the Amazon CloudSearch service allows you to offer search services on your site or application without having to administer a search server yourself. The service will automatically scale the number of search instances to meet the demand of current load.
PaaS providers typically offer a mix of compute services, storage, application service and system management. All of these are available in the Amazon AWS. Although there are some sound arguments one could make that AWS is not a PaaS, it offers PaaS like services with the option of IaaS-like control in some cases. By providing PaaS-like services, such as RDS, Elastic Beanstalk, search, workflow and messaging queues, developers such as Dynamax can have a mix of IaaS and PaaS benefits together.