In the previous article, we talked about some of the Infrastructure as a Service (IaaS) based strategies and services that you might want to think about when migrating one or more of your systems to “The Cloud”. Even when moving a system pretty much as-is, there are still some pretty straight forward IaaS based ways available within your chosen Cloud Service Provider (CSP) to reduce cost and provide efficiencies and performance improvements over keeping your system on-premises.
Now lets talk about Platform as a Service (PaaS) possibilities, because this is really where the fun begins and where your CSP will blow you away with cost improvements and efficiencies of scale. Before we talk about the different types of PaaS services that can be leveraged with respect to our web application, let’s first get a basic understanding of what PaaS is, because I have found there to be a lot of confusion amongst customers that I have spoken with.
As defined in Wikipedia: Platform as a service (PaaS) is a category of cloud computing services that provides a platform allowing customers to develop, run and manage Web applications without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app.
What this says to me is that PaaS can provide you with a number of pre-built and ready to use building blocks of functionality that can be leveraged within your web application to help speed the delivery of your application to your users while also reducing the administrative and operational costs to maintain your application.
Use Case Reminder
In the previous article, we had a web application that we wanted to move into “The Cloud”. This is a heavily used web application that has multiple tiers and requires redundancy and resiliency at each of those tiers. Let’s assume now that the web application has in fact been moved using as many of the IaaS based services as we could. So we have a three tiered architecture that looks very similar to how it was deployed within your on-premise environment, but now it takes advantage of services like Auto Scaling so that a more minimal architecture can be leveraged to reduce costs.
Re-architecting for PaaS
With the definition as a base, let’s talk about the different services that your CSP can provide to help you take our existing web application and reduce maintenance costs while also providing extensibility, elasticity, and ease of management. There are two basic categories of PaaS services within CSPs. These categories are my own way of separating all the great PaaS services that are provided not official terms from any one CSP.
The first category I am calling tiered services, meaning that they can replace a full tier of our web application while still allowing you to build your application in the same way that you normally would if you were building and managing each tier yourself. The second category I am calling functional services, meaning that these services can be used to take away the need for building or integrating a piece of functionality within your web application.
Tiered PaaS Services
There are two major areas of PaaS that the major CSPs have that you can use to replace a single tier of your web application: App Tier and Data Tier services.
EXAMPLE: Take our web application and focus on the Web and Business Logic tiers and have them deploy them through AWS Elastic Beanstalk or into Azure App Services. In AWS, your tiers are still deployed into IaaS based services that you are able to see and modify, but AWS is now managing things like OS patching and updates to your application level software as well as making sure that all the pieces are talking to one another and have the right configurations for Elasticity and Health Monitoring.
In the case of Azure, you would define ahead of time what level of service you want to use and then deploy the code. Azure abstracts away all the underlying architecture and manages the OS patching, updates to your application level software and makes sure that all the pieces are talking to one another. However, it is seen as a complete black box deployment with you not able to see the underlying VMs, Load Balancers, etc. Afterward, you would configure the service for things like Elasticity and Health Monitoring.
Data Tier – Within this area the CSPs provide a number of different options , called DBaaS, that you can leverage to replace your data tier while still providing either Relational or NoSQL based data storage and allowing you to focus on only what your application needs. As you would expect, there are many different options for relational databases that are supported within the different CSPs. Some of the options that I have seen are: SQL Server, Oracle, MySQL, PostGreSQL among others. Some of the CSPs have even created their own versions of one or more of the popular Open Source options. Each of the CSPs also provide a number of NoSQL options, such as Document based databases that are MongoDB supported as well as Graph, Tabular and In-Memory Key/Value pair based databases like Redis Cache.
In each case, the service is a fully managed deployment of the database requiring you to only worry about the database and the data within. All of the infrastructure and corresponding OS and software is managed by the CSP.
Functional PaaS Services
Within the scope of this category of PaaS services, each CSP provide their own options, but there is definitely a lot of overlap and some that are commonly used by customers.
Media Services – This particular set of services has probably gotten the most attention of any of the PaaS services that are offered by CSPs. Let’s say you have a media library that you are providing as part of your application, but you only have a single set of videos in a single resolution, but you need to make that entire library available for anyone who might want it no matter where they are or what kind of device they have. That is where Media Services comes into play, because you can not only manage your library through your CSP, but you can do encoding so that there are different formats for all of the different options mentioned above.
Full Text Search – With this particular service, you have the ability to incorporate a fully managed search engine that is built on top of one of the most popular open source search products on the market, Elastic Search. With this service, you can define any document type that you want from within your application and make that index searchable from within your application. There are a lot of features and configuration capabilities available with this as well and it is fully managed by the CSP.
API Management – This is a very particular type of service that focuses on applications that have some kind of Web based API (SOAP/REST) as part of their application. However, with the huge influx of mobile applications, this architectural model has become more and more popular. When implementing APIs as a major part of your application or solution, there can be a lot of additional complications, because your APIs are now out in the public domain and you may want to provide access to them, but only some of them and then only to certain people. The API Management services provide a separate layer on top of your API allowing you to add security, documentation and monitoring to your API.
Event Messaging – As applications continue to grow and expand, the micro services architectural pattern starts to get leveraged more and more. In these situations, event messaging becomes a very important component of your solutions, especially if you are going to be collecting data from a large number of devices like in a IoT based solution. All of the CSPs provide multiple options for you to send small data packets between different services and they also provide them in both a standard Pub/Sub model as well as Topics that provide a multi-sub model like would be available in a Service Bus.
NOTE: There is no possible way that I can provide you with a complete list of every single PaaS service that your preferred CSP provides, because there are just too many and the list is constantly changing. So instead, I chose to focus on the most commonly used services and the ones that would most likely be leveraged within the web application defined in the Use Case above.
Why Use PaaS?
For almost all of these service types, I think that it is pretty obvious why you would want to go down the route of re-architecting your application to use one or more of them. To start with, there will most differently be a huge reduction in cost and time needed to manage and maintain the resources needed for each tier or function within your application. Now you can allow your development team to focus on the development and deployment of code and let your CSP worry about everything else, thereby also providing a greater value for your user base.
There is only one drawback that I hear from customers when talking about the use of PaaS services and that is that you will be tied to your chosen CSP and in some cases that will be true, but not all. Should there be a major disaster, it could be extremely hard to move your application to another CSP as you might be using proprietary configurations or standards. Every customer has to weigh these risks against all of the possible benefits.
In my humble opinion, Microsoft is the clear leader with respect to PaaS, not only because of the number of services that they provide, but also because of the quality of them and how they can help everyone from a startup to an enterprise class company succeed. That being said, there are a lot of different PaaS options within the different CSPs and each one should be evaluated so that you can get a good understanding of whether or not the functionality they provide will fit well within your application. Once the evaluation is done, it is just the matter of investing the time to modify your application and then you can sit back and let your CSP manage those services moving forward. Life will definitely be better for both your developers and your operations staff.
NOTE: In addition to the information that I have provided above, if you would like to dive deeper into Application Migration and the different options available to you, please take a look at the article that I previously where I just focus on the application migration/modernization story: Cloud Application Modernization