Festive Hackathon Review

Festive Hackathon Review

As part of this year’s Azure Festive Calendar I took part in a Hackathon hosted by Wesley Haakman. This event was probably the highlight of the whole calendar for me. It gave me the opportunity to brush off my Terraform skills and see what I could do. Whilst I did not win I had a lot of fun taking part. There is a lot to learn, which I hope to apply to similar events in the future.

My Submission can be found on Github here on the submission branch. I hope to continue to improve the solution when I get spare time, so the main branch may have progressed.

Mert Senel was crowned the winner by Wesley and the judging panel. In the annoucement post on Wesley’s site, they point to Mert’s solution and blog.

Lessons Learnt

Looking at Mert’s solution and looking back at my experiences there are a few things that immediately pop out that I could use to improve my submission.

Submission report

Comparing my report to Mert’s it is clear that I needed to spend more time on it. His report is far more comprehensive. I cover the Technologies used and current issues, but there are a number of areas misisng when compared to Mert’s table of contents.

  • Architecture
  • Technologies Used
  • How to Deploy
    • Deployment Requirements
    • Recommended
    • Setting Up Your Repository
      • Creating Personal Access Token For GitHub Container Registry
      • Creating Azure Credentials to be used in GitHub Actions
      • Pre-Deployment Steps
        • Project Naming Legend
        • Updating the parameters file
    • Deployment Steps
    • Build and Push the Docker Container Image
    • Deploy Azure Infrastructure and Use the website
      • If you get this Error Page
    • How to Add A New Country to the Architecture (Optional)
  • How to Clean Up the Azure Resources
  • Hackathon Requirements Checklist
  • Acknowledged / Out of Scope Issues

Traffic Manager

I initially added a single Frontdoor to act as a way to provide a single URL, with backend pools for each geographic region, but after realising Azure FrontDoors use latency to dictate the “closest” deployment. I decided this would not work as I wished. I did not however think to use a Traffic Manager. Looking at Mert’s solution I believe this is the way I should have gone to deploy a single URL. There is a tutorial on the MS Docs site

Resource Cleanup

While not necessarily part of the deployment, I should have included in a workflow to clean up the resources rather than relying on the deletion of the owning Resource Group, including a separate workflow allows for management of the resource removal from within GitHub.

Other Notes

GitHub Packages

Mert’s solution also uses GitHub packages as the Container repository. I have not looked into GitHub’s registry, I used an Azure Container Registry I had previously deployed for other sandbox work, the ACR achieved the same outcome, but there is a free option within GitHub Packages for Public repos so definitely worth a look.