#CloudGuruChallenge - Round 2

#CloudGuruChallenge - Round 2

Azure CICD

ยท

2 min read

After the first CloudGuru challenge, I decided to search for another Azure Cloud Challenge to complete. The motivation came from wanting to be a solution architect eventually. In order to become a good solution architect, the technical fundamentals must be strong, and these challenges will help me hone my skills.

I came across another challenge offered by Lars Klint. The objective of this challenge was as follows:
To create a web application thatโ€™s scalable and robust and a stable deployment pipeline for the application. In addition, we want to achieve the Azure Infrastructure as Code (IaC) for consistency.

These were the technologies involved:

  1. ASP.Net MVC
  2. Visual Studio 2019
  3. Microsoft Azure
    1. Azure Blob Storage
    2. Azure Front Door
    3. Azure App Services
    4. Azure Cosmos DB
    5. Azure Pipelines
    6. Azure Repos (Optional)
    7. ARM templates
  4. GitHub

The scale of this challenge was much bigger than the previous challenge that I had completed.

My approach for tackling big problems has always been to break them down into small problems that can be easily resolved.

These were the sequential steps to completing this challenge:

  1. Setting up preferred source control (GitHub/Azure Repos)
  2. Creating a simple web application locally
  3. Using ARM template:
    1. Create Azure Blob Storage
    2. Create Cosmos DB
    3. Create/Deploy Azure App Services
    4. Create Azure Front Door
  4. Using YAML to create Azure Pipeline
    1. Build the Solution
    2. Perform Unit Test
    3. Publish Build
    4. Deploy to Staging slot in App Services
    5. Swap the Staging slot to Production slot in App Services

Firstly, I would like to take some time to appreciate how the ARM template allowed me to continue my work the next day, exactly where I stopped. As the challenge took a couple of days to complete, I deleted the resources when I was not using them. The ARM template helped to speed up the setting-up time.

Secondly, for this challenge, instead of storing the image in the Cosmos DB, I decided to store the reference path of the image instead. This was a more practical and sustainable solution. Furthermore, we could used CDN to load faster, when required.

Lastly, I encountered deletion of the VNET during the first night of implementation. This issue occurred when I did not disconnect the VNET integration when I deleted the app services.

  1. It was resolved by recreating the App Service and disconnecting the VNET integration (this was also why the ARM template was useful!) - link
  2. I referenced the troubleshoot guideline - link

Vnet.PNG

With that, I concluded the challenge with a successful note.

Once again, please feel free to drop me a comment/feedback/question if you have done a similar challenge.

Till the next exploration!

ย