Why I believe that small and medium sized companies should consider leveraging a PaaS
PaaS (Platform as a Service) is an approach to eliminate, or at least vastly reduce, the cost and complexity of developing applications.
It does so by providing a framework for developing (tools, APIs, sometimes code) to foster application development.
It supports the complete life cycle, from building, testing, deploying up to managing and updating.
As a PaaS is a cloud based service it is up to the vendor to set up infrastructure and maintenance, updates, upgrades, etc.
This vastly reduces IT costs for the customers and thus helping you to stay above what I call the “value line”.
What I mean with the “value line” can be deduced from the following diagram:
(Disclaimer: The idea to call this the “value line” is not from me. I heard it first from a cloud engineer of Pivotal in a talk I attended some years ago)
So when leveraging a PaaS as a software company (and I think all non very small-sized companies are software companies nowadays, read this if you can’t relate) you can focus on developing value for your customers.
Focus can be shifted from setting up and maintaining an infrastructure to building cool applications and services efficiently and thereby accelerating time to market.
What’s the difference between PaaS, SaaS, IaaS?
PaaS is located between IaaS (Infrastructure as a service) and SaaS (Software as a Service).
In IaaS you get, as the name says: The infrastructure as a service.
This means you don’t have to manage servers, storage, networking and the like. But you still have to manage operation systems, runtime, middleware, etc. (like containers, software you depend on, …).
In PaaS you get all this too: You just have to manage your own self-developed application and the data.
In SaaS you don’t even need to do that. Everything is managed by the vendor.
IaaS: Amazon Web Services, Microsoft Azure
PaaS: AWS Elastic Beanstalk, Windows Azure, Pivotal Cloud Foundry, Heroku
SaaS: Google Apps, Dropbox
Advantages of PaaS
First of all your time-to-market will decrease and your productivity will gain a lot.
Why? Because you can build applications faster than would be possible if your development teams had to build, configure and manage their own platforms and infrastructure.
The cloud is a game changer regarding the pace of innovation:
Companies like Amazon quickly transform new ideas into real applications and thus market opportunities exist only very briefly. To be able to compete you need to have iteration cycles (meaning from developing to deployment of new features) of days or weeks, not months or years.
By using a PaaS you gain instant access to a complete “environment” for that. Setting up a platform yourself is complex, time-consuming and costly. And it brings not much value-wise. It’s not where the money is earned.
PaaS platforms aim to simplify and automate this.
You can find customer success stories of PaaS companies on their respective homepages. Scanning over a few of them, a lot of them reported productivity gains of at least 50%.
Less pressure on developers/ops
As mentioned before PaaS allows your developers to focus on “the important stuff”. By removing the overhead of deploying, managing and maintaining your infrastructure, runtime, etc. you not only enable your development teams to do things faster: It enables them to have no knowledge of certain things at all. Because they never need to do them.
This “free time” can be used to enhance the skills needed for delivering real value like innovative features and awesome user experience.
As a business owner with a new idea for a product, would you rather want a team of generalist developers who can code moderately well, are able to set up the necessary infrastructure and spend around 40% of the time maintaining it or would you want a specialist team that can focus on real business value, write exactly the code that you need and spend 100% of the time developing your product?
Or (as it currently fits small sized companies better):
Would you rather have a team of let’s say 5 developers and 2 ops guys. Or a full team of 7 developers?
If you chose the latter in both of these questions, then a PaaS may suits you.
Stay up to date
When leveraging a PaaS you will have new versions, features and bug fixes of the software you rely on instantiated automatically in the cloud.
And when a particular software you depend on loses the “state of the art” status you can be sure that your platform provider will inform you, since they won’t want to maintain legacy stuff. So you can do the necessary steps to migrate to a more recent technology without the risk of staying behind for too long.
This again means that you are able to focus on business value, instead of maintaining an infrastructure.
Up until now this article reads like an advertising campaign for PaaS providers. To put it into perspective let’s look at some risks/disadvantages.
PaaS is on a decline
With the rise of Kubernetes and things like OpenShift PaaS is on a decline.
They basically make managing IaaS easier, since creating your own “platform” is greatly simplified. But these technologies have a steep learning curve and: You need to maintain them.
So for small to medium sized companies, which are not exclusively tech-companies, I still think PaaS will do better than adopting the alternatives. And of course you can always mix both approaches.
Your PaaS provider will have all of your application data and its code. Sometimes, depending on the business model, it will store the databases via a third party (another provider).
Hence it can be hard to assess and test the security measures of your provider.
Once your applications are up an running on a PaaS it can be hard to switch providers. Since you used the tools and frameworks supplied by the vendor you chose.
It won’t be impossible, but expensive to do so.
Hard to switch to self-maintained infrastructure again
When you decide to switch to a self-maintained infrastructure (e.g. IaaS, managed with Kubernetes), you will have a hard time:
Not only you are tied to the tools and frameworks supplied your PaaS provider, you also lost the opportunity to learn about these things and stay on track with them, because your developers didn’t ever need to learn it in the first place.
While the risks or disadvantages may provide ample reason for some companies not to leverage a PaaS I believe that for the most part small to medium sized companies (like up to 25 developers or something in that range) it is still without competition:
You won’t want to afford dedicating a third of your team for maintaining infrastructure.
You want to focus on business value.
And that’s what it’s all about: The value line. Everything else are details.
Feel free to share your opinion or discuss with me in the comments section!