How is PaaS evolving?


A number of articles have been written stating that PaaS is dead. We can see today that it's not true in the sense that some companies that billed themselves as PaaS are still here.

On the other hand, some PaaS companies have shut down so there's a little truth to that statement. One thing is for sure though. The remaining companies are shying away from using the term PaaS to describe what they do.

PaaS stands for Platform as a Service. These platforms run your web application. The main reason to use a PaaS is it removes the need to manage servers. It takes a few minutes to run your application instead of hours when you configure your own servers or days when you physically need to add servers.

While PaaS provides some advantages, it also has drawbacks like costs. PaaS usually charges for the resources that you use. The more CPU and RAM your app needs, the more you have to pay. At some point, it becomes more expensive than you think of managing the servers on your own. The other problem with the traditional PaaS is each PaaS is different from the other. This results in a lock-in with a particular PaaS. You can't move your application from one PaaS to another without changes.

Most PaaS companies started by supporting one programming language. There were PaaS that supported Ruby, PHP, Java, etc. As new languages become more trendy and as companies started to use different languages, it became important to have a Paas that supports different languages. The rise in popularity of Linux containers helped PaaS to support multiple languages.

Containers aren't new. BSD has Jails and Solaris has Zones. Containers in Linux aren't exactly like these two but for the purpose of this post, we can consider them as equivalent. In short, we have the technology for decades. Docker made containers popular recently even though the technology existed a long time because it did other things. Aside from running applications in containers, Docker is also an application delivery platform. You can push and pull images which made running Linux containers on your own server simpler.

Containers made it easier for PaaS to support multiple languages but they also made it easier for developers to run their applications themselves. Running your application inside containers removes the need for most configuration in a server. You still need to do some work but it's way less now that you're using containers.  

Containers are not a silver bullet. You still need to think about security, logging, high availability, etc. Some projects like Kubernetes, Mesos, and Docker Swarm provide these features and they use containers as one component. Whether you run containers via Docker directly or via Kubernetes, you are still using a platform. You may have hand-built this platform with Docker and bash scripts, or you may have chosen Kubernetes, whatever you are using, it can be considered a platform. One that you now have to manage.

Platforms are not dead because you always need one to run your application. And as long as platforms are needed, providing a platform as a service will always have a place. Using the term PaaS though is probably not a good idea because a lot of people already think that they can run their applications on their own, without realizing that they are using a platform.

The popularity of PaaS predates Docker. When developers started using Docker, and before PaaS providers can catch up to support Docker, it was normal to think PaaS is not necessary anymore. Fewer companies need a traditional PaaS but the features that PaaS offered are definitely still in demand.

Run applications in containers

  • Traditional PaaS runs applications written in a particular language. This will not cut it now that containers make it easy to run any application. A modern platform should support containers.

Managed Support

  • PaaS companies offered different levels of support. Most didn't provide support for the applications. A modern managed platform should provide support for your applications. A container makes it easier to run applications but you still need help with framework specific questions, building the image, the number of containers to run, among other things.


  • Most PaaS run your applications together with other customers' applications. For security purposes, it should be possible to run your applications on servers that only you have access to. Aside from additional security, you can have more advanced setups like peering your own hardware with the servers on the platform.

Database Support

  • Databases should still use separate servers instead of containers. While it is technically possible to run databases on containers, there are many things you should consider when doing that. Unless you're aware of the risks, you should run your databases on separate servers.


Running applications is now an easier task than a modern platform has to do more.
You can read more about what Engine Yard provides on the evolution of PaaS.


Are you ready to Deploy??
Start a 500 Hours Free Trial

logo.svg Deploy | Run | Scale

Christopher Rigor

Christopher Rigor is a Senior Technical Evangelist at Engine Yard. He’s a long time Rails user, system administrator, and recently became a contributor of RailsInstaller. Previously, he was the DevOps Support Manager for Asia-Pacific at Engine Yard.
Find me on:


Subscribe Here!