What is Platform as a Service (PaaS)?
It stands for platform-as-a-service. At a high-level, a PaaS helps organizations, specifically developers, realize the benefits of cloud computing by providing a fast and scalable way to host applications in the cloud.
Technically, a PaaS is an Application Platform comprised of an operating system, middleware and other software that allows applications to run on the cloud with much of the management, security, scaling and other stack related headaches abstracted away. This allows you to focus on two things: customers and developing your application. Let the PaaS deal with system administration details like setting up servers or VMs, installing libraries or frameworks, configuring testing tools, etc. Ideally, the workflow for onboarding an application should be as simple as pushing your application code from an IDE using something like Git, then going to your application’s URL to see the changes live.
The Benefits of Cloud Computing
So, why all the fuss about hosting applications on the cloud versus managing your own servers or using a shared or managed hosting environment? We’ll there are quite a few good reasons that all relate to each other:
Speed: Spend more time developing features and less time managing hardware and software. When development, quality assurance and operational teams can consume resources on-demand with minimal overhead, everyone gets more done faster.
Cost-Savings: Aside from not spending money managing hardware and software, when you consume resources in an on-demand fashion you only pay for what you use. This eliminates the fiscal burden of supporting idle capacity for any length of time.
Scalability: Because infrastructure like network, storage and compute resources can be consumed and released on-demand, preferably in an automatic and customizable way, as the workload fluctuates, the end-user experience remains constant.
What PaaS is Not
PaaS is not a Cloud
Say it with me, “A PaaS is not a cloud.” At least not in the traditional way that people think of clouds, as in the case of Infrastructure as a Service (IaaS). IaaS uses a combination of virtualization and other software to create on-demand services out of network, storage and compute resources.
More specifically, IaaS offerings typically consist of a Cloud Provider making available on demand what are essentially virtual machine images of various size and shape and operating system. An IaaS customer would sign up for these VM instances and then do with them whatever they want. But that's the challenge. Beyond getting the image from the Cloud Provider, the user has to do everything in terms of software installation, system administration, etc. IaaS makes it quicker and easier to deploy compute resources, but the job of the IT worker remains essentially the same as it was in the traditional datacenter. They have to manage these Cloud-based servers much in the same way that they managed their local servers. In contrast, PaaS really does change how IT and application development works. The PaaS automagically manages the underlying compute resources in addition to the application frameworks and tools so that the PaaS users (Developer or IT worker) can just focus on the application code. PaaS makes it faster, easier, and cheaper to launch your next big application idea.
PaaS is not an Application
It’s a platform! SaaS, or Software-as-a-Service, solutions represent a complete application that is running on the cloud. In many cases, these are business applications such as CRM, HCM, etc. Many enterprises (and consumers) are learning the ease and value of using SaaS software solutions if those solutions meet their specific needs. And, thus, the challenge with SaaS is that the specific applications and features that you need for your business or idea may not exist within any existing SaaS offering. So, you would have to compromise in some way. PaaS, on the other hand, allows you to code the specific application that you need, but still reap the benefits of running it in the Cloud! Developing on a PaaS will allow you to be agile and efficient, and it can scale to support your growth.
What to look for in a PaaS
So, you might be asking yourself, “This all sounds great how do I get started?” Well, there’s a few things to consider when evaluating a PaaS.
Does it support multiple languages, frameworks and middleware?
Does it provide support for multiple hosting environments?
Just as they are polyglot, today's PaaS offerings are also "polyhost". That is, they support a choice of underlying hosting environments on top of which the PaaS is operated. Whether public cloud, private cloud, local hypervisor, or bare metal, supporting multiple hosting environments allows the application developer/owner to migrate their application as needed to support increased demand, mitigate cloud outages, address data privacy concerns, or protect themselves from cloud price hikes.
Is it extensible?
First generation PaaS's are said to be "my way or the highway". That is, while they provide a complete application platform, they very carefully choose and control which pieces of that platform are made available to you the developer. They define which versions of which libraries, which frameworks, and which back-end data systems the developer can use in their coding.
Today's PaaS offerings are extensible and flexible to better support developer needs. To do this, they provide a "do-it-yourself" mechanism for adding capabilities to the PaaS. Whether it is a new language, a data-store, or some other innovative component, these capabilities can be added by configuring a "cartridge" that plugs in to the PaaS. This gives the developer a way to add a component that he needs to complete his application design. This extensibility is largely made possible because of the open source foundations of the leading PaaS offerings.
Does it promote choice or lock-in?
Today's developers want openness and choice. They have learned the painful lessons of "Lock-In". Whether it was the OS, the middleware, or APIs, proprietary has meant Lock-In and has only caused pain when it came time for that inevitable migration demanded by the advancement of technology. Polyglot is just one aspect of the "No Lock-In" approach that PaaS 2.0 vendors are taking. The first generation of PaaS offerings (Google App Engine, etc) required developers to code to specific APIs in specific languages and they ran only on certain clouds or data centers. In addition to polyglot multi-language support, polyhost means that users can run their apps on a variety of hosting environments. This gives them the choice and flexibility and insures that they will be able to provide consistent quality of experience to their users.
Does it auto-scale?
PaaS 2.0 offerings will even "auto-scale" the resources that are available to your application. So, if your app goes viral or your business has a seasonal spike, the PaaS will spin up new resources underneath your application to allow it to handle the increased load. Auto-scaling that you don't have to manage is one of the huge advantages of PaaS.
In summary, PaaS represents the future of software development. You need only worry about writing the code for your next Big Idea. Using your favorite IDE, command line tools, or a browser interface, you can quickly and easily push your app to the PaaS where it will run on top of an elastic infrastructure that auto-scales to meet the explosive demand of your application.