My Cloud Resume Challenge Project!

Naveen
4 min readDec 17, 2023

--

Hello Everyone!

Hope everyone doing well with good health & well-being. Recently I have completed some cloud certifications like AWS Cloud Practitioner, and AWS Solutions Architect Associate, and after getting certification, it's important to implement those learnings in some ways then only are you able to retain that knowledge.

Where do I begin?

After my certification journey, I was looking to build cloud projects, and then I came to know about the “#TheCloudResumeChallenge” over Twitter. So after some research, I have found that it is the most recommended beginner-friendly project & helped many people land cloud engineering jobs. For a quick background of myself, I'm a civil engineer graduate & passed out in 2018 & then I got interested in cybersecurity & I self-learned and got a job as a Security Analyst. Then I got to know about Cloud technology and got more interested in the cloud. So I did not have any prior hands-on experience in the cloud before starting this project and then while doing this project I gained some confidence and got some good hands-on experience in this after reading AWS documentation & tutorials. This blog post contains a short walkthrough of the steps I took to complete the #TheCloudResumeChallenge and what I’ve learned from this experience & below is the AWS cloud architecture for my project.

AWS cloud Architecture diagram for Cloud Resume Challenge
AWS Cloud Architecture diagram for Cloud Resume Challenge

Getting started

I started looking for good HTML, CSS, and Javascript resume templates over the internet and I was just frustrated with the amount of customization we have to do in that template, then I started building my own resume website with some YouTube tutorials. So I recommend you build your own website and able to learn HTML, CSS, and Javascript in this journey. Don't worry you don't have to expert on the above things, just learn the basics and start building your website by Google the features you want to implement for the website.

Step 1: Setting up the frontend website

After building my resume website, I started using the GitHub repository to store the code and track changes on the code. Then I uploaded my files to the AWS S3 bucket to store and host the website. Then to access my resume website over the internet I need an online identity to easily remember & access the website. So I registered the Domain name (Naveenraj.net) in the Porkbun domain register & then set all DNS Records in AWS Route53 →DNS service. Then I used AWS Certification Manager to store & verify the SSL/TLS certificate for HTTPS. I created the AWS Cloudfront distribution (CDN) to store and retrieve the resume website at Edge locations to access my resume website over the internet without any latencies and added my domain name (https://resume.naveenraj.net). Then created the Route53 CNAME Records for my domain name to the Cloudfront distribution URL. So the frontend architeture flow till this step was

Route 53 → Cloudfront → Certificate Manager → S3 bucket

Step 2: Setting up the backend infrastructure

Why do we need backend infrastructure? As part of this challenge, our resume website should show each visitor count. To store the visitor count we need a database, so I chose AWS DynamoDB to store & update each visitor count. To update the visitor count in the database I used the AWS Lambda function to update the visitor count in the DynamoDB. The lambda function contains Python code that uses AWS APIs to update and get the visitor count in the DynamoDB programmatically. So the backend infrastructure flow till this step was

Lambda → DynamoDB

Step 3: Connecting frontend with backend

To get & update the visitor count for your resume website we need to connect our frontend website with the backend infrastructure. So I chose AWS API Gateway to create an HTTP API to communicate frontend website with backend infrastructure to get & update the visitor count safely without exposing the AWS DynamoDB, and Lambda services on the internet. So the final flow till for the infrastructure was

Route 53 → Cloudfront → Certificate Manager → S3 bucket → API Gateway →Lambda → DynamoDB

Step 4: CI/CD Integration

So i mentioned earlier, I stored all the files in the GitHub repo and there I created two CI/CD workflows & below are the 2 workflows:
1) To update the latest updated files to the S3 bucket.
2) The Cloudfront cache needs to be invalidated, then only my resume website shows the updated content.
Below is a sample workflow output.

Output of CI/CD workflow
Output of CI/CD Workflows

Step 5: Infrastructure as Code (IAC)

So we already created the frontend & backend infrastructure, if we want to deploy the same infrastructure we need to create & delete these resources manually each time, and it's a painful process. So we have an option to create & delete the infrastructure using code called Infrastructure as Code (IAC). I used a Terraform IAC tool and wrote the Terraform code that will create & delete the resume website application infrastructure with simple commands.

My Cloud Resume Challenge Project Demo live link: https://resume.naveenraj.net/

Project files Store Github Repo:
https://github.com/naveend3v/aws-resume

Thanks for reading & if you have any doubts in this project you can reach out to me over below social media:

Twitter: https://twitter.com/naveend3v
Linkedin: https://www.linkedin.com/in/naveend3v/
Github: https://github.com/naveend3v

--

--

Naveen

Self learner & Love to build thing on Cloud & Web