|Challenge Topic: Azure Pipelines and Continuous Integration|
|Author: Lars Klint|
|Goal: Create a web application that is continuously integrated when changes are made, is globally performant, and adds protection against online attacks.|
|Outcome: Get Azure App Service and DevOps skills that apply to real-world scenarios, including ARM templates and YAML. Create a globally scalable web application that is secure and fast.|
|Deadline: March 31, 2021|
The majority of internet outages are caused by broken or buggy code being pushed live. You might have heard the mantra “never deploy on a Friday!”
The thought behind this is that you deploy your new application and then go home, after which no one will fix the issues for several days over the weekend. The way I look at it is you should be able to deploy at any time you like. If you can’t, then your process is broken.
Companies such as Google and Netflix often deploy code for various products several times per day without you even noticing. The DevOps approach to application and product management almost enforces an immediate and continuous push of new features, bug fixes and code.
The days of waiting months for a fix or feature are gone. Or they should be. It’s estimated that 60% of companies deployed multiple times a day, once a day, or once every few days in 2020. That means 40% are not — and that’s bad for business, bad for employees, and bad for customers.
The main benefits of a mature and stable deployment pipeline are:
- Ensure a faster and safer release of software
- Ease the maintenance cost
- Faster time to market for applications and features
- Increase team flexibility and agility
- Allow more time for innovation
The rapidly growing security company Cloud Save is in need of a verification application for their growing suite of security products. They’re asking you to build an application that can capture a user’s name, address, photo, and voice sample. This is a first step in a family of support tools that will interact with users using a web browser.
The application is expected to be a success globally and therefore needs to be accelerated at the edge and use load balancing to ensure user experience. Security of the application and defense against attacks should also be considered.
Cloud Save plans on expanding on your work rapidly and soon, so they’ll also need you to make sure any changes, bug fixes, and updates can be tested and deployed automatically and immediately. You’ll implement continuous integration and optionally continuous deployment — a vital cloud skill for a modern business and something that will undoubtedly stand out on your résumé.
Enough talking. Let’s get this challenge started!
Keep up with all things Microsoft Azure with the ACG series Azure This Week!
As with our other Cloud Guru Challenges here at ACG, this challenge also has multiple right answers. I’m not going to tell you how to carry out the following steps, but rather tell you the outcomes I’m after. You do it in the way you see best. Feel free to Google anything you need with Bing, ask your friends and colleagues, use Twitter, or do whatever else you might do in an actual work project.
As a first step, check out our AZ-900 Microsoft Azure Fundamentals course. It’s free for the month of February (along with several other Azure-related courses) and will give you a solid foundation for getting to work in Microsoft Azure.
The challenge is to create a web application that’s scalable and robust, as well as a stable deployment pipeline for the application. This challenge will give you real-world skills in Azure Pipelines, App Services, Azure Front Door, Cosmos DB, ARM templates, and YAML configuration.
- Using an ARM template, create a new Azure App Service with the following properties.
- Integrate with an Azure Virtual Network named “ACGVnet”
- Add a deployment slot named “staging”
- Custom auto-scaling with 1–3 instances, defaulting to 1.
- A scale rule which triggers the scale action at 70% CPU usage.
- Using an Microsoft’s Azure quickstart template, create an Azure Front Door service.
- Add the App Service created in Step 1 as backend
- All requests to the App Service must be HTTPS
- (Optional) Add routing rules to control traffic and multiple backends.
- Using an ARM Template, create a Cosmos DB instance.
- If possible, use the Cosmos DB free instance (you can only have one per subscription).
- Enable Geo-Redundancy
- API type should be Core (SQL)
- Create a simple web application and use GitHub as source control.
- The application must have at least one test.
- The application must be written in ASP.NET, ASP.NET Core, Java, Ruby, Node.js, PHP, or Python.
- The user data must be stored in Cosmos DB (you can use the free tier).
- Photo and voice sample can be stored in Cosmos DB or Azure Blob Storage.
- Use YAML to create a pipeline in Azure DevOps with the following components.
- It should build the web application
- If built successfully, run the tests.
- If tests pass, deploy the application to the “staging” deployment slot for the Azure App Service created in step 1.
- (Optional) Create a step in YAML in DevOps that swaps the production and staging deployment slots for the App Service.
When You’re Done
You can complete the project requirements by yourself or in collaboration with others. Feel free to ask questions in the discussion forum or on social media using the #CloudGuruChallenge hashtag!
When you finish all the steps of the project, post a link to your blog post in the designated forum thread. I’ll then be able to endorse you on LinkedIn for the skills you demonstrated in this project: Azure App Services, Azure DevOps, continuous integration, Azure Front Door, Load Balancing, Security. (You’ll also be entered to win some cool swag!)
This challenge will remain available indefinitely, but to get endorsed on LinkedIn and win swag, you need to link your blog post on the forum by March 31, 2021.
Most importantly, the #CloudGuruChallenge is FREE and available to everyone: all you need is an ACG free-tier membership to make your forum posts.
Looking to level up your Azure powers?
ACG’s hands-on Microsoft Azure learning can help you go from an Azure amateur to a maestro of Microsoft’s cloud. And, for the month of February, we have a special batch of free Azure-related courses. Dig in!