Last time, we started talking about some of the 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 services available for use within Azure 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 Azure will blow you away with cost improvements and efficiencies of scale. Before we really dive into the meat of PaaS, I thinl that it would be good to get a basic understanding of what PaaS is, because I have found there to be a lot of confusion in the marketplace.
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-premisis 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 Azure can provide to help you take our existing web application and reduce maintenance costs while also providing extensibility and elasticity. There are two basic categories of PaaS services within Azure. These categories are my own way of separating all the great PaaS services that Azure provides not official Microsoft terms. The first category I would call 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.
Tiered PaaS Services
There are two major areas of PaaS that Azure has that you can use to replace a single tier of your web application: App Tier and Data Tier services.
- App Services: (Web, API, Mobile, & Logic) - With App Services you have the ability to deploy a specific type of application written in one of the languages mentioned above and you only have to worry about the specifics of the application. You have control over the configuration and deployment of the application, but you won’t have to worry about the underlying VM, OS or installed software components.
- Cloud Services: This is a very similar offering to the App Services, but you as the customer have much more control over not only the deployment, but also what is installed and configured on the VMs that are part of your application. You still have all of the same automated deployment options that you get with App Services, but now Microsoft will only manage the underlying VM and OS, not the installed software components.
Data Tier - Within this area Azure provides quite a few different options to 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, Azure SQL is a Microsoft managed implementation of SQL Server giving multiple options for deploying a relational database with almost all of the features available from all of the different levels of SQL Server. If on the other hand, you need a NoSQL solution, then there are a couple of different options there as well. The first is a Document based NoSQL solution called DocumentDB which can be looked at as a competitor to MongoDB, but is fully managed. The last option to consider is In-Memory NoSQL storage, for which Azure provides a fully managed Redis Cache implementation allowing you to store whatever data you may need in a much low latency environment.
Functional PaaS Services
The second category of PaaS services I call 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.
Media Services - This particular set of services has probably gotten the most attention of any of the PaaS services that we offer within Azure because of where and when it has used. 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 Azure, but you can do encoding so that there are different formats for all of the different options mentioned above. We also provide our own Media Player that you can embed within your application and these are just three of the options that are available and ones that we have used to deliver both the Winter Olympics and the last World Cup along with live streaming of video content.
Azure 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.
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. With this though, 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 service provides a separate layer on top of your API allowing you to add security, documentation and monitoring to your API.
Notification Hubs - One of the favorite things about the ESPN app on my phone is that I do not always have to unlock my phone to get information about my favorite teams or sporting events, because of the notifications that get sent directly to my phone. Implementing this kind of functionality as part of your system can be another headache that you don’t want to deal with and why should you when this is available within Azure as a managed service. Your notifications are not tied to only phones, there are many different options available for the delivery of notifications.
NOTE: There is no possible way that I can provide you with a complete list of every single PaaS service that Azure provides, because there are just too many. 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 services, 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 most definitely will 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 Microsoft worry about everything else, there by 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, you will be tied to Microsoft for your application and should there be a major disaster, it could be extremely hard to move your application to another CSP. This is absolutely true and every customer has to weigh those risks against all of the benefits. I just don’t think that the risk is high enough for most customers.
Microsoft is the clear leader with respect to PaaS, not only because of the number of services that we 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 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 Microsoft manage those services moving forward. Life will definitely be better for both your developers and your operations staff.
In our last article in this series we will look at how Software as a Service (SaaS) can be used to replace entire areas of your enterprise and be a focal point of integration for your developers to take advantage of.