DEV Community

Amaniel Gobezy
Amaniel Gobezy

Posted on • Edited on

The Cloud Resume Challenge

This blog post is about The Cloud Resume Challenge. After reviewing the challenge, I knew I'd want to make a few changes.

  • Built the frontend in React.
  • Used JavaScript for the frontend and the Function App. Sticking to a single language made things easier.
  • Switched to Static Web Apps instead of using the Static Web App feature for Storage Accounts.
  • Didn’t create any unit tests as it was beyond my goals.

With that out of the way, here is how everything was setup.

  • Bought a domain from Namecheap. This was a straight forward process and it cost $18 for the domain. I've used Namecheap in the past and that's why I went with them instead of Cloudflare, Azure DNS and etc.

Purchasing a Namecheap domain

  • Created an Azure tenant:
    • Verified the domain
    • Set up backup admin accounts
    • Enabled MFA and tested the backup accounts
    • Created a subscription with a $50 budget to control costs

Subscription budget

  • Created an Azure DevOps organization.
  • Set up my local build environment:

    • Installed VS Code
    • Installed Docker (this will make sense later on)
    • Created the repo (this will change over time as I add more folders and files)
  • Created the Static Web App.

  • Built the frontend and made the first commit.

Initial commit

First commit of index.html

  • Spent a lot of time troubleshooting Static Web App deployment issues. I didn't record the issues I went through so I can't go into detail about them.

  • Set up a Cosmos DB account and table. I took advantage of the free tier to keep costs down.

Cosmos Table DB

  • Built the Function App. This took a while to figure out as I'd never used this product before. After a few hours I could deploy to Azure and was able to send GET and POST requests.

GetAPIVistorCount

PostAPIVisitorCount

  • Microsoft takes a week to approve free hosted agents and waiting a week would hold me back. Therfore I switched to a self-hosted build agent.

Docker setup

  • Built the pipeline for the Static Web App. Initially I used the YAML template as an example but the final stage wouldn't work, building was fine but deploying to Azure lead to random errors and timeouts. In the end I switched to using the SWA CLI.

Successful first build

Build stage

Deploy stage

  • Built the pipeline for the Function App. This took less time then building the Static Web App pipeline.

Build stage

Deploy stage

  • I went for seperate pipelines so I can build and deploy independently. Folder based triggers were used to only run the pipelines when relevant changes are detected.

Frontend pipeline triggers

Backend pipeline triggers

Flexible Consumption App cost

Consumption App cost

  • Security was always on my mind. I followed best practices but I knew I’d miss something. I researched security tools for SCA, SAST, DAST, Azure config scanning, and IAST. I ended up using Aikido. They offer a free plan and covered everything except IAST.

Aikido products

Aikido products

  • Finally, the part I dreaded, redoing my resume and making a nice looking website. You can check it out at https://amanielgobezy.com/.

I've added two diagrams to give an overview of the entire setup.

Azure Setup

  • Diagram created using Eraser:

Build and deploy process

Thanks for reading this blog post. Continue onto Part 2 where I go over the issues I haven't resolved and what I left out to save time.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs