This month, I want to do something different. Typically, I discuss standalone topics related to an overall theme without really connecting each of them. But this time, I will guide you through a real-life scenario of how Azure can help your organization; starting with the analysis of the deliverable, through to their implementation.
Contoso is a privately-owned construction company that does business in Montana and North Dakota. Contoso’s business model focuses on on-site developments, municipal work, asphalt and concrete construction, and structural pier foundations. Their customer base includes real-estate developers and government agencies.
Even though the United States’ economy is doing well, Contoso is looking to expand its presence into the European market by acquiring new customers through heavy investments in marketing campaigns. Contoso’s president has set a goal of 35% growth both in the company’s revenue and size in the next year. Contoso wants to modernize its business model and allow its website to be easily deployed using standard tools, be scalable and able to grow/shrink with new marketing campaigns, and perform well across regions.
Currently, both the website and enterprise data is managed by IT on a server in the company’s data center in Montana. The data is stored in an SQL database that is periodically backed up on different servers within the same datacenter. The website has just been updated to .NET 5 and is constantly updated by a team of 20 engineers spread across the United States. The development team is not following any software development framework. System releases are scheduled with the IT department through an open-ticket system with the new version and documentation package containing the instructions on how to deploy it.
Starting from the company overview, I have created the following architecture to help Contoso achieve its goal using Microsoft Azure’s services.
The resources used in this architecture are the following:
- Azure DevOps: Software as a service (SaaS) platform that provides the tools for agile planning, work item tracking, cloud-hosting of your Git Repositories, integrated package management, and cloud-agnostic CI/CD pipelines.
- Azure Front Door: An integral part of the Azure SDN stack provides a global, scalable entry-point to your web applications. It also provides high-performance, low-latency, load balancing for HTTP protocols, and high availability by redirecting the traffic to the secondary region if the primary is unavailable.
- Azure App Service: HTTP-based service for hosting web, mobile, and REST APIs applications.
- Azure SQL Database: Fully managed Platform as a Service (PaaS) database engine that provides dynamic scalability with no downtime, and global availability which automatically handles the upgrade, patch, and monitoring of your database.
- Azure Monitor: Collect, analyze, and act on telemetries collected by both cloud and On-Premises resources.
- Power BI: Cloud-based analytics service that provides tools for aggregating, analyzing, and visualizing data.
By adopting the proposed architecture, Contoso will benefit from the following:
- Geo-distribution: Both application and data can be deployed and replicated in data centers worldwide with no upfront cost. This will make it easier for them to reach new markets like Europe and Asia while maintaining low latency and high-availability.
- Disaster Recovery: In the current architecture, both application and data are stored in the same datacenter in Montana. In the case of a natural disaster or power outage, there is a real possibility of unstable connectivity to the data center or even could knock out the company’s entire datacenter. If the company does not have a disaster recovery policy in place, it may result in data loss or service disruption. To minimize this damage, Azure offers multiple services able to backup, replicate, and geo-distribute your application and data.
- High availability: Azure will provide a continuous user experience with no apparent downtime — even with partial server failure.
- Scalability: While scaling refers to the resource’s ability to increase/decrease the machine’s power (vertical) or adding new replicas of the resource (horizontal). In our scenario, this functionality will be critical during the marketing campaign, where the usage of specific resources will rise and consequently require more power.
- Elasticity: Azure takes a step further by giving the possibility to scale your resource according to the demands and usage automatically. This characteristic is called elasticity and is beneficial in case of unexpected peaks in usage.
- Pricing: Azure delivers its services using a Pay-as-you-go pricing model. This means that you will not have any upfront commitment and will be charged only for the services you use. In our scenario, Contoso will be able to run resources in different parts of the world without paying to construct a data center, recruiting specialized IT personnel, or maintaining the resources. And if Contoso chooses to relocate its resources to another region, it can do so with just a few clicks.
Its flow is going to be as follows:
- The development team uses Azure Boards’ functionalities for task management, sprint planning, bug tracking, visualization, and reporting tool.
- The source code is managed by one of the source control management systems supported by Azure Repos that help developers collaborate, resolve conflicts, branching, and provide a history of the code changes.
- When a new release candidate is ready, a special trigger starts the CI/CD pipelines defined in Azure Pipeline. These pipelines double-check that no vulnerabilities are introduced in the new version and publish it to both App Services in Central US and North Europe.
- The On-Premises databases are synchronized to the Azure SQL database regularly and then geo-replicated in both Central US and North Europe.
- Azure Front Door acts as a middleman between the user and the backend; forwarding the HTTP request to the closest healthy App Service all while decreasing latency.
- The Azure Monitor instance collects monitoring telemetry from the multiple Azure resources used in this architecture.
- A manager consults the insight collected by Azure Monitor directly on Power BI, where they can create charts, dashboards, and more.