Recently, one of our financial service clients came to us looking for a solution to their application development conundrum. The client was attempting to build an application from the ground up to help manage digital assets using machine learning.
Due to the unpredictable nature of the app’s database and virtual machine (VM) requirements on the backend, they had decided to build the entire application using an Infrastructure-as-a-Service (IaaS) model.
But due to the nature of this approach, the project looked like it would take months longer than anticipated. This led the client to look for another way to develop their application.
We began by assessing the three cloud service models to see what could be done to reduce development time. Ultimately, we realized a hybrid cloud solution on Microsoft Azure made the most sense.
Software-as-a-Service: Sacrificing Control for Convenience
Software-as-a-Service, known as SaaS, has taken the world by storm. But statistically, you already know this: 80% of US enterprise application users prefer cloud-hosted SaaS apps for organization and communication purposes.
For this reason – as well as the fact that this model is not generally suited to app/dev – we’re not going to spend a lot of time talking about SaaS. The critical thing to know is that SaaS applications stacks, from the Office 365 productivity suite to Slack and Dropbox, are completely managed by a cloud provider. This means that you as a user have very limited control over the application infrastructure – you can’t change the source code, let alone alter the operating system. This provides you with the highest level of convenience, with the least amount of control.
For organizations looking to build their own applications or manage custom workloads, a different approach is required.
Infrastructure-as-a-Service: We Take Care of the Hardware, You Manage the Rest
Of the three cloud services, Infrastructure-as-a-Service (IaaS) offers the most flexibility while also requiring the most work on your part. In an IaaS model, the infrastructure elements of a traditional on-premises datacenter are hosted and managed by a cloud provider. These include storage, network and server hardware, as well as virtualization management.
The IaaS platform is accessed from any location with an Internet connection, from which point it is up to you to deploy all remaining elements of your application stack. This includes creating VMs and installing operating systems, deploying databases, and installing your enterprise workloads.
IaaS is perfect for hosting dynamic or experimental workloads that change often or unexpectedly. It is also ideal for workloads that don’t fit into existing development platforms. For example, if you are developing a new software product, it may be cost-effective to host and test the product in an IaaS environment. Once tested and stable, the product could be moved to a Platform or Software-as-a-Service model. Many companies will not keep a stable, refined application in an IaaS environment due to the level of support required to maintain the underlying infrastructure.
Platform-as-a-Service: The Fastest Route to Application Development
Think of Platform-as-a-Service (PaaS) as a happy middle ground between SaaS and IaaS: you get to retain control over your applications and data without worrying about anything else. Unlike IaaS, all of the operating system, database and runtime details are taken care of by your cloud service provider, allowing you to focus all of your resources on building best-in-class applications. Conversely, PaaS gives you total control over your applications and data, allowing you to develop applications rather than simply run them, as is the case with SaaS.
PaaS has many advantages. One example is running SharePoint on a SQL PaaS. In this scenario, Microsoft Azure manages all RAM and database requirements automatically, scaling seamlessly with your requirements.
SharePoint is a prime example of effective public cloud PaaS application development because it was engineered specifically for the Azure public cloud. For applications that have non-standard or shifting VM, operating system or database requirements, an IaaS environment might be the right choice.
Is a Hybrid Cloud Service Model Best?
As you may have guessed, the answer to this question is often to take a hybrid cloud approach.
Fortunately for our client, we were able to help them find a solution to their app/dev conundrum. It turned out that, while their backend needed to be hosted in an IaaS environment, their user-facing workloads were relatively stable and would not require changes to databases, operating system or VMs. Therefore, we were able to host the frontend in a PaaS ecosystem. This hybrid cloud architecture freed their IT team from managing much of the underlying infrastructure, enabling them to meet their deadlines within budget.