The course is part of these learning paths
Microsoft Azure is a collection of online services that organisations can use to build, host, and deliver applications. You don’t need to have your own data center because Azure runs in Microsoft’s data centers around the world. Not only does this approach save you the trouble of having to build and maintain your own on-premises IT infrastructure, but it can also save you money, because you only have to pay for what you use, and you can scale your Azure resources up and down as needed.
In this course, you will not only get an overview of the Azure services available in various categories, such as compute, storage, and networking, but you will also follow hands-on examples showing you how to create virtual machines and web apps using the Azure Portal and Azure command-line interface.
- Describe some of the Azure services available in various categories
- Use the Azure Portal
- Use the Azure command line
- Anyone who would like to learn more about Azure
- General technical knowledge
- A Microsoft Azure account is recommended (sign up for a free trial at https://azure.microsoft.com/free if you don’t have an account)
The GitHub repository for this course is at https://github.com/cloudacademy/azure-overview
Now that we have a good idea of what services are available in Azure, let’s see how we can put them together to create a more complex solution. One of the best ways to get started is to look at the examples in the Azure Architecture Center. If you click on “Browse Azure architectures”, you’ll see some recommended architectures for particular types of solutions. There are hundreds of example architectures, so it’s usually easiest to search for what you need. I’m going to walk you through an e-commerce example, so I’ll search for “e-commerce”.
The scenario in this example is that we need to build an Azure-based solution for customers who want to buy concert tickets. The diagram they use is a bit confusing, so we’ll use our own.
The first service we need to use is Azure App Service because it’s the easiest way to host a web app. To buy concert tickets, our customers will connect to our website, which will be hosted on Azure App Service.
The website won’t be able to do very much, though, until we add more services. For example, it would be pretty difficult to have a continually updated list of concerts without using a database. We could connect our website to a variety of databases, such as MySQL or Cosmos DB, but the most obvious choice is to use Azure SQL Database. We can store concert information there and then have a list of upcoming concerts appear on the website.
If we’re going to have a lot of concerts to choose from, then we should also allow customers to search for specific concerts. Azure Cognitive Search is a good choice for that. It indexes your content so it can provide quick responses to search queries.
Next, we’ll want to give customers the ability to purchase tickets. This example solution from Microsoft doesn’t include the actual payment handling part of the transaction, but it does include a couple of important pieces. First, we’ll want to give customers the option to create an account so they don’t have to re-enter their information every time they use our app to purchase tickets. A good solution is to use Azure Active Directory B2C. The B2C stands for “Business to Consumer”. It provides everything you need to handle authentication for people outside of your organization.
When we receive customer orders, we should put them in a queue. Then we can have a separate component that pulls orders from the queue and processes them. This is one of the best ways to pass data from one component to another because it makes applications more reliable and scalable. Even if a component goes down, the data will be buffered in the queue until that component comes back up. Microsoft has a special type of storage to handle this need, and it’s called, not surprisingly, Queue storage. It scales up and down as needed.
To retrieve orders from the queue and process them, we can use an Azure Function. The function will be triggered automatically whenever a new item is added to the queue. The function then creates a printable concert ticket for the customer. When it’s done, it stores the ticket in Blob storage, which is the perfect place for image files. The ticket will then be sent to the customer, although that’s not shown in this example app.
Okay, now we have a complete solution (other than the couple of missing pieces that I mentioned). But we can add more functionality to our app. Another feature we can add is to allow people to post a review after they’ve seen a concert.
This can be handled in a similar way to the order processing feature. We’ll add new concert reviews to another queue and have an Azure Function that retrieves those concert reviews from the queue. Then it will store the reviews in SQL Database so they can be displayed on the website.
All right, now we have all the functionality we need, but we can add some more services to make our app better.
First, we can add Azure Cache for Redis and use it to cache concert information. This will make searches faster when customers are looking for concerts.
Another important way to make our app faster is to use the Azure Content Delivery Network. It’ll cache our website’s static files so they’ll come up faster when customers access our site.
Yet another way to improve responsiveness is to use a service called Azure Traffic Manager. If we create multiple copies of our web app and host them in different regions around the world, then we can configure Traffic Manager to serve each customer from the web app instance that’s closest to the customer on the internet. So now, not only do they get the static website files from the closest point on the Content Delivery Network, but they also interact with the web app using the nearest instance.
To ensure that our app is functioning properly, we can use the Application Insights service. It takes care of monitoring the app and alerting us if there are issues. It also provides us with analytics to help diagnose issues and to understand how users are interacting with our app.
Finally, if we want to automatically classify concert reviews as positive or negative, we can use the Text Analytics component of Cognitive Services. We’ll have an Azure Function that runs a sentiment analysis on each concert review and then updates the concert review in the database to show whether it’s positive or negative.
That’s a lot of different services for one application. So, how much will everything cost? Thankfully, Microsoft provides sample pricing on the solution example page. It even has options for small, medium, and large implementations, depending on how much customer traffic we think we’ll get. Let’s try the medium option, which can handle up to 100,000 users per month.
This brings up the Pricing Calculator, which is a really handy feature for estimating the price of nearly any Azure service. I’m going to click the “Collapse all button” so we can see a summary of all of the costs. The total is up here. It’s around $900 per month for everything.
If you look through the breakdown of the price, you might be surprised to see that App Service is not the #1 cost on this list. Considering that it hosts the core application, it seems like it should have the highest cost, but actually Azure Active Directory B2C and Azure Cognitive Search are higher. That’s a bit misleading, though, because this pricing example only includes App Service hosting in one region. If we want to host the app in multiple regions and use Traffic Manager to make it more responsive for users around the world, then we’ll pay at least this much for each region, which would easily make App Service the most expensive component.
And that’s it for designing a solution.
Guy launched his first training website in 1995 and he's been helping people learn IT technologies ever since. He has been a sysadmin, instructor, sales engineer, IT manager, and entrepreneur. In his most recent venture, he founded and led a cloud-based training infrastructure company that provided virtual labs for some of the largest software vendors in the world. Guy’s passion is making complex technology easy to understand. His activities outside of work have included riding an elephant and skydiving (although not at the same time).