Azure Cloud Design Patterns
Azure Cloud Design PatternsLet's talk about Cloud Design Patterns.We introduced the topic of design patterns in this previous post, then we d...Learn More
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 through 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.
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.
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!
Harvard Business Review recently estimated that some 90% of corporate training never gets applied on the job. Given the $200B training industry, that is a staggering amount of waste. One reason for the disconnect? Lack of context.Cloud Academy’s platform was built to make it extraor...
Microsoft Azure is the fastest growing cloud provider. Azure’s revenue grew an incredible 76% in the last quarter of 2018. As more and more businesses move their IT infrastructure to Microsoft’s cloud platform, the demand for Azure professionals keeps rising. Since there are relatively ...
So just what is Heroku? It's a service for developers eager to get their applications online without having to worry about infrastructure details.Metered, pay-as-you-go Cloud Computing services come in all kinds of flavors. Infrastructure as a Service (IaaS) offerings like AWS allow e...
Cloud Computing, like any computing, is a combination of CPU, memory, networking, and storage. Infrastructure as a Service (IaaS) platforms allow you to store your data in either Block Storage or Object Storage formats.Understanding the differences between these two formats - and how ...
The move to the cloud is picking up steam. As such, many corporations are beginning to find themselves supporting a mixture of on-prem apps as well as cloud apps. Users are finding that they need access to this mix of applications as well. As one would expect, this can become a challe...
Google Cloud Platform (GCP) has evolved from being a niche player to a serious competitor to Amazon Web Services and Microsoft Azure. In 2018, research firm Gartner placed Google in the Leaders quadrant in its Magic Quadrant for Cloud Infrastructure as a Service for the first time. In t...
This is the second of a two-part series covering Azure Stack. Our first post provided an introduction to Azure Stack. Why would your organization consider using Azure Stack? What are the key differences between Azure Stack and Microsoft Azure? In this post, we'll begin to answer bot...
Microsoft Ignite 2018 was a big success. Over 26,000 people attended Microsoft’s flagship conference for IT professionals in sunny Orlando, Florida. As usual, Microsoft made a huge number of announcements, ranging from minor to major in importance. To save you the trouble of sifting thr...
Cloud Academy is proud to be a sponsor of the Microsoft Ignite Conference to be held September 24 - 28 in Orlando, Florida. This is Microsoft’s biggest event of the year and is a great way to stay up to date on how to get the most from Microsoft’s products. In this post, I’ll help you p...
One of the main promises of cloud computing is access to nearly endless capacity. However, it doesn’t come cheap. With the introduction of Spot Instances for Amazon Web Services’ Elastic Compute Cloud (AWS EC2) in 2009, spot instances have been a way for major cloud providers to sell sp...
A Comparison of Machine Learning Services on AWS, Azure, and Google CloudArtificial intelligence and machine learning are steadily making their way into enterprise applications in areas such as customer support, fraud detection, and business intelligence. There is every reason to beli...
In on-premises environments, data security is typically a siloed activity, with a company's security team telling the internal technology groups (server administration, database, networking, and so on) what needs to be protected against intrusion.This approach is absolutely a bad idea...