In the real world, there are generally two possibilities for hosting your web applications or APIs in the cloud. You can follow the classic model and deploy your apps on a virtual machine, or you can go “serverless” by using a serverless platform as a service (PaaS) on a cloud platform. Following my last blog post that provided an overview of Microsoft Azure services, in this post, I’d like to introduce Azure App Service, and more specifically four general ways to host your web application on Azure:
Before we start with one of the most important services on Microsoft Azure, Azure App Service, we should understand the concept of ‘serverless computing.’
Serverless computing, also known as function as a service (FaaS), is a cloud computing code execution model that allows you to build and run applications and services without having to manage infrastructure. Even though your application still runs on servers, you no longer to have a global “infrastructure vision” to provision, scale, and maintain servers to run your applications, databases, and storage systems. With serverless, all of these things would be handled by your cloud platform. To know more about serverless computing, the Cloud Academy learning path Getting Started with Serverless Computing is a great resource to help you dive in.
App Service is a PaaS service offered by Microsoft Azure. App Service helps you create web and mobile apps for any platform or device. It also helps you integrate your apps with SaaS solutions, connect with on-premise applications, and automate your business processes. After deploying your application with App Service, Azure runs your apps on fully managed virtual machines (VMs), with your choice of shared VM resources or dedicated VMs.
Currently, Azure App Service offers several app types and capabilities:
App Service plans represent the collection of physical resources used to host your apps.
App Service plans include:
Web Apps, Mobile Apps, Function Apps, or API Apps in Azure App Service all run in an App Service plan. Apps in the same subscription and region and resource group can share an App Service plan.
All applications assigned to an App Service plan share the resources defined by it, allowing you to save on costs when hosting multiple apps. To learn more about how to manage your App Service plan, please refer to this overview of Azure App Service plans.
Take a look at Cloud Academy Introduction to Microsoft Azure App Service to get started.
Since everything on the cloud is going to be “serverless,” deploying your app to App Service is just a matter of deploying your code, binaries, content files, and their respective directory structure. App Service supports three different deployment processes:
Azure documentation is always your best resource for learning more. In this case, refer to this article for how to Deploy your app to App Service to get more information.
Continuous deployment with App Service
To facilitate continuous deployment, Azure App Service integrates with BitBucket, GitHub, and Visual Studio Team Services (VSTS) and enables a continuous deployment workflow where Azure pulls in the most recent updates from your project published to one of these services. To learn more about how to configure a continuous deployment workflow for your Azure App Service app, please refer to this article: Continuous Deployment to Azure App Service.
When you deploy your web app, mobile back-end, and API app to App Service, you can deploy to a separate deployment slot instead of the default production slot when running in the Standard or Premium App Service plan mode.
Deployment slots are actually live apps with their own hostnames. App content and configuration elements can be swapped between two deployment slots: the production slot and non-production slot. Refer to this article to Set up staging environments in Azure App Service.
Be careful: When you clone configuration from another deployment slot, some configuration elements will follow the content across a swap (not slot specific) while other configuration elements will stay in the same slot after a swap (slot specific). Each App Service plan mode supports a different number of deployment slots. To find out the number of slots that your app’s mode supports, see App Service Pricing.
Azure App Service is the best choice for most web apps. Deployment and management are integrated into the platform, sites can scale quickly to handle high traffic loads, and the built-in load balancing and traffic manager provide high availability.
To move existing sites to Azure App Service you can use an online migration tool, an open-source app from the Web Application Gallery, or you can create a new site using the framework and tools of your choice. The WebJobs feature makes it easy to add background job processing to your App Service web app.
Let’s take a look at how we can design and implement Web apps, mobile apps and logical apps with Azure App Service in different scenarios.
App Service Web Apps is a fully managed compute platform that is optimized for hosting websites and web applications. In App Service, a web app is the compute resources that Azure provides for hosting a website or web application.
Azure App Service currently supports ASP.NET, Node.js, Java, PHP, or Python, as well as other languages and frameworks. You can run scripts that use PowerShell and other scripting languages. To deploy a web app, we will start by configuring Web Apps settings. For a web apps, the application settings include: General settings like Framework versions, Platform, Web Sockets, Always On, etc. and app settings, provided by Azure Cloud, to visualize your application environment. Debugging settings allow you do remote debugging with Visual Studio. Take a look at the Microsoft Azure documentation Configure web apps in Azure App Service for more details.
After configuring your app, you can enable diagnostic logs. App Service web apps provide diagnostic functionality for logging information from both the web server and the web application. These are called Web Server Diagnostics and Application Diagnostics. For more information about diagnostic logging in an app service, refer to this article about Diagnostics Logging in WebApps of Azure App Service.
Watch this short video on Diagnostic logging on Azure (part of the Cloud Academy’s course on
Analyzing Resource Utilization on Azure.
If you don’t plan to configure a custom domain, you can use the default HTTPS certificate (however, it is usually not secure). Azure App Service provides an easy way to manually map a custom domain name to your web app. With your custom domain, you can also purchase and manage an SSL certificate right from the Azure Portal without ever leaving the portal.
On Azure, we can also manage Web Apps by using Azure PowerShell and Xplat-CLI.
I would recommend reading the following Azure documentation for more information:
To do regular jobs and batch work in the background under web app, we’re using Azure WebJobs. On Azure, there are three ways to configure WebJobs: on demand, continuously, or on a schedule to run programs or scripts in WebJobs. There is no additional cost to use WebJobs.
WebJobs accept the following types:
.cmd, .bat, .exe (using Windows cmd)
.ps1 (using PowerShell)
.sh (using bash)
.php (using php)
.py (using python)
.js (using node)
.jar (using java)
Mobile Apps in Azure App Service offers a highly scalable, globally available mobile application development platform.
Azure provides a complete set of Client SDKs that cover native development (iOS, Android, and Windows), cross-platform development (Xamarin for iOS and Android, Xamarin Forms) and hybrid application development (Apache Cordova). Each client SDK is available with an MIT license and is open-source. Cloud-enabled mobile development has different features compared to traditional mobile application development:
Just like AWS SWF (Simple Workflow Service), Azure Logic Apps simplify and implement scalable integrations and workflows in the cloud. It provides a visual designer to model and automate your process as a series of steps known as a workflow. To get started with Logic Apps, follow the create a Logic App tutorial. Also, Azure documentation on how to create a Logic App connecting SaaS services could be helpful. Finally, we can make use of the existing Logic App templates or Create a Logic App using a template.
In general SOA solution projects, we are usually working with three-tier applications: front-end, middle tier, and data tier. Compared to traditional technologies, the cloud provides a much better solution for each tier. We can get great solutions for both front-end (your web apps) and middle tier applications (with your API in ASP.NET web API, Node.js, or other languages).
API apps in Azure App Service offer features that make it easier to develop, host, and consume APIs in the cloud and on-premise. This Azure documentation, Get started with API Apps, ASP.NET, and Swagger in Azure App Service, shows a simple three-tier application example (the famous To Do List). If you’re working more on Java or Node.js, please refer to the following documentation:
Java API : Build and deploy a Java API app in Azure App Service
Node.js : Build a Node.js RESTful API and deploy it to an API app in Azure
Just like the AWS Lambda service, Microsoft Azure provides a service, Azure Functions, to listen to and react to the different events on cloud. Azure Functions is a solution for easily running small pieces of code, or “functions,” in the cloud in a serverless way without thinking about an entire application or the infrastructure to run it.
The general scenario for Azure Functions is for processing data, integrating systems, working with IoT, and building simple APIs and microservices.
Consider Functions for tasks like image or order processing, file maintenance, long-running tasks that you want to run in a background thread, or for any tasks that you want to run on a schedule.
Functions provides templates to get you started with key scenarios such as:
To learn more about each trigger, take a look at the Azure Functions Overview.
To create your first Azure Functions, you can choose the template in the Quickstart tab or any other trigger template in a new function. For example, to create a function click New function to choose GitHub Webhook – JavaScript to create a webhook function (for step by step configuration, refer to Azure documentation create a webhook or API Azure Function). Or, choose TimerTrigger – C# to create an event processing function, or to choose TimerTrigger-JavaScript to implement an Azure-connected function.
There are two ways to test your Azure Functions:
For more information on testing your Azure Functions step by step, refer Testing Azure functions on Azure documentation.
In my next posts, I will cover how to manage and configure Apps for scale and resilience as well as monitoring your apps on App Service. Stay tuned!
It's Flash Sale time! Get 50% off your first year with Cloud Academy: all access to AWS, Azure, and Cloud…
In this blog post, we're going to answer some questions you might have about the new AWS Certified Data Engineer…
This is my 3rd and final post of this series ‘Navigating the Vocabulary of Gen AI’. If you would like…