The term cloud computing initially referred to a way to automatically provision resources, computational storage...
and networking using an API or automated scripts. When Amazon Web Services designed its infrastructure-as-a-service offering, IT teams saw it as a way to launch products that allowed them to focus on the product, not its development. And while AWS had the right idea, its work with IaaS and PaaS was just beginning.
Platform as a service (PaaS) created opportunities to simplify and accelerate deployments while offering new features with very short development cycles. It offers a quick way to publish and manage applications. But it isn't without issues.
The first PaaS offering, Google AppEngine, had some limitations. It supported only Python and only within its limited framework. Other choices began to emerge, but they were still limited in which languages they supported -- and most supported only Web applications. These offerings automatically scaled and could spin up servers, but developers still had to determine when to scale. And they often had no control over the underlying hardware.
But what about services that must run background apps or require certain app installations? What if companies didn't have software to respond directly to user input on the Web, but instead had to respond to an event and run something in the background? IT teams could set up something similar to a Web-Hook and post to it, but they'd still need something running in the background, even when not in use.
Are containers the new IaaS?
When Docker and its approach to layering virtualization on top of a host system entered the scene, it caught the eye of several companies looking for server orchestration. Docker enabled developers to build a container and deploy it anywhere from the local system to AWS, and it was guaranteed to have the exact same configuration. Containers are built by "Dockerfile" scripts that allow IT teams to quickly build a new container when needed to push out a new release or for test and development.
Docker allows developers to easily define exactly what the environment should look like. IT teams still had to specify all the underlying packages required and manage the servers, so Docker isn't quite PaaS. But cloud vendors started to realize this was a good baseline for the PaaS model.
When Amazon Elastic Beanstalk added Docker support, developers regained control of host environments but Amazon still managed auto-scaling and deployment. It was the best of both worlds, a perfect way to keep the developers and operations staff all happy.
In addition, you can use AWS and Docker to run back-end applications that automatically scale. Better still, you can have multiple containers running on fewer servers and still have full isolation because of the added virtualization Docker provides.
Amazon pushed the PaaS-evolution envelope another step further when it introduced Lambda. Amazon Lambda seems to be a true PaaS product, but it allows you to set up "triggers" that work well in an event-based application model. The service currently supports Node.js (with more language support to be added), but doesn't require that IT teams have any base system running to respond to events. Lambda is designed entirely around responding to events; IT teams don't manage any hardware.
For example, if you let users upload video to your system, Lambda could pick up on a new video triggered by a Simple Storage Service notification that runs your function. Your function could then upload that video to Elastic Transcoder to convert it to mobile and desktop formats, and then upload that video to websites. It could also send out SMS alerts using Amazon SNS to anyone who was watching for that provider to upload a new video.
But if Amazon Lambda is a true PaaS product, where do Elastic Beanstalk or AWS' new EC2 Container Service fit?
Both Elastic Beanstalk and EC2 Container Service have some PaaS functionality -- allowing companies to automatically scale services as demands increase. They also enable integrated code deployment and a good deal of IaaS functionality, including specifying the types of servers, underlying software packages and application environments you want. The EC2 Container Service also adds support for lower-level applications, including non-Web applications.
In truth, Elastic Beanstalk and the EC2 Container Service are more like IaaS than PaaS. They provide companies with enough extra capacity to make it a better option than switching entirely to PaaS. They also offer the highest flexibility and least amount of vendor lock-in. And EC2 Container Service is both PaaS and IaaS -- but all cloud.
Google competes with AWS on IaaS pricing
Read more about the IaaS price wars
Unlock the potential for saving with AWS EC2 Reserved Instances