There are many different ways to host your web applications in Azure. The two most popular are Azure App Services (PaaS) and Azure VMs (IaaS). Whenever hosting a new application, my preference always strongly leans towards App Services. Here a three reasons why.
When using Azure virtual machines, it is entirely your responsibility to manage deployments. This means you must implement a deployment scheme with Microsoft Web Deploy, install a release management solution like Octopus Deploy, or do the famous copy and paste approach :). Additionally this makes permissions and security a concerns.
With Azure App Services, you get all of this out of the box… and more!
Not only can you securely deploy your web app with a deployment profile, you also have the ability to implement blue green deployments. The best part is you get all this functionality for free.
The deployment slot feature enables you to deploy you web app to an separate location with a different URL. This allows you to test your changes without impacting your production application. Once you are satisfied with your changes, you can perform a “swap” with the click of a button. In the case you want to roll your changes back, another swap will do the trick.
There are two approaches to give your applications more fire power. Scaling up and scaling out. Scaling up means improving the hardware your application runs on. Increasing processing power, adding RAM, or updating storage hardware are all examples of scaling up. Scaling out is essentially adding more instances of your application. In order to effectively scale out, it is important to be able to easily spin up (and down) new instances of your application and load balance across all active nodes.
Both horizontal and vertical scaling are important. Improving hardware is always needed but of course it has its limits. Spreading requests across multiple nodes helps accommodate for load but it is not always trivial to setup. Again Azure App Services has us covered as both of these features are provided by app services out of the box.
No OS Maintenance
Lastly using app services eliminates the need to perform OS level maintenance. This includes installing OS updates, managing security, etc. With Azure virtual machines, hardware concerns such as managing server racks, networking, etc is all taken care of however, it is your responsibility to manage everything that runs on the Azure hardware.
I have been using Azure App Services recently and really enjoy taking advantage of all the features it comes with. There will be cases where using Azure VMs is required however, it will always come at the cost of losing these out of the box features. It is a balance of pros and cons with every situation being a little different.