What is a web app in App Service?
In App Service, a web app is the compute resources that Azure provides for hosting a website or web application.
The compute resources may be on shared or dedicated virtual machines (VMs), depending on the pricing tier that you choose. Your application code runs in a managed VM that is isolated from other customers.
Your code can be in any language or framework that is supported by Azure App Service, such as ASP.NET, Node.js, Java, PHP, or Python. You can also run scripts that use PowerShell and other scripting languages in a web app.
In addition, a web app can take advantage of features offered by API Apps (such as CORS support) and Mobile Apps (such as push notifications).
The following table compares the capabilities of App Service, Cloud Services, Virtual Machines, and Service Fabric to help you make the best choice. For current information about the SLA for each option, see Azure Service Level Agreements.
|Feature||App Service (web apps)||Cloud Services (web roles)||Virtual Machines||Service Fabric||Notes|
|Near-instant deployment||X||X||Deploying an application or an application update to a Cloud Service, or creating a VM, takes several minutes at least; deploying an application to a web app takes seconds.|
|Scale up to larger machines without redeploy||X||X|
|Web server instances share content and configuration, which means you don’t have to redeploy or reconfigure as you scale.||X||X|
|Multiple deployment environments (production and staging)||X||X||X||Service Fabric allows you to have multiple environments for your apps or to deploy different versions of your app side-by-side.|
|Automatic OS update management||X||X||Automatic OS updates are planned for a future Service Fabric release.|
|Seamless platform switching (easily move between 32 bit and 64 bit)||X||X|
|Deploy code with GIT, FTP||X||X|
|Deploy code with Web Deploy||X||X||Cloud Services supports the use of Web Deploy to deploy updates to individual role instances. However, you can’t use it for initial deployment of a role, and if you use Web Deploy for an update you have to deploy separately to each instance of a role. Multiple instances are required in order to qualify for the Cloud Service SLA for production environments.|
|Access to services like Service Bus, Storage, SQL Database||X||X||X||X|
|Host web or web services tier of a multi-tier architecture||X||X||X||X|
|Host middle tier of a multi-tier architecture||X||X||X||X||App Service web apps can easily host a REST API middle tier, and the WebJobs feature can host background processing jobs. You can run WebJobs in a dedicated website to achieve independent scalability for the tier. The preview API apps feature provides even more features for hosting REST services.|
|Integrated MySQL-as-a-service support||X||X||X||Cloud Services can integrate MySQL-as-a-service through ClearDB’s offerings, but not as part of the Azure Portal workflow.|
|Support for ASP.NET, classic ASP, Node.js, PHP, Python||X||X||X||X||Service Fabric supports the creation of a web front-end using ASP.NET 5 or you can deploy any type of application (Node.js, Java, etc) as a guest executable.|
|Scale out to multiple instances without redeploy||X||X||X||X||Virtual Machines can scale out to multiple instances, but the services running on them must be written to handle this scale-out. You have to configure a load balancer to route requests across the machines, and create an Affinity Group to prevent simultaneous restarts of all instances due to maintenance or hardware failures.|
|Support for SSL||X||X||X||X||For App Service web apps, SSL for custom domain names is only supported for Basic and Standard mode. For information about using SSL with web apps, see Configuring an SSL certificate for an Azure Website.|
|Visual Studio integration||X||X||X||X|
|Deploy code with TFS||X||X||X||X|
|Network isolation with Azure Virtual Network||X||X||X||X||See also Azure Websites Virtual Network Integration|
|Support for Azure Traffic Manager||X||X||X||X|
|Integrated Endpoint Monitoring||X||X||X|
|Remote desktop access to servers||X||X||X|
|Install any custom MSI||X||X||X||Service Fabric allows you to host any executable file as a guest executable or you can install any app on the VMs.|
|Ability to define/execute start-up tasks||X||X||X|
|Can listen to ETW events||X||X||X|
Scenarios and recommendations
Here are some common application scenarios with recommendations as to which Azure web hosting option might be most appropriate for each.
- I need a web front end with background processing and database backend to run business applications integrated with on-premises assets.
- I need a reliable way to host my corporate website that scales well and offers global reach.
- I have an IIS6 application running on Windows Server 2003.
- I’m a small business owner, and I need an inexpensive way to host my site but with future growth in mind.
- I’m a web or graphic designer, and I want to design and build web sites for my customers.
- I’m migrating my multi-tier application with a web front-end to the Cloud.
- My application depends on highly customized Windows or Linux environments and I want to move it to the cloud.
- My site uses open source software, and I want to host it in Azure.
- I have a line-of-business application that needs to connect to the corporate network.
- I want to host a REST API or web service for mobile clients.
App Service Plans & Pricing
App Service plans define:
- Region (West US, East US, etc.)
- Scale count (one, two, three instances, etc.)
- Instance size (Small, Medium, Large)
- SKU (Free, Shared, Basic, Standard, Premium)
Web Apps, Mobile Apps, API Apps, Function Apps (or Functions), in Azure App Service all run in an App Service plan. Apps in the same subscription, and region can share an App Service plan.
All applications assigned to an App Service plan share the resources defined by it. This sharing saves money when hosting multiple apps in a single App Service plan.
Your App Service plan can scale from Free and Shared SKUs to Basic, Standard, and Premium SKUs giving you access to more resources and features along the way.
An app in App Service can be associated with only one App Service plan at any given time.
Both apps and plans are contained in a resource group. A resource group serves as the lifecycle boundary for every resource that’s within it. You can use resource groups to manage all the pieces of an application together.
Because a single resource group can have multiple App Service plans, you can allocate different apps to different physical resources.
For example, you can separate resources among dev, test, and production environments. Having separate environments for production and dev/test lets you isolate resources. In this way, load testing against a new version of your apps does not compete for the same resources as your production apps, which are serving real customers.
When you have multiple plans in a single resource group, you can also define an application that spans geographical regions.
For example, a highly available app running in two regions includes at least two plans, one for each region, and one app associated with each plan. In such a situation, all the copies of the app are then contained in a single resource group. Having a resource group with multiple plans and multiple apps makes it easy to manage, control, and view the health of the application.