If your organization is thinking about undertaking a journey to the cloud, the first question you should ask your software vendor is “Which cloud architecture models can I choose from?”.
In response, you will learn that there are multiple cloud models like IaaS, PaaS, or SaaS. So, your next question will probably be “Which one should I choose?”.
This will result in good old “It depends.”. But there is a different question you can ask “How do they fit into my journey to the cloud?”.
In this article, I want to help you find an answer to this question for one of those models – PaaS. I’m going to walk you through different types of journeys to the cloud and show you how PaaS can be used to provide benefits at their different stages.
Platform as a Service is an enabler for building performant and cost-efficient applications in the cloud. It provides you with sophisticated yet affordable tools.
In the PaaS model, you no longer buy infrastructure from the cloud provider (well, you do, but you no longer think about it).
Instead, you buy usage of various services which provide managed infrastructure, storage, compute, analytics, cognitive capabilities, and much more.
Building those services yourself would be a huge investment, meanwhile, cloud service providers sell them in a pay-as-you-go model which gives you control over your budget.
JOURNEY TO THE CLOUD
There is no one-size-fits-all when it comes to cloud migration. Every organization starts from a different place and heads in a little bit different direction.
That said, at a high level, your organization wants to achieve one of two scenarios:
If you have an already existing on-premises solution that you want to migrate to the cloud, your initial focus is often on getting there as soon as possible.
When you are in the cloud, then you start to optimize and embrace its power.
This is the right mindset. It allows you to divide a complex endeavor into phases with measurable outcomes. A complete migration and modernization journey consists of four such phases.
The initial “Cloud Infrastructure Ready” version of your solution won’t utilize the Platform as a Service model at all, although a good optimization here is using a database-as-a-service approach instead of migrating databases to virtual machines.
Once you are “in the cloud”, you will start asking yourself a question, how you can benefit from this rich ecosystem you have just joined.
The initial benefits expected from the cloud service are decreased costs and reduced time to market.
Let me tell you how the PaaS model allows for achieving what is called a cloud-optimized solution.
The PaaS services which can give you quick wins in terms of maintenance and management costs reduction for your solution are managed databases (if you haven’t migrated to them yet), managed storage, managed cache, or managed queues.
Of course, there are no free lunches.
The mentioned services provide APIs (Application Programming Interfaces) and capabilities that allow for migration with minimal changes to your system and without the need to rearchitect, but the migration itself will require effort.
There are migration assistants, but they will not take care of planning and coordination. This will also cause changes in the responsibilities of some people in your organization, which naturally lead to resistance.
You need to take that resistance into account and use it to start a cultural change.
Cultural change is key to reducing your time to market, as you should embrace DevOps practices.
This means changing the way you deliver software to the cloud service, but also the way you operate and monitor software in the cloud. You will want to use insights and analytics services to achieve that.
When you experience the gains from using services provided in the PaaS model, you will want to go further.
This is the moment you should start making business-driven (cost reduction, scale, reliability) decisions to rearchitect your solution into a cloud-native one.
Rearchitecting will allow you to optimize around the most expensive resource of today’s software world – compute.
Going cloud-native and utilizing a managed compute will allow your solution to scale according to demand.
You will also achieve high availability at a much lower cost than if you had to build redundancy around virtual machines.
When you are rearchitecting, you should also consider replacing some homegrown components with industry-standard ones provided by cloud vendors. A typical area to do so is identity.
In general, you should stop and think about every component in your system which you are not considering your intellectual property and is not part of your core business.
If that component has a managed equivalent in the cloud, it is highly likely that costs of using managed version will be lower than maintaining your own (and there are often additional benefits).
Building a new solution goes through a completely different journey. That is because you start in the cloud, and you have no past state to manage. Your focus is on quickly getting your idea in front of stakeholders, validating it, and then iterating toward the final solution.
You should be building your proof of concept with only one goal in mind – “Is the idea valid?”.
This will be an internal thing. You will share only with trusted key people and sometimes use it for demos. It can be ugly and dirty. It shouldn’t contain anything beyond what is needed to validate your idea.
How can PaaS help you in this phase? You should evaluate if there are managed services that directly support your idea.
Do you want to augment some experience with speech to text? Investigate if cognitive services support languages you want to support. Do you want to automate your support line? Check the capabilities of conversational AI services (maybe they support vision as well).
Cloud is full of cutting-edge managed services which can allow you to validate your idea quickly or realize that it’s not feasible.
If you were able to validate your idea successfully, it’s time to build your minimal product.
This is where you should look through your cloud provider PaaS offering and pick all the boring commodity services which will allow you to focus your main effort on getting the key idea behind your product into a production-ready state.
This includes the usual suspects like databases or storage, but should also include those aspects which are crucial to get right like identity, security, etc.
One thing to keep in mind here is that there are still things that are unknown at this stage. You want to delay some decisions which will be hard to change later and are hard to get right now.
For example, if you are unable to estimate the needed scale, a serverless approach will allow you to mitigate that (function as a service is often a good choice for the initial compute approach).
Finally, don’t forget to use insight and analytics services so you can evolve your solution in an informed way.
Your complete solution should be a cloud-native solution.
By evolving it based on production metrics and analysis, you will be able to apply proper compute strategies to different areas.
Thanks to observing user patterns you will employ caching services at the right places.
The data growth patterns will allow you to use relational and non-relational databases where appropriate.
No. There are no silver bullets when it comes to cloud computing.
PaaS does fit, in one way or another, into every step of the cloud journey. It will bring benefits of reduced costs and saved time when compared to other models. But this doesn’t come for free.
When choosing PaaS, you are sacrificing control. Any limits of managed services you are using are within the control of your cloud provider. The same comes for the roadmap as you are just one of multiple clients and cloud provider needs to balance the needs of all.
You are also increasing your dependency on the vendor. Different cloud providers may not provide the same set of services, or they may have different APIs. So, if you really need to avoid dependency on a specific provider (which is a very rare case), your usage of PaaS solutions should be limited.
Last but not least, as you have noticed, there is a plethora of managed services available in the PaaS model. And they are constantly growing. Choosing which one to use is a challenge.
The second challenge is that your solution may have needs that can’t be covered with the PaaS model alone. You may need to keep some parts of your solution on IaaS. You may need to move some parts of your solution to CaaS.
As a final note, here’s the short summary of yours vs. your vendors’ responsibilities in the PaaS model.
I have provided many answers and suggestions here, but for your solution, it might not be enough. If that is the case, there is a dedicated offer that will provide guidance for your cloud journey.
Your company has decided to build a PaaS-based cloud solution and you’ve been tasked with architecting it. You went th...
Recently, I showed you my favorite extensions I use when working on projects in Azure DevOps. As I promised you, I’...