I stumbled across the Cloud Resume Challenge by accident. Somebody had posted on linkedin about the things they learned by doing this challenge. They were talking about some very cool things so I decided to check it out. I really liked what I saw, and thus I embarked on this journey.
Cloud Resume Challenge - Part 1 What is the Cloud Resume Challenge?This challenge is really just a self-guided curriculum. By performing each of the steps of the challenge you are checking off a list of useful skills related to creating, deploying, and maintaining cloud-based tools. I am already quite proficient in the hardware side of things. I have deployed physical servers for my test lab at Xbox. But that is only one small part of the cloud. The cloud fascinates me and is only going to become more important as more and more of the global population gains access to the internet. When I discovered this challenge I was delighted to discover that it was just a guided self-learning curriculum. The absolute best part of the whole challenge? It's what you have to show for it when you are done. Once you complete the challege you have a practical public facing portfolio piece. A showcase of everything you have learned along the way that anybody in the world can see. Ars Technica also released an article about how they host their website. After learing more about the Cloud Resume challenge a lot of the concepts they outlined there sounded very familiar. It was proof that the skills imparted through the challenge were valid in the industry. Here is the challenge:
- 1 - Certification
- Your resume needs to have a Cloud Platform certification on it. Such as the AZ-900 certification, the AWS Cloud Practitioner certification, or the Google Cloud Digital Leader certification.
- 2 - HTML
- Your resume needs to be written in HTML. Not a Word doc, not a PDF.
- 3 - CSS
- Your resume needs to be styled with CSS. No worries if you're not a designer - neither am I. It doesn't have to be fancy. But we need to see something other than raw HTML when we open the webpage.
- 4 - Static Website
- Your HTML resume should be deployed online as an Azure Storage static website. Services like Netlify and GitHub Pages are great and I would normally recommend them for personal static site deployments, but they make things a little too abstract for our purposes here. Use Azure Storage.
- 5 - HTTPS
- The Azure Storage website URL should use HTTPS for security. You will need to use Azure CDN to help with this.
- 6 - DNS
- Point a custom DNS domain name to the Azure CDN endpoint, so your resume can be accessed at something like my-c00l-resume-website.com. You can use Azure DNS or any other DNS provider for this. A domain name usually costs about ten bucks to register.
- 7 - Javascript
- Your resume webpage should include a visitor counter that displays how many people have accessed the site. You will need to write a bit of Javascript to make this happen. Here is a helpful tutorial to get you started in the right direction.
- 8 - Database
- The visitor counter will need to retrieve and update its count in a database somewhere. I suggest you use the Table API of Azure's CosmosDB for this. (Use serverless capacity mode for the database and you'll pay essentially nothing, unless you store or retrieve much more data than this project requires.)
- 9 - API
- Do not communicate directly with CosmosDB from your Javascript code. Instead, you will need to create an API that accepts requests from your web app and communicates with the database. I suggest using Azure Functions with an HTTP trigger for this. They will be free or close to free for what we are doing.
- 10 - Python
- You will need to write a bit of code in the Azure Function; you could use more Javascript, but it would be better for our purposes to explore Python - a common language used in back-end programs and scripts - and its Azure SDK. Here is a good, free Python tutorial.
- 11 - Tests
- You should also include some tests for your Python code.
- 12 - Infrastructure as Code
- You should not be configuring your API resources - the Azure Function, the CosmosDB - manually, by clicking around in the Azure console. Instead, define them in an Azure Resource Manager (ARM) template on a Consumption plan. This is called “infrastructure as code” or IaC. It saves you time in the long run.
- 13 - Source Control
- You do not want to be updating either your back-end API or your front-end website by making calls from your laptop, though. You want them to update automatically whenever you make a change to the code. (This is called continuous integration and deployment, or CI/CD.) Create a GitHub repository for your backend code.
- 14 - CI/CD (Back end)
- Set up GitHub Actions such that when you push an update to your ARM template or Python code, your Python tests get run. If the tests pass, the ARM application should get packaged and deployed to Azure.
- 15 - CI/CD (Front end)
- Create a second GitHub repository for your website code. Create GitHub Actions such that when you push new website code, the Azure Storage blob automatically gets updated. (You may need to purge your Azure CDN endpoint in the code as well.) Important note: DO NOT commit Azure credentials to source control! Bad hats will find them and use them against you!
- 16 - Blog post
- Finally, in the text of your resume, you should link a short blog post describing some things you learned while working on this project. Dev.to or Hashnode are great places to publish if you don't have your own blog.
There are 3 different versions of the Cloud Resume Challenge. One for Azure, one for the Google Cloud, and one for AWS. The author tailors each challenge to the specific tools that each of these platforms use in order to become an expert in whichever one you think is the most exciting. Except... I am hipster trash and I don't want to use any cloud service where I will have to pay a FAANG company any of my hard earned money! Money that I earned by working for Microsoft. So, I decided that I will not be following any of the specific challenges. I will instead make my own. I will be deploying my resume to the Dfinity Internet Computer! My challenge resume will likely be the only one hosted as a dApp and the hosting costs paid for exclusively by the rewards that are earned from the governance tokens I have staked into the IC Network Nervous System. No subscriptions for me! Just one up front payment that will take care of the hosting costs indefinitely! Does this sort of defeat the purpose of the challenge a little? Perhaps. But perhaps it doesn't matter because this is what I piqued my curiosity the most and would motivate me to learn. Besides, if I can learn one platform, I can learn another.
Up next on Cloud Resume ChallengeNow I have a plan, so it is time to start the challenge! The first steps are to build an HTML resume and host it online as a public webpage. I first learned HTML way back in middle school, so how hard could it be? Continue the jorney in Part 2 here: Cloud Resume Journey - Part 2