The cloud is an internet provided set of computer resources and services offered by third parties. The cloud allows a company to rent computing services on an as-needed basis instead of buying physical computers.
Microsoft is one of many companies providing cloud services. Microsoft’s cloud offering is called Azure. So if you are talking about Azure in Information Technology circles, you are referencing Microsoft’s cloud offering.
PaaS is an acronym for Platform as a Service. Cloud providers are constantly innovating and looking for ways to solve customer problems. There are many challenges in the world of Information Technology infrastructure. Each of the As a Service offerings removes a level of responsibility from the customer.
PaaS takes the platform off your plate.
Applications generally have multiple technology platforms needed to run them. Platforms like operating systems and databases are versioned and need to be upgraded and patched with security fixes and other optimizations. PaaS places the responsibility for this maintenance on the Cloud provider.
Lucas Carlson describes PaaS as a set of services built to support application systems. He states, “For Platform-as-a-Service, the atomic unit is applications. What is an application? It’s a system. It’s a combination of code and all the services that communicate with that code at any point in time. It is not a resource.”
- Programming for PaaS, Oreilly & Associates
A PaaS service should require very little configuration to be usable. PaaS should be useful “out-of-the-box” and does not need a team of I.T. analysts to operate. The Cloud provider operates PaaS infrastructure services and maintains the advertised service levels.
Beyond not having to operate a data center or manage VM operating systems, PaaS has high scalability potential and supports microservices architectures with ease. Azure PaaS allows you to configure conditions to scale up or down based on system traffic or utilization metrics.
Azure provides tools and service to support the entire application lifecycle, including project management, analysis, design, development, testing and deployment. These tools are considered part of the PaaS offering and support the Dev/Ops, and continuous deployment workflow.
Microsoft lists the advantages of PaaS as follows:
See - What is PaaS
Azure PaaS offers many services and the list is continually growing. Some of the commonly Azure services include:
Applications services are platforms that host programs. They allow a developer to deploy a program and run it in a runtime container, which is an environment with the technologies needed to execute the program. The supported application service types are:
Databases are used by most applications to store and retrieve data. An e-commerce web site would store order data and customer data in a database for example. Azure supports a number of database as a service technologies for both relational and no-SQL. Including:
Storage allows you to store files and simple data.
Redis is an in memory key/value pair cache database. Per its name, it is a very high speed solution for caching application data.
Azure search is Microsoft's PaaS search solution. It has been renamed from "Azure Search" to reflect its machine learning capabilities.
Identity and access management that can be integrated into applications to provide secure access.
Power Bi is a analytics tool to create data visualizations and insights.
Key Vault is a technology to store security keys.
API Management is service to help manage APIs. It allows you to throttle and rate limit APIs, provide API documentation and monitor APIs.
Container clusters can be hosted as PaaS services. Containers (Docker) act like mini Virtual Machines (VMs), partially virtualized environments that can be started quickly and provide an isolation layer.
Azure function apps allow developers to run code in the cloud with minimal infrastructure configuration or operation. Azure functions are meant to handle micro-service sized workloads and spin up and down quickly.
PaaS supports back-end services and web based applications. Rich desktop client applications cannot be hosted on PaaS (not yet anyway).
Gaming as a Service (see Google Stadia) is a strong example of running rich client applications in the cloud, and this technology is gaining momentum. PC games are very rich desktop applications and opens the door to running any desktop application in the cloud.
There are a lot of as a service acronyms. These service offerings generally work along a continuum of flexibility to speed of delivery and ease of operation.
Infrastructure as a service provides the highest level of flexibility because it operates at the VM level. IaaS is the quickest path to move from on prem servers to cloud. It allows you to lift and shift; migrate data center servers as-is into a virtual version of the physical topology.
IaaS also gives you a high degree of flexibility. While there are many technologies offered as Azure PaaS services these represent maybe 1% of the tools and technologies that can be run on a Windows or Linux VM.
With PaaS, applications are removed from the operating system and deal with infrastructure at a capability level.
If you have a NodeJS application for example, instead of deploying a Windows or Linux VM and installing NodeJS and Npm on it to host your app, you provision an Azure Web Application Service running NodeJS.
Azure offers a set of 7 NodeJS versions (as of this writing) to select as your runtime environment, Node 12LTS, Node 10LTS, Node 10.14, Node 10.10, Node 10.6, Node 10.1 and Node 10.0. You’ll want to ensure your solution is built for one of these NodeJS versions to take advantage of Azure Web App Services.
The following screen shot shows the configuration fields to create an Azure PaaS Web App Service.
The underlying operating system is a selection choice, Linux or Windows, but this is as much of the OS that you’ll configure. A PaaS application is not expected to access the underlying OS. Web App Services are billed based on a selected reserved capacity known as the App Service Plan, measured in cores and memory.
An Azure hosted solution can seamlessly span across these as a service offerings. An IaaS Windows 2016 Virtual Machine (VM) can also connect to a PaaS Azure SQL database. If you choose to run your application on a VM you need to make sure to set up an OS update schedule, monitoring and alerts to watch for problems, backups and security hardening of the operating system. You get a lot of control with a VM, but additional responsibility.
Function as a service is very similar to PaaS but is slightly more abstracted. FaaS is designed for computational and processing tasks. Azure functions start up when needed, perform a function and spin down.
They are billed based on usage. FaaS is referred to as serverless and is a natural evolution of PaaS. Instead of paying for reserved capacity, FaaS services scale up and down based on usage and are billed based on traffic. For small workloads this can be very cost effective.
Software as a service is a model where the entire application is operated by a cloud provider or third party. The web version of Office 365 is a good example of Azure SaaS.
Flexibility is lowest with SaaS. SaaS solution providers simplify to ‘one size fits all’ model as much as possible and then allow for configurability that appeals to the largest segments of their market. SaaS applications like Salesforce have managed to balance a generic model with a highly configurable solution.
Azure offers a multitude of ways to run docker container enabled solutions. Azure Docker is a post unto itself, but within the context of Azure PaaS, Web App Services can run Docker containers. Docker is a good architectural choice that marries the benefits of PaaS and Containers.
Azure PaaS application services offer a limited set of runtimes. Using Docker opens up a much wider technology stack and gives your solution broader portability.
Serverless seems to be the way of the future. Function as a service is really a service offering within Azure PaaS, it allows you to run microservices sized web services that provide one function in an application. Using FaaS implies using PaaS, you are not really choosing one over the other.
However, you might choose Azure Functions over Web App services if you are needing short lived services that quickly serve a need and then terminate. You are not paying for reserved (and possibly unused) capacity with FaaS, this can be very cost effective, but you will need to design your application to work in this model as Azure functions are meant to run and complete in short amounts of time.
Every cloud platform offers services like storage and security that are native to the platform. These services come with APIs that applications integrate with to perform useful functions. Platform APIs are cloud provider specific so integrating your application with them reduces its portability.
Application services also support a limited set of runtime environments. These runtimes also limit application portability. Which runtimes give you the most portability, NodeJS, Python, PHP? Switching languages is not a simple change for developers. It takes years to build up expert competency in languages and their libraries and toolsets.
Azure application services have expanded beyond the .Net framework to include mainstream runtimes like NodeJS and PHP. This is a positive move by Microsoft.
“This has allowed expansion into different languages and technologies, taking Azure from a non-portable PaaS more into the portable realm, which requires no changes to the code in order for it to run.”
- Programming for PaaS, Oreilly & Associates
Remember that Azure allows you to run docker containers in both PaaS and FaaS. This enables a greater level of portability.
Azure PaaS is the Microsoft Cloud Computing “Platform as a Service” offering. It provides developers with abstracted runtime environments and liberates companies from provisioning and maintaining (upgrading, monitoring and backing up) virtual machines.
“Programming for Paas”, Lucas Carlson, Oreilly and Associates. 2013
“Practical Azure Applications”, Thurupathan Vijayakumar, APress, 2017