Microsoft Azure provides multiple ways to deploy your applications to the Azure cloud. Azure App Services and Cloud Services are the two most popular, and easiest, ways to deploy your applications. They both support web applications and background service type applications. In this article, we will provide a comparison of Azure App services versus Cloud Services, along with a quick overview of each.
Microsoft Azure App Services are a platform as a service (PaaS) offering. Azure runs App Services on a fully managed set of virtual machines in either a dedicated or shared mode, based on your App Service Plan. There are 4 types of App Services:
- Web App – used for hosting websites and web applications (previously Azure Websites)
- API App – used for hosting the RESTful APIs
- Logic App – used for business process automation, system integration and sharing data across clouds
- Mobile App – used for hosting mobile app back ends (previously delivered by Azure Mobile services)
- Very easy to deploy to, deploys much faster than Cloud Services
- Deployment slots are free
- Built-in A/B testing features
- Can combine multiple applications together to save money
- Extendable with Site Extensions
- No server access
- Cannot use all monitoring tools because you can’t install an agent
- Limited Windows performance counters
- Limited VM sizes and specs to pick from
App Services WebJobs
Azure WebJobs provide an easy way to run background processes. These can be configured to run on a schedule, on demand or continuously. For example, Stackify’s Azure monitoring agent runs continuously in the background for every Azure App Service instance that you have. There is no additional cost associated with running WebJobs. You may have to scale your App Service Plan up or out a little to handle the extra resources utilized by the WebJobs.
- Easy to deploy
- No cost beyond App Service Plan costs
- Easy way to setup scheduled tasks
- Apps must work in a limited permission sandboxed environment
Cloud Services: Web & Worker Roles
Cloud services were the very first Microsoft Azure Platform as a service (PaaS) offering. They provide the ability to deploy web apps (web roles) and background services (worker roles) onto Azure virtual machines. Azure handles all of the initialization of the servers, deployment to them, Windows Updates, etc.
Web Roles are used to host web applications. Worker Roles are used to host background services, similar to Windows Services.
- Can pick from several VM sizes
- Full server administrator access
- Can install a wide array of software on the server itself
- Full access to Windows performance counters and ETW
- Very slow to deploy to
- Staging slots cost money to use
- Can’t easily combine multiple apps together
- Can’t change the VM instance size without redeploying
The table below compares common App Services and Cloud Services features:
|Azure Web Apps||Cloud Services|
|Supported Platforms||Support for ASP.NET, Node.js, Java, PHP, or Python||Support for Java, Node.js, PHP, Python, .NET and Ruby|
|DevOps||Supports CI, CD using Visual Studio Team Services, GitHub or BitBucket.||Supports CI, CD using Visual Studio Team Services, GitHub or BitBucket.|
|Support for Multi-Tier architecture||Yes||Yes|
|Swap build between staging and production environment||Yes (free)||Yes (additional cost)|
|Access to server desktop||No control||Some control|
|Webserver maintenance||Not required, Azure does OS patching and other activities.||Not required, Azure does OS patching and other activities.|
|Visual studio integration||Yes||Yes|
|Access to other services like storage, service bus||Yes||Yes|
|Configure Start-Up tasks||No (must use WebJob)||Yes|
|Deployment time||Fast||Very Slow|
|Multiple applications on same servers||Yes||No|
|Scale up without redeploy||Yes||No|
Both App Services and Cloud Services provide a lot of good features and are a simple way to deploy your applications to the Microsoft Azure cloud. They are definitely much easier than setting up your own virtual machines! The primary differentiating factor is Cloud Services offers access to the underlying Azure VMs, and App Services do not.
In my opinion, I prefer App Services for these specific reasons:
- Combine multiple applications together to save money
- Free deployment slots
- Faster deployments
Stackify Retrace works perfectly for monitoring App Services and Cloud Services.
Special thanks to Sanjeev Assudani who helped contribute to this article.
- Serilog Tutorial for .NET Logging: 16 Best Practices and Tips - August 15, 2018
- Retrace Log Management: Logs, Errors and Code Level Performance - April 25, 2018
- 5 Awesome Retrace Logging & Error Tracking Features - March 14, 2018
- Developer Things #8: How to Develop More Secure Software with Steve Feldman - February 8, 2018
- 8 Things to Monitor During a Software Deployment - February 2, 2018