Moving to a public cloud like Microsoft’s Azure platform affords businesses opportunities to explore and adopt a wide range of new technologies, e.g. machine learning or a distributed NoSQL database platform, without making heavy long-term capital investments. Public clouds offer a choice of deployment strategies: Virtual Machines (VMs) and virtual networking can be deployed in an Infrastructure-as-a-Service (IaaS) solution, or many of these technologies can be purchased in the form of Platform-as-a-Service (PaaS) offerings.
Whether or not to choose PaaS over a more traditional IaaS depends on several factors discussed below.
Benefits of IaaS vs. Benefits of PaaS
When operating an IaaS environment, users possess nearly full control of the virtual infrastructure and can largely configure settings to suit their needs. Along with allowing businesses a relatively low-risk and easy-to-perform initial foray into the public cloud platform, IaaS environments are well-suited for businesses that fit a few other models, including those using legacy technologies or ISVs needing to test their products for real-world use.
In many cases, SaaS or PaaS options are either unavailable or not as feature-rich as traditional offerings. Therefore, workloads that rely on third party applications are normally good candidates to migrate into IaaS environments. Likewise, if a business is deploying into Microsoft Azure and relies on MS SQL for databases, some older tools (e.g. SQL CLR) that are not supported in the Azure SQL PaaS offering may inhibit migrating into that platform without significant re-architecting.
This is symptomatic of the majority of PaaS offerings; some functionality—especially older or rarely used functions—is missing and can prove to be a significant hurdle for businesses that utilize those functions. For software development and publishing businesses, IaaS systems oftentimes work best to replicate real-world usage and offer the ability to access the infrastructure at an operating system level, which is helpful for debugging.
When operating a PaaS environment, businesses that have strong development or DevOps teams can adapt relatively easily to the “infrastructure-as-code” paradigm and, therefore, not require a substantial IT staff to manage their infrastructure. Additionally, developing for PaaS services presents a single, static, web-based platform from which to work. For businesses with many developers working in multiple geographies on the same project, PaaS is ideal. Scaling out workloads over multiple regions is incredibly easy with PaaS offerings because underlying code can be simply deployed to a PaaS service in a separate region. Similarly, businesses with global clients can expand quickly to meet demand.
IaaS Cloud Migration vs. PaaS Cloud Migration
Migrating to IaaS enables system administrators to replicate their on-premise environment exactly so long as they are using modern operating systems and development technologies. For this reason, many businesses perform a “lift and shift” migration into an IaaS environment when moving workloads into the public cloud, meaning no re-architecting or re-platforming is necessary.
Generally speaking, migrating to PaaS is a great choice for businesses that utilize modern versions of development languages and/or database technologies, so long as the use case makes economic sense (see Cost Considerations section below). Migrating into PaaS services is becoming easier every day as cloud providers like Microsoft Azure build automated tools to assess workloads and assist in exporting the necessary files and data for a quick and streamlined migration. In cases where re-architecting or re-platforming is necessary, these tools provide details on what will need to be remediated and suggest strategies to accomplish the remediation.
IaaS in Azure vs. PaaS in Azure
Azure offers many options for IaaS environments, but all generally fall into the three categories: VMs, virtual networking, and virtual storage. Azure’s VM options include multiple Windows Server images (2012, 2012R2 and 2016) with multiple versions of SQL pre-installed and pre-configured and multiple Linux images (RedHat and Ubuntu) created by Microsoft as well as a large number of 3rd party created Linux images.
Additionally, VMs can be created in Scale Sets, which automates deploying replica VMs of a given image in a load balanced pool to meet demand throughout a given cycle. On the networking side, there are multiple load balancing and firewall options that can be used individually or in tandem to best fit the environment needs. Storage options include tiered mechanical and SSD disks for VMs, block blob storage for applications, and file shares that can be accessed from anywhere.
Azure also has many PaaS offerings, but the most popular offerings include App Services (e.g. serverless IIS or Apache-based web services) and serverless databases (e.g. SQL, MySQL, PostgreSQL, MariaDB and CosmosDB). Additional services include a basic Active Directory service, PowerBI, Machine Learning tools, Event Hub, and Data Factory. All services are analogous to traditional services that can be installed and configured on a server, but PaaS versions are scaled with much less effort comparably.
IaaS Costs vs. PaaS Costs
A decision about a cloud strategy can oftentimes boil down to cost differences. For businesses that require large, high-performance infrastructure footprints (heavily used web services or databases) will usually find that migrating to PaaS offerings can be far more expensive than utilizing IaaS.
Conversely, smaller infrastructure footprints can be deployed in a very cost-effective way using PaaS. This is especially true for those running a small number of SQL servers as licensing costs go away when using the PaaS service.
As costs are billed as a utility model, public cloud platforms like Azure enable businesses to experiment with new technologies without needing to purchase hardware or licenses. For this reason, migrating into Azure in a “lift and shift” manner does not lock business into an IaaS-only environment. Experimenting with PaaS services outside of production systems gives teams an idea of whether migrating production workloads to PaaS services is the right choice. Limitations can be understood and designed around, and as familiarity with PaaS offerings grows, teams focus on projects that enhance the environment.