Introduction
In this blog post we will see what is Azure App Service and it’s features and why do we use it, we can develop an application in any language or framework, such as .NET, .NET Core, Java, Node.js, PHP, or Python. Applications run and scale as per our need with complex architecture on both Windows and Linux-based environments. The App service has added the power of Azure to our application, such as security, load balancing, scaling, and automated management. We can also develop capabilities such as continuous deployment from GitHub, Docker Hub, Azure DevOps, staging environments etc.
Azure App Service Overview
Azure App Service is PaaS (Platform as a Service) offered by the Microsoft Azure that used to develop and deploy an application on Azure. It comes with many features such as auto-scaling, IDE integration, no server maintenance, etc. It also provides multiple deployment slots such as staging and production. We can switch to another slot within a couple of seconds. An Azure App Service is a managed service of Azure that enables us to create web, mobile, logic and API apps very easily in Azure. We can run any number of these apps within a single Azure App service deployment. Our apps are automatically managed by Azure App Service and run in managed VMs isolated from other customers. We can also use built-in auto-scaling feature supported within Azure App Service that automatically increase and decrease the number of VMs based on consumption resources.
Following are the different app types supported by Azure App service
Web Apps
It enables us to deploy our web application without any worry about the infrastructure that is required. In the traditional way of deployment, we need to set up the Server with appropriate OS and IIS versions, and we also need to monitor if the server is up and running.
The Azure Web App Service is removing all these burdens. This service includes the following features
- Support for .NET, .NET Core, PHP, JAVA and Python code
- Built-in support for auto-scaling based on load
- Continuous integration and deployment support with Visual Studio Online, GitHub, and BitBucket
- Support staged deployment
- Support virtual networking and hybrid network
- Provide functionality of WebJobs that used for long running background tasks
Mobile Apps
It enables us to create back-end for mobile applications. In modern mobile apps, apps might run on Android, iOS and in the background, the application will request the back-end for any kind of transaction. This is nearly the same as web services supporting a mobile client. This service provides almost all of the features provided by Web Apps.
Logic Apps
It helps us to create functional workflows by orchestrating tasks and business processes. It simplifies how we can design and build scalable solutions for integration. It also allows us to manage large workflows. For example, Azure logic Apps can be used to send the email notification to admin with Office 365 when user upload invalid file to the application or monitor tweets for a specific subject or word in the statement. There are around 200+ connectors that used to build enterprise integration solution with Logic App, such as functions, Service bus, SQL, Office 365, BizTalk, Azure blob storage etc..
A Logic App workflow starts with a trigger that fires on a specific event or at any scheduled time. When trigger fires, the Logic Apps engine creates the instance of Logic Apps that runs the actions in the workflow. The workflow includes flow controls such as conditional statements, branches, and loops.
API Apps
It helps to deploy Web APIs. We can create and deploy APIs using ASP.net Web API or the equivalent in other languages. This API can be accessed internally (for example an API call from Logic Apps) as well as exposed to the outer world. It supports identity to secure the APIs. It comes with a built-in swagger implementation that helps us to test API.
App Service Scaling
Azure App Service provides two types of scaling and based on our requirement, we can select any one:
- Vertical Scaling (Scale -up)
- Horizontal Scaling (Scale-out)
Scale-up (Vertical scaling)
It means adding more power to your application or VM. In vertical scaling, we have a single instance and we have updated the configuration VM such as CPU, RAM, storage capacity, etc. based on our need. We can either scale-up or scale-down.
Scale-out (Horizontal scaling)
In horizontal scaling, we add more machines (VMs) with the same configuration. Horizontal scaling requires more complicated structure such as load balancer, and we must ensure all resources are in sync. Using this scaling method, we can increase the availability of websites and also, we can create a failover region (setting up resource which hosted in a different region). We can either scale-up or scale-down based on the traffic on the web app.
App Service Pricing
Azure App service brings everything together that we require, create websites, web APIs, and mobile back-end for any platform or device. It provides a very cheap rate and enables us to select any plan as per requirement. The free and shared plans provide options to test our application within our budget. A dedicated Virtual Machine plan is also available. It contains three sub-categories: Basic, Standard, and Premium. The isolated plan hosts our application in a private and dedicated Azure environment.