What I Learned from the Cloud Resume Challenge: A Personal Journey
I recently completed my Cloud Resume Challenge, a hands-on project that is designed to enhance once cloud computing skills. It’s a beginner project, so to spicy it up i used my Old React portfolio instead of basic html, CSS and JavaScript website. As a seasoned web developer and a guy who like AWS, so used this challenge as a way to test my knowledge and also showcase my ability yo use different Services.
Prerequisites and Context
Before taking on the challenge, it’s recommended to have some knowledge of AWS or even better a AWS Cloud Practitioner certification. So I made sure that i had the necessary groundwork laid. An AWS Cloud Practitioner certification was recommended, which I had already obtained. Additionally, I leveraged my existing React.js Portfolio as a way to increase the difficulty for this project.
Building a Cloud-Powered Resume
The Cloud Resume Challenge consist 16 steps, guiding me through the process of building a robust and dynamic cloud-powered resume website. Now let’s dive into the key steps :
1. Laying the Foundation:
- I began by leveraging my existing React.js portfolio website, Making it responsive for all devices and update different dependency.
2. Cloud Infrastructure Setup:
Next, I transitioned my website to the cloud, utilizing S3 for secure and scalable static website hosting.
Additionally, I implemented CloudFront and Certificate Manager for HTTPS delivery, optimizing caching and distribution settings to enhance website performance.
3. Custom Domain and DNS Configuration:
To give my website a professional touch, I acquired a custom domain name (mohitcloud.com) from Hostinger. Configuring DNS settings involved navigating the complexities of hosted zones and Route 53.
Thorough research and documentation helped me establish a smooth connection between my domain and AWS and configured my connection to Hostinger by exchanging nameservers
4. Interactive Visitor Counter:
This involved creating a component to implement visitor counter using React.js, Lambda functions, DynamoDB to store views and used python for scripting function to return and update views.
But i didn’t expect this step to take this much time cause i was bumping into many edge case we will discuss this in “KEY CHALLENGES” Section
5. Backend Development and Permissions:
- The challenge also involved building a robust backend. I wrote Python code within the Lambda function to interact with DynamoDB, utilizing the boto3 library for efficient AWS SDK interactions. Implementing error handling and logging mechanisms further enhanced the backend’’s reliability.
6. CI/CD Pipeline Automation:
Finally, I established a CI/CD pipeline for automated testing and deployment using GitHub Actions and Terraform.
Terraform helped me define and manage the AWS infrastructure (DynamoDB table and Lambda function), while GitHub Actions triggered Terraform deployments whenever my code changed.
Key Challenges and Solutions
Throughout the Cloud Resume Challenge, I encountered several obstacles:
Lambda Function Re-renders:
Problem: The Lambda function was being called twice .
Solution: So i was using useEffect hook to call lambda function that return view count but it was being called twice cause useEffect call function initial load and second on re-renders
- So main problem was React’s StrictMode , cause strict mode is like cycling with training wheels and its used as extra layer of protection and removing it from the main App component prevent those unnecessary re-renders.
DNS Configuration:
Problem: Difficulty in understanding the concepts of hosted zones, DNS records and configuring AWS with third party domain name distributors.
Solution: Researched about how to configure AWS to work with Hostinger, it was just basically replacing Name-Servers
Learned so many things about DNS best practices and AWS Route 53 configurations.
AWS Account Verification:
Problem: Encountered delays in account verification, preventing CloudFront setup.
Solution: It was simple cause it got resolved by a support case with AWS to expedite the verification process.
Lambda Function Permissions:
Problem: Lambda function lacked necessary permissions to access DynamoDB.
Solution: Carefully reviewed and granted appropriate IAM roles and permissions to the Lambda function.
- Cause of my previous experiences i was very careful with permissions and IAM roles.
CI/CD Pipeline Errors:
Problem: Encountered errors during Terraform deployments or GitHub Actions workflows.
Solution: Created a GitHub Action consisting of 3 jobs first to install dependencies, second to build a static website and third one is to update files on S3 bucket using a market place action made by Jake Jarvis
- Thoroughly reviewed Terraform configuration files and GitHub Actions workflows for syntax errors or inconsistencies.
The Final Product
By successfully completing the Cloud Resume Challenge, I’ve achieved several key objectives:
- I’ve deployed a fully functional and responsive Cloud Resume website { live here }, showcasing my cloud development skills and project management capabilities.
- Gained some practical experience with various AWS services like S3, Lambda, API Gateway, DynamoDB, CloudFront, and Route 53, solidifying my understanding of cloud architecture best practices.
- I established a CI/CD pipeline using GitHub Actions and Terraform, automating deployments and ensuring continuous integration and delivery.
The Takeaway
The Cloud Resume Challenge has been a rewarding journey of learning. It provided me with the opportunity to solidify my cloud computing skills and tackle technical challenges, and ultimately build a dynamic and interactive cloud resume website. I encourage others to embark on this challenge and explore the exciting world of cloud development!
Subscribe to my newsletter
Read articles from Mohit Gupta directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by