In my last post, I talked about my strategies for becoming familiar with the AWS cloud, from beginner, all the way to certification. In this post, we’ll focus on another of the leading cloud platforms, Microsoft Azure. As a software engineer who has worked with it for many years, I’d like to share my path to learning and using the Microsoft Azure cloud.
Getting started with Azure: What is Microsoft Azure?
Microsoft Azure is a collection of services that enables individuals and organizations to create, deploy, and operate cloud-based applications and infrastructure services. If you are looking to getting started with Microsoft Azure there is a suite of courses on the Cloud Academy Azure section.
The Azure advantage
As I see it, Microsoft Azure has several advantages over other platforms. In my opinion, its reliability and scalability are two areas where it stands out. Microsoft Azure services are provided from cloud data centers that have multiple built-in redundancies. This means that we can deploy our application on different regions with several copies so that it can continue running even in the event of a disaster or accident in one region. Or, we can also easily recover our application from another copy.
Microsoft Azure is cost effective, which is a general advantage of cloud computing technology. With the Azure cloud there are:
– No upfront costs
– No termination fees
– Pay only for what you use
– Per minute billing
To review and visualize usage and billing information across multiple subscriptions, you can personalize or visualize your billing portal. For additional information on enabling visibility of Azure across multiple subscriptions, check out this post from the Azure blog announcing the availability of the Azure Usage and Billing Portal on GitHub.
Finally, for companies that work with Microsoft technologies, the greatest advantage of Azure would be used in conjunction with various Microsoft solutions such as Microsoft System Center, SharePoint, SQL Server, etc. In addition, Microsoft Azure supports many different programming languages, tools, and frameworks, including both Microsoft-specific and third-party software and systems such as SAP, etc.
The Microsoft Azure public cloud platform offers IaaS, PaaS, and SaaS services to organizations worldwide. To understand the different Azure services, I started by learning Microsoft’s basic concepts for designing cloud applications.
Understand Cloud Design Patterns
Azure provides a comprehensive platform and infrastructure for hosting large-scale web applications and cloud services. Cloud design patterns are useful in cloud-hosted applications. Each pattern is provided in a common format that describes the context and problem, the solution, issues, and considerations for applying the pattern, and an example based on Azure.
Let’s take a look at two important Azure cloud design patterns:
– Sharding Pattern: This pattern divides a data store into a set of horizontal partition shards, which can improve scalability when storing and accessing large volumes of data (and eventually improve performance).
The example implemented using this pattern is Azure SQL Database.
– Competing Consumers Pattern: This pattern enables multiple concurrent consumers to process messages received on the same messaging channel. It also provides a system for processing multiple messages concurrently to optimize throughput, improve scalability and availability, and balance the workload.
The example implemented using this pattern is Message Queue.
To learn more about Azure Cloud Design Patterns, I recommend this article on the Microsoft Developer Network: Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications.
Two different Azure Portals
Let’s take a look at two Azure portals.
The most important portal is the classic deployment model, also known as ASM (Azure Service Management) model.
The New Azure portal brings together all of the different cloud resources into a customizable console called a hub, from which you can manage and control all of your resources. This includes
web applications, databases, virtual machines, virtual networks, storage, and more.
For software development teams, it provides a repository where they can manage the entire DevOps lifecycle: code check-in, test, build, and deployment of an application or service to the cloud.
For compute, storage, and networking resources, you can choose whether to use Resource Manager or Classic Deployment. I recommend Resource Manager. The Resource Manager deployment model has important differences from the classic deployment model, and the two models are not completely compatible with each other. To simplify deployment and management of resources, Microsoft recommends that you use Resource Manager for new resources.
Azure Resource Management
Azure Resource Manager (ARM) is a deployment model that allows you to deploy, update, or delete resources for your cloud solution in a single, coordinated operation. For Azure, virtual machines, storage accounts, virtual networks, services, or any component that you are managing is considered a resource.
We can provision every Azure resource in a resource group. A resource group is a container that holds related resources for an application. The resource group could include all of the resources for an application, or only the resources that are logically grouped together.
Similar to AWS’s CloudFormation for provisioning resources in the cloud, Azure Resource Manager templates are available on GitHub (Azure/azure-quickstart-templates). An ARM template is a JSON file that defines one or more resources to deploy to a resource group. It also defines the dependencies between the deployed resources.
Azure operates in multiple geographies around the world. An Azure geography is a defined area of the world that contains at least one Azure Region. An Azure region is an area within a geography that contains one or more data centers.
Each Azure region is paired with another region within the same geography to form a regional pair. The exception is Brazil South, which is paired with a region outside its geography.
Be careful: Generally, Azure services are hosted in physical Microsoft-managed data centers located in multiple geographic areas. You can specify the region where you want to host those services, but not all Azure services are available from every region. Check this page for the most up to date Azure regions information.
Understand Azure laaS/Paas
In a previous post, I explored the differences between laaS, PaaS and SaaS. Here is how Azure covers these services:
Understand general Azure services
Microsoft Azure provides cloud services for accomplishing various tasks and functions across the IT spectrum. These services can be organized into several broad categories. Azure has services for different usage scenarios, and there is a wide range of services that can be used as building blocks for creating custom cloud solutions.
As I mentioned in my first blog on AWS, compute, network, and storage are the most important parts of a cloud platform. Let’s look at how these work on Azure.
Azure provides different hosting models for running applications and each provides a different set of services. Azure compute provides the following services:
– App Service: Scalable Web Apps, Mobile Apps, API Apps, and Logic Apps for any device.
– Cloud Services: Highly available, scalable n-tier cloud apps with greater control of the OS.
– Virtual Machines: Customized Windows and Linux VMs with complete control of the OS.
– Virtual Machine Scale Sets: An Azure Compute resource you can use to deploy and manage a set of identical VMs. With all VMs configured the same, VM scale sets are designed to support true autoscaling.
Azure networking provides the following services:
– Azure Virtual Networks: Define an organization’s network in the cloud. The administrator can have full control over IP address assignments, name resolution, security settings, and routing rules. It provisions networks to connect your virtual machines, PaaS cloud services, and on-premise infrastructure.
– Azure ExpressRoute: Create a dedicated high-speed connection from your on-premise data center to Azure.
– Traffic Manager: Implement load-balancing for high scalability and availability.
– Load Balancer: Deliver high availability and network performance to your applications.
– VPN Gateway: A virtual private network gateway used to send network traffic between Azure virtual networks and on-premise locations, and also between virtual networks within Azure (VNet-to-VNet).
– Azure DNS: A hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services.
Azure Storage is a cloud storage service that is durable, available, and scalable. Azure storage provides the following four services: Blob storage, Table storage, Queue storage, and File storage.
To access to services in Azure Storage, you will first need to create a storage account. This shows how storage resources are organized in a storage account:
– Azure StorSimple: An integrated storage solution that manages storage tasks between on-premise devices and Azure cloud storage.
– Azure Backup: The Azure-based service that you can use to back up (or protect) and restore your data in the Microsoft cloud. Azure Backup replaces your existing on-premise or off-site backup solution with a cloud-based solution that is reliable, secure, and cost-competitive.
– Azure Site Recovery (ASR): Orchestrates replication of on-premise virtual machines and physical servers. You replicate servers and VMs from your primary on-premise data center to the cloud (Azure), or to a secondary data center.
Data and Analytics Services:
– SQL Database: A relational database-as-a-service in the cloud built on the Microsoft SQL Server engine
– Azure SQL Data Warehouse: A cloud-based, scale-out database capable of processing massive volumes of data, both relational and non-relational.
– DocumentDB: A fully managed NoSQL database service built for fast and predictable performance, high availability, elastic scaling, global distribution, and ease of development.
– Azure Redis Cache: A distributed, managed cache that helps you build highly scalable and responsive applications by providing super-fast access to your data.
– Azure Machine Learning: Apply statistical models to your data and perform predictive analytics.
– Azure Search: Provide a fully managed search service.
– Azure Data Factory: A cloud-based data integration service that orchestrates and automates the movement and transformation of data.
– Azure Data Lake Store: An enterprise-wide hyper-scale repository for big data analytic workloads. Azure Data Lake Store can be accessed from Hadoop (available with HDInsight cluster) using the WebHDFS-compatible REST APIs. It is specifically designed to enable you to capture data of any size, type, and ingestion speed in a single place for operational and exploratory analytics.
Media and Content Delivery Services
– Azure Media Services: Deliver multimedia content such as video and audio.
– Azure CDN: Distribute content to users throughout the world.
Hands-on experience with Azure Labs
To gain more experience using Azure, I recommend practicing with their labs. Create your own free Azure account and take advantage of Microsoft’s hands-on labs to learn using a real environment.When you sign up for the free trial subscription, you will receive $200 in trial credits to spend on Azure services.
To access Azure services, we can go through the Azure new portal or the classic portal, Azure SDK with Visual Studio 2015 or plus, Azure xPlat CLI and Azure PowerShell. Let’s look at two important management tools on Azure.
Azure xPlat CLI
The Azure CLI is an open-source, cross-platform, shell-based command line interface for scripting and automating the creation and management of resources in Azure. Below is a high-level overview of how commands are structured in the Azure CLI:
Azure PowerShell is a set of modules within PowerShell that provide cmdlets to manage Azure. You can use the cmdlets to create, test, deploy, and manage solutions and services delivered through the Azure platform.
The Azure module contains a comprehensive set of cmdlets that you can use to view, create, and manage individual Azure services in your subscription. For example, you can use the New-AzureWebsite cmdlet to create an Azure website or use the Get-AzureStorageAccount cmdlet for a reference to an existing storage account.
Note: Always remember to use standard PowerShell commands like Get-Command and Get-Help to see more information about the available Azure cmdlets in each module.
You will want to take note of the difference between PowerShell commands in the Service Management Mode and the Resource Management model. Refer to the following Azure documentation for a full explanation of this: Azure Resource Manager vs. classic deployment: Understand deployment models and the state of your resources.
Microsoft Azure certifications
There are several certifications available for Azure in Microsoft. The certification MCSD: Azure Solutions Architect validates your skills on architecting, developing, and administering Azure solutions. When you receive one of the below Azure certifications, you become a Microsoft Azure Specialist as well as a Microsoft Certified Professional (MCP). This certification should be maintained by taking a recertification exam every two years.
Based on my own experience preparing for Azure certification and tips from certificate holders, you can choose the preparation path that best fits your technical profile.
If you’re a developer, it might be easier to start from the 70-532 exam: Developing Microsoft Azure Solutions. The 70-533 exam: Implementing Microsoft Azure Infrastructure Solutions is more oriented to an IT administrator or other infrastructure profile. The 70-534 exam: Architecting Microsoft Azure Solutions requires excellent comprehension about the different cloud services provided by Azure as well as a global view of the different IT solution architectures.
Azure preparation resources
In preparing for Azure certification exams, I found the following resources helpful:
- Cloud Academy: This has been an excellent source for learning the Azure platform. In preparing for the 70-534 and 70-532 exams, I highly recommend these two learning paths from Cloud Academy. Start with the Architecting Microsoft Azure Solutions–70-534 Certification Preparation learning path, and then move on to Developing Microsoft Azure Solutions–70-532 Certification Exam.
- Microsoft Virtual Academy: This contains a lot of up to date courses for Microsoft Azure. I’ll recommend some useful courses about different Azure topics in a future post.
- Azure documentation: The Azure documentation section is a great place to read about the latest product announcements.
- Azure blog and Azure Friday: Two excellent resources for everything Azure.
Since I’m currently preparing to take the 70-532 exam, my future posts will be about how to design and implement web app services and manage virtual machines for Azure solutions. Stay tuned!
Published on 2 Feb 2017.