Azure Resume Challenge
Deploying a serverless website using an automated CI/CD pipeline
Where do we go from here?
When I decided to start my cloud journey I thought getting certified under a cloud vendor would open the floodgates to a swarm of recruiters trying to lock me down for a high-paying cloud job.
But, reality is often disappointing...
After some further research, I discovered that while certification will get your foot through the door. Jobs require an individual with not only working knowledge of a cloud platform but also competent in complementary skills such as Bash, Terraform, Docker, etc. They want an individual with practical experience to even be considered for a job opening.
But how does someone show they have practical experience when they can't even get a cloud job in the first place? (is this a Catch-22?)
The answer is Projects!
Projects allow you to showcase all the skills an employer would be looking for in a cloud professional by creating a real-world application using relevant technologies and services.
This brings me to The Cloud Resume Challenge.
What is The Cloud Resume Challenge?
The Cloud Resume Challenge is a practical assignment created to assist in bridging the gap between Cloud certification and Cloud employment. Many of the abilities that actual Cloud and DevOps engineers utilize regularly are included in it. The Cloud Resume Challenge is a multi-part (approximately 16-step) resume project that involves everything from building a website to putting in place a CI/CD pipeline. It aids in developing and showcasing skills essential for seeking a career as a cloud engineer.
Certification
Obtaining a fundamental or associate-level Cloud certification is the first step in the challenge. It's not necessary, but based on my experience, I'd highly advise it, especially if you're new to technology or don't have a technical background. To pursue a career in the cloud, you will be able to learn and confirm you have the necessary knowledge.
I have multiple cloud-related certifications but the ones I've gotten the most value from are my Google Cloud Associate Cloud Engineer I got from completing the Google Africa Developer Scholarship(GADS) and my Azure certifications AZ-900 and AZ-104.
Architecture
The Project
Account Management
This deals with the prep in terms of configurations to the Azure account to prevent unintended mishaps.
First, we set up two new management groups in our Azure account: one for our production/live environment and one for our development/testing environment.
Under each management group, we create a new "pay-as-you-go" subscription for billing needs. This will make it easier for us to keep tabs on how much our resources are costing us in the different groups. We also set up alerts for spending to help us stay within budget.
Create a GitHub repository for your project
Here I started by creating two repositories: one for the front end and one for the back end. This is because my resume website( or page in my case) is a decoupled web application where the front end and back end are built, maintained, and updated separately and only connected through an API.
Create a website in the repository
As a former computer science student Code Reuse is the greatest software development concept ever devised.
So, in the spirit of code reusability, I made use of a template for my resume page. I simply modified the code to fit my needs. This was mainly putting in my details and changing the size of the elements to fit my large email. (Didn't know there was an ideal length for an email before this project)
Add a visitors counter to your website
Having the website's visitor count posted was part of this challenge. On one side, I added JavaScript code to the website files, and on the other, I created a C# function that is housed on Azure functions. To display the total number of visitors on the website, the JavaScript code calls the execution of a C# function, which is then executed, calculates, stores the result in the Cosmos DB database, and returns the information to the JS code. This operation is carried out each time a user accesses the page. In this instance, the C# function acts as an API to prevent the JS code from directly accessing the database.
Deploy the website to Azure Blob storage
Here I deployed the site on Azure by hosting it on Azure Blob storage and configured it for a static website. You can find a great guide on how to do it here in the Microsoft documentation.
Enable HTTPS and custom domain support
The IP address of the server hosting a website must typically be mapped to a domain name to make it accessible via a domain name. But what can I do in this situation because there isn't a server in use with an IP address? (Since we have a serverless architecture)
I enabled CORS and registered a DNS entry on the name registrar (Namecheap) for the subdomain https://resume.rufaronyakudya.com/ since I wanted the resume website to act as a page on my portfolio website.
On Azure CDN, I associated the custom domain name with the CDN Endpoint and then enabled HTTPS.
Set up GitHub actions and tests
I created a few basic tests for my API using XUnit to test the backend. I also made two pipelines with GitHub Actions, one for the front end and one for the back end. Upon pushing the changed front-end code, the front-end pipeline immediately updated the Azure Storage blob and cleared the cache. The back-end pipeline built, tested and deployed the C# code to the Azure Function resources.
Conclusion
The Cloud Resume Challenge was a fantastic opportunity for me to put my newly acquired knowledge into action. I spent approximately a month working to complete the challenge, but it was worthwhile. Throughout the endeavor, I encountered a few obstacles that left me feeling stuck and frustrated. But after overcoming them, it was these very same difficulties that gave me the greatest sense of satisfaction. I'd want to make some improvements, especially in the security department.
I now have a tangible product from my effort that demonstrates the work I put forward. I got to experience a lot of new tools and technologies, but I still have a lot to learn.
I'm looking forward to my next project in my Cloud journey.
Useful resources
You can check out my resume's GitHub here and take a look at my portfolio website for inspiration.
You can take a look at the CloudGuru Azure Challenge by Gwyneth Pena-Siguenza. It's the one I used for the format of this project.