Table of Contents
Introduction to Azure App Services
Azure App Service is an HTTP based service for hosting and running web applications, REST APIs, and mobile back ends on both Windows and Linux based environments. You can develop your applications in your favorite language or framework such as .NET, .NET Core, Java, Ruby, Node.js, PHP, or Python and host, run and scale your applications with ease. Azure App Service gives you some powerful features such as security, load balancing, auto scaling, monitoring and automated management. You can also enjoy its DevOps capabilities such as continuous deployment using Azure DevOps, GitHub, DockerHub and other sources. In terms of cost, you only have to pay for the compute resources you run your apps on and these compute resources are determined by the App Service Plan.
Azure App Service Features
Following are some of the key features of Azure App Service.
Support for multiple languages and frameworks
App Service allows you to host applications written in ASP.NET, ASP.NET Core, Java, Ruby, Node.js, PHP, or Python. You can also run scripts, e.g. PowerShell or executables as background services within App Service.
App Service is available as Platform as a Service (PaaS) which means that you do not need to worry about patching and maintaining the OS, frameworks and runtimes on your production environments. Azure will take care of all the tasks for you so that you can focus on writing your great app.
Scalability and high availability
App Service allows you to host your applications globally on any Microsoft’s datacenter and Azure will make sure that your applications are highly available. You can also scale up or out either manually or automatically.
Support for docker & containers
You can Dockerize your applications and host a custom Windows or Linux container in App Service. You can also use Docker compose to run multi-container apps.
Support for DevOps
You can setup continuous integration and deployment with Azure DevOps, GitHub, BitBucket, Docker Hub, or Azure Container Registry. You can also use Azure PowerShell or CLI to manage your applications in App Service.
Integration with other systems
You can integrate your apps with other enterprise systems and services such as SAP, Salesforce, Facebook, etc. Your apps hosted in App Service can also access on-premises data using Azure Virtual Networks or Hybrid connections.
Security and compliance
App Service is ISO, SOC and PCI complaint. You can also create IP address restrictions to secure your apps hosted in App Service. For user’s authentication, you can use Azure Active Directory, Google, Facebook, Twitter, or Microsoft account.
API and mobile features
If you are building RESTful APIs then App Service provide you CORS support. You can also simplify mobile app development using features such as authentication, offline data sync, push notifications, etc.
Development Tools Integration
You can use dedicated tools available in both Visual Studio and Visual Studio Code to streamline your development, debugging and deployment on App Service.
App Service can host web apps natively on Linux for supported application stacks. It can also run custom Linux containers (also known as Web App for Containers).
You can use App Service to run a code snippet or script on-demand without having to explicitly provision or manage infrastructure.
Overview of Azure App Service Plan
An App Service plan is similar to conventional web hosting plan and it defines a set of compute resources needed for a web app to run. You can create a separate App Service plan for each of your web app or you can use a single App Service plan for multiple web apps. If multiple web apps use the same App Service plan, then all resources are shared between the web apps. App Service plan has following characteristics.
Operating Systems – You can choose the operating system for your app, e.g. Windows, Linux etc.
Region – You can choose the region in which the computing resources will be created for your app, e.g. West Europe, East US etc.
VM Instances – You can choose the number of VM instances required to run your app.
Size of VM Instances – You can choose the size of VM instances, e.g. small, medium or large.
Pricing Tier – You can choose the pricing tier that determines the cost and the number of features available to your app, e.g. Free, Shared, Basic, Standard, Premium etc.
Pricing Tiers of App Service Plan
When we create an App Service plan, we choose a pricing tier that determines what features we will get and how much we pay for those features. The decision to choose the right tier is based on many factors such as the no of web apps you want to deploy or the amount of resources required for your web apps etc. Currently, the pricing tiers are divided in following categories.
The free plan has no impact on the pricing because it is free but it is intended to be used only for development or testing purpose. You can only run a maximum of 10 Web, mobile, or API apps in this plan and these apps run on the same Azure VM as other App Service apps, including the apps of other customers. The CPU quota is allocated to each app and the resources are shared between the apps. There is no option for auto scaling and you cannot use custom domains with this plan. The free plan is limited to 60 CPU minutes per day, and this limit is per app.
The shared plan is quite similar to free plan because your apps will once again share hardware and resources. You can run 100 web apps and you are allocated a 240 CPU minutes per day. One important thing to keep in mind is that each instance of a web app will get its own 240 CPU minutes limit and you will be charged per app not per app service plan. Another benefit of using Shared plan is that you are allowed to use custom domains with your apps.
This tier will give you option to choose from multiple plans such as Basic, Standard, Premium, PremiumV2 and PremiumV3. Each of these plans allow you to run your apps on dedicated VMs with full access to all the resources on those VMs. You are allowed to run as many apps as you want and the higher the tier, the more VM instances are available to you for scale-out.
|Web, mobile, or API apps||Unlimited||Unlimited||Unlimited|
|Disk space||10 GB||50 GB||250 GB|
|Maximum instances||Up to 3||Up to 10||Up to 30|
|Virtual Network connectivity||–||Supported||Supported|
This tier will give you option to choose either Isolated or IsoloatedV2 plans. These plans are designed to run mission critical workloads with maximum scale-out capabilities. You can run apps in dedicated environments deployed into your own virtual network.
How To choose an App Service Plan
As we have so many tiers and plans with different features and pricing options, it is not easy to choose the right plan that meets your application requirements. The following points can help you in making your decision.
- If your building a proof of concept or you don’t want to spend money during development, then you can choose Free plan.
- If you want to deploy a small or mid-level production app on dedicated instances and you need 99.95% SLA, SSL support and custom domains then you can choose Basic plan.
- If you want to deploy a serious production app and you need dedicated instance with features such as auto scale, custom domain and IP based SSL support then you can choose Standard plan.
- If you have a high intensive app that needs lots of computing power or hardware resources, then you can choose Premium plan.
- If you have multiple apps and each app need to scale up or scale out differently than it is better option to put these apps in their own plan.
- If apps need to be in different regions, then you should choose different plans for each app. Apps in the same region can all share the same plan.
Microsoft regularly update Azure App Service features so this document can be referred for the basic understanding. To get latest updates about different plans or features, visit Azure App Service documentation.