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
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.
- 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.
- 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.
Deploy | Run | Scale