Azure App Services provides the platform to build and deploy web, mobile or integration applications. We can build robust cloud-native apps that can scale as per the need and with complex architecture and secure connections for any platform or device without worrying about the Virtual machine that will host. It also offers to accommodate previously built applications to migrate and run as one of the app service types. App Service runs and maintains with the help of Azure service fabric that takes care of running the application and its availability.
This article emphasizes on App Services which is one of the sections in the PaaS category. We can make our hands dirty to try out the Azure app services at
Types of Azure App Services
- Web Apps
- API Apps
- Logic Apps
- Mobile Apps
- Function Apps
Web Apps enables us to host our web application without worrying about the infrastructure plumbing that is required. In a traditional hosting mechanism, we need to make sure the Server is up, OS is updated and IIS is running whereas hosting in Azure web app removes all this burden and the Service fabric layer below it makes sure that the app is up and running.
Deploying applications in web app service in Azure helps developer focus on delivering business values rather than consuming time on Sever updates or OS patches. Web apps not only support.Net applications but also supports Node.js, Java, PHP or Python. Azure promises to make web apps up and running with 99.95 % SLA. It also provides provision to attach custom domains and SSL certificates with the web app. We can also have multiple deployment slots so that we can test our app in Staging or the pre-prod environment. This also helps in moving new changes to production with no downtime. Moreover, we also get the flexibility to revert a deployment.
This is made possible by swapping the virtual IP addresses of the slots. And the staging site goes live seamlessly. Web apps also come with a feature of manual or auto-scaling. We can configure authentication and authorization out of the box like Azure AD.
We can also load balance traffic apps with traffic management. Web apps can also access data that lies outside Azure like an on-premise data source with some hybrid connections.
API apps are offering of App Service that helps to host Web APIs. This enables us to expose existing or new APIs. This is also a part of the platform as a service and we don’t need to worry about infrastructure plumbing to bring our APIs up and running. It also supports identity providers to secure the APIs. The API Apps supports.Net, Java, Python, Node.js to build and deploy Web APIs. It also comes with an inbuilt swagger implementation which helps in API definition and creating client apps.
Logic apps enables us to create functional workflows by orchestrating software as a service component. These are basically used to connect different components of a solution in order to manage and trigger events and perform the desired action on some other service. For example, we can build a logic app that triggers on an event of a new file uploaded on a blob storage and performs an action of sending a notification to a user. In many complex solutions, logic apps act as a communication channel for various services in microservice architecture.
Logic apps facilitates workflows by using triggers, connectors and actions.
- Logic apps can be triggered manually, or at any scheduled time. Moreover, logic apps can also be triggered on the basis of some event on any connected component.
- To support various kind of workflows, logic apps also have something called conditions. This is a logical section to validate a few data based on some condition and we can perform the specific action on each result of the condition.
- Logic apps internally uses connectors to connect to different components. These connectors may connect to Azure SQL DB, Mail exchange, SharePoint, blob storage or API Apps.
Mobile Apps enable us to build a backend for Mobile applications. It can provide capabilities to mobile client applications. This can be considered to be the same as a web service to support mobile client scenarios. The client can be Windows Universal apps, IOS apps, windows apps etc. They use Mobile app SDK to connect with the backend. There are certain unique capabilities with mobile apps:
- They are cross-platform. That means Apps build for any platform – Android, Windows, IOS can consume them.
- Mobile Apps also supports secured client connection for client applications to connect with the default identity providers like Active Directory and Microsoft account.
- Offline Sync – This feature enables the client applications to work with data when they are offline and sync it when they are online.
- Push Notifications – The Mobile apps can be used send push notifications to the client applications.
Azure Functions are event-driven components that eliminate the need for a server to host a piece of logical code and process. Basically, Azure functions are used to intercept events occurring in any Azure service or third-party service or on-prem system as well. They are an evolution of Azure web jobs which is a feature of Azure App Services.
For example, Azure Functions can be triggered on Event Hubs, Service Bus topics or queues or via a timer.
- An Azure function can run any executable. Azure Functions are also referred to as Server less. It’s not that Azure functions do not run on servers. They do. They run on Azure service fabric. But We do not need to manage the server. Azure functions consume the memory only when it runs and scales automatically by making the replica of instances.
- Serverless Azure functions are not fully featured applications but a short-lived task in an application that does a specific job. We can also chain different Functions together to make some comprehensive solution.
- Azure functions are supported in multiple languages like C#, F#, Node.js, Python, PHP, batch, bash and any executable file format. In terms of security, they can be secured with OAuth systems and other identity providers like Azure AD.
App Service Plan
All the apps that run under app service are governed and observed by a contract with the cloud service provider known as App Service plan. This acts as a container to the applications and defines the boundary limitations of resources available to consume and scale. An app service plan comes with a measured compute resources that keep our app running. These compute resources include fixed computing power which can be consumed by different applications deployed in the same app service plan. The amount of computing powers defines how much we need to pay for the plan.
The app service plan is categorized by its pricing tiers as below:
This App Service plan uses a single VM for multiple app service plan and can host multiple applications with some limited computing power. Also, we cannot scale our apps in this app service plan and applications deployed in this plan cannot be provided with custom domain names.
Shared app service tier, runs in a similar environment as that of a Free tier. This tier allocates CPU quotas to each app that runs on the shared resources, and the resources cannot scale out. We can add a custom domain to the apps in this tier.
The Dedicated tiers run apps on dedicated Azure VMs. The apps within the same app service plan can share the resources power. This comes with 99.95% SLA and scaling options. This tier is further divided into Basic, Standard and Premium with increasing compute power and features.
The basic app service tier is generally used of dev and test environment during development and does not support auto scale. Applications can be scaled out manually up to 3 instances.
Standard tier features 5 deployment slots and can be configured to auto scale on increasing traffic and load on application. Production environment case fits into standard tier plan.
Premium tier is suitable for large scale and comes with 20 deployment slots and can be taken backup 50 times a day.
Isolated tier runs dedicated Azure VMs on dedicated Azure Virtual Networks. This means that we run a private an instance of all web apps infrastructure deployed in an isolated virtual network. This type of environment is also known as running in an App Service Environment (ASE).
App Service Pricing and Tiers
App Service Scaling
Web apps offers 2 types of scaling based on our need – Vertical Scaling (Scale up, scale down) and Horizontal Scaling(Scale Out and Scale In). Scaling is important for couple of reasons:
- As users accessing our app grows, we want them to have a seam less experience to the app.
- We only want to pay for amount of computing power we use
Increasing the computing power of infrastructure to support heavy workload by increasing the CPU power and storage efficiency.
Decreasing the computing power of infrastructure in case the website hit goes down by decreasing the CPU power and storage efficiency.
This is also called horizontal scaling. The number of instances of the app is increased to distribute the traffic load.
The number of instances of the app is decreased to reduce cost in off seasons when traffic on web app goes low.
Limitations of Azure App Service
Though App Service comes with a lot of benefits and ease of doing cloud-native development and deployments, there are a few limitations which should be understood well.
- No Remote Desktop Connection- Since app services are part of the broader platform as a service modal, and we have very limited access to the infrastructure on which it runs. This makes it difficult to troubleshoot issues related to performance as we cannot log into the server and see log files or event viewer.
- No support for third-party Software management tools- Since we do not have to manage the server at all, we have no authority to install any monitoring tools like Dynatrace or Splunk.
- Performance Counters not visible- In order to keep the healthy state of an application, we always tend to see the performance indexes on key workloads like IIS queues but with app service in Azure, this is still not available.
Azure App Service is a platform as a service offering in Microsoft Azure that enables us to develop web and mobile applications and deploy them in Azure. The unique feature of App Service is its fully managed infrastructure by Azure service fabric that keeps us worry free from any kind of infrastructure plumbing that is required to host the applications such that developers could focus more on delivering business values.
App Service also comes with the benefit of Auto Scaling of instances and computing power and provides a secured endpoint which can be authorized and integrated with any standard identity provider like Azure AD. With multiple deployment slots, we can also test our app before releasing into the production environment and make use of swapping with another slot where production deployment completes within a couple of seconds.