Lately, there’s been a lot of talk about Infrastructure as a Service (IaaS), Software as a Service (SaaS), and Platform as a Service (PaaS, not to be confused with the easter egg people, PAAS), what distinguishes them from each other, and how they all fit into the more general concept of Cloud Computing. Software as a Service and Infrastructure as a Service are generally well understood, but Platform as a Service still remains a bit of a mystery to many people. In this short series of posts we’ll take a stab at explaining it a bit, starting with an introduction to the concept of platforms as they apply to software and dipping into the basics of Platform as a Service. In future posts we’ll get into more of the nitty gritty.
What is a Platform?
A platform is anything you can leverage to accomplish something in a simpler, faster, or otherwise better way than you could without. A platform may even provide a way to accomplish things that would otherwise not be possible at all. In the most basic sense a platform is something physical that you can stand on to reach up higher. In the software world it’s essentially the same idea. As a programmer, you leverage pre-exisitng code rather than starting from scratch and writing everything. The most well-known software platforms for desktop software are Windows and Mac OS and it’s generally very clear where those platforms end and the applications begin.
In the world of web-based software, the infrastructure or hosting layer is analogous to desktop computer hardware and the platform layer is analogous to a desktop operating system. In the very early days of web hosting, companies like us provided a service that was not much more than some disk space on a pre-configured Linux server with web server software running on it and a smattering of common scripting languages such as perl and python. Those early hosting platforms were really only a thin layer on top of Linux itself. It saved you from having to know how to configure the underlying software but didn’t really help you develop your own websites faster.
A lot has changed since then and web platforms have changed along the way, too. Hosting services have automated the management of the underlying operating system and have exposed that to users in the form of increased control. Additional features such as email distribution lists, contact form handlers, e-commerce options and other tools that make it easier to build and run a website are part of almost every hosting service, and even the installation of third-party web software platforms and frameworks is almost completely automated. More advanced services, such as the one offered by DreamHost, also provide managed security, scaling options via automated migration between service levels, integration with external services such as content delivery networks, and an API providing on-demand launching of private servers and fine-grained control over DNS records. Web platforms today provide a significant level of automation, control, and tools to help you build and manage your websites and that works great for almost all websites, but successfully scaling a very busy website can still take more work than it should. That’s where Platform as a Service comes in.
Platform as a Service
The ultimate goal of a PaaS is to make it easier for you to run your website or web application no matter how much traffic it gets. It should “just work”. Where traditional managed hosting services have been pushing towards providing you with more control over the managed environment, platform services remove you from that aspect of the system altogether and manage it completely for you. You just deploy your application and the service figures out what to do with it. A platform as a service should handle scaling seamlessly for you so you can just focus on your website and the code running it. That’s what I think is the holy grail of Platform as a Service and not necessarily the reality, though. Platform services that exist today typically provide parts of this with some set of limitations appropriate to the type of user or application they are targeting. In the next post in this series we’ll discuss some of the different kinds of platform services.
And if none of this is remotely interesting to you, you may still appreciate the more fun kind of platform.