Microsoft Azure has definitely made its mark in the cloud services arena. It’s massive arsenal of cloud offerings ensure businesses can easily build, deploy and manage their applications on a global scale while utilizing their regular frameworks and tools.
If you’re looking for effective ways to deploy your applications to the cloud using Microsoft Azure, there are two main contenders: Azure App Service and Azure Cloud Services. In this article, we will look at the features of each of these services and how they stack against each other.
Azure App Service
Azure App Service, earlier called Azure Websites, is a fully managed PaaS (Platform as a Service) where Azure handles the deployment and management of the application. This allows the developer to focus on just developing the app, be it for the web or mobile and for any platform or device.
Azure App Service supports the development of different apps such as:
Web App – Azure Web App is available for Linux and Windows and it allows developers to seamlessly deploy and scale web apps in a variety of languages such as C#, Java, Go, HTML5, Node.js, PHP and Python. It’s also easy to integrate the app with other services without having to manage the underlying infrastructure.
Web App for Containers – With Web App for Containers, Azure lets developers utilize their own Docker formatted container images, deploy and run them on the Azure platform.
Functions App – If its serverless computing that’s required, Azure Functions is what developers will have to use. It enables the creation of serverless functions that can be automatically scaled on demand, and payment is only required for the time when the functions are actually being executed.
API App – This makes it easy for developers to host, build and use APIs written in various languages and also take advantage of features such as connectivity to on-premise resources, Swagger definition support and turnkey API security.
Logic App – This kind of apps enable developers to create workflows that are triggered to execute a certain sequence of steps, where each step invokes an API app to take care of particular functions.
On the plus side, Azure App Service is extremely easy to deploy to and it deploys considerable faster than Azure Cloud Services. The deployment slots are free and it has built in A/B testing features. It’s also possible for developers to combine multiple applications for easy deployment and to save capital. Another advantage is that apps deployed on Azure App Service are easily extendable with extensions from Azure and external providers.
On the down side, developers do not have server access since Azure App Service is a managed platform that handles all the deployment. It’s not possible to access the app configuration files once the app is running. Also, since you can’t install an agent, the developer cannot use all the monitoring tools. Another negative is the limited Windows performance counters and virtual machine sizes and specifications to choose from.
Companies that use Azure App Service include Real Madrid, AccuWeather, Heineken, Absolut, Jet and Hogarth Worldwide.
Azure Cloud Services
Azure Cloud Services was the first Platform as a Service (PaaS) offering from Microsoft. Cloud Services supports the development and deployment of apps that are reliable, scalable, and inexpensive to maintain. Cloud Services allows apps and background services to be easily deployed onto virtual machines since Azure takes care of the server initialization, management, updates, etc.
Azure Cloud Services is available in two roles depending on how it is hosted on the virtual machines.
Web role: It automatically deploys the app and hosts it through Internet Information Services (IIS).
Worker role: It runs the app as a standalone entity and does not use IIS.
Typically, a web role is used to host simple applications, while worker roles are used to host complex background services.
While App Service and Cloud Services are both hosted on virtual machines, Cloud Services allows the developer to have more control over the virtual machines.
In essence, this is a more flexible solution than Azure App Service. It automatically manages the application container and the deployment but still allows developers to have some control over the underlying web servers.
But on the other hand, more control could also mean less ease of use. It’s definitely easier and quicker to get an application deployed through App Service than Cloud Services. So, unless you specifically need the additional control, App Service would be the more feasible choice.
Azure Cloud Services does have quite a few good features though. It allows you to install your own software on the virtual machines that use it, so you can easily access them remotely. It supports a number of languages such as PHP, Python, Ruby, .Net, Node.js and Java. It’s easy to deploy apps and APIs that are both scalable and highly available, but the focus is on apps and not the hardware it runs on.
Like App Service, it provides numerous features like automatic OS upgrades, autoscaling, large scale deployment, integrated monitoring and load balancing and seamless platform switching. But it also provides additional capabilities like custom MSI installations, remote desktop access to underlying servers, the ability to listen to Event Tracing for Windows events and defining and executing specific tasks on startup.
On the cons side, Cloud Services is very slow to deploy to and using the staging slots costs a lot. It’s also not possible to easily combine multiple apps together or change the virtual machine instance size without redeploying the app.
Companies that use Azure Cloud Services are Aviva, Dell, UC Davis, AccuWeather and Milliman.
Azure App Service and Azure Cloud Services are both excellent services to deploy applications seamlessly to the cloud. They both have good features, many of which overlap and it’s certainly so much easier than having to set up virtual machines on your own.
The critical difference is the ability to access the servers through Cloud Services, which isn’t available through App Service. But considering the faster deployment through App Service, perhaps it is the more preferred choice. And you can always utilize Azure WebJobs to run background processes while using App Service.
In the end, the choice to pick one over the other would be a matter of your individual business requirements and what works best for your enterprise.