![Don Safar Image]
Hello, I’m Don Safar. In the summer of 2021, as I was winding down my previous business venture, I embarked on a journey into the world of cloud computing—a realm that was entirely new to me. I’d spent years in IT, starting from the ground up at Lender Processing Services and later transitioning into more specialized roles. Yet nothing could have prepared me for the transformative experience that became known as the Cloud Resume Challenge (CRC).
The CRC wasn’t just a project; it was a rigorous test of my capabilities, a deep dive into AWS services, and a personal reminder that we can always push past our perceived limits. Below, I’ve broken down my journey into six distinct phases. Each phase presented its own set of challenges, technical hurdles, and important lessons.
The Cloud Resume Challenge or CRC was way more than just learning to do some cool stuff in the cloud. The CRC taught me how to really push the boundaries of what I thought I was capable of. Actually it was more of a reminder of my capabilities. Below you will find the project broken out into six phases. In each phase I go over my challenges and how I over came each of them.
Table of Contents
Phase 0 : Laying the Foundation with AWS Certifcation
Phase 1 - Building the Frontend and Basic Infrastructure
Phase 2 - Diving into APIs, Lambda, DyanomDB
Phase 3 - Connecting the Dots with Java Script and CORS
Phase 4 - Embacting Infrastructure as Code and CI/CD
Phase 5 - Reflecting on the Journey
Cloud Resume
Here are the detailed instructions of the Challenge.
Cloud Resume Instructions
CRC Project
Laying the Foundation with AWS Certification
Before diving into the hands-on aspects of the challenge, I took the crucial step of earning my AWS Cloud Practitioner Certification. This phase was about more than just passing an exam—it was about building the mindset required to thrive in a cloud-centric world.
The Challenge: With zero prior cloud experience, I was stepping into uncharted territory.
The Process: I began with the AWS Certified Cloud Practitioner (CCP) and soon set my sights on the more demanding AWS Certified Solutions Architect – Associate.
The Takeaway: Every setback, like scoring a disheartening 45% on a practice exam, was a lesson. I learned that perseverance and self-reflection were as critical as technical knowledge.
This foundational phase not only equipped me with essential certifications but also set the stage for the hands-on challenges to come.
top
Phase 1: Building the Frontend and Basic Infrastructure
With certification in hand, I moved on to creating a visually appealing and functionally robust web presence.
Technologies Used: HTML, CSS (with a bit of help from Start Bootstrap), Amazon S3, DNS management via Route 53, AWS Certificate Manager, and CloudFront.
Highlights:
Crafting a custom design by tweaking CSS to reflect my personal style.
Experimenting with CloudFront’s caching capabilities—imagine loading your site with a single bar of cell service while on vacation!
Lessons Learned:
The importance of knowing where to look for up-to-date tutorials (thanks to AWS’s extensive documentation).
How every minor adjustment contributes to the bigger picture of a seamless user experience.
top
Phase 2: Diving into APIs, Lambda, and DynamoDB
The real technical challenge began when I needed to integrate a visitor counter into my site.
Technologies Used: AWS Lambda for serverless execution and DynamoDB as the backend datastore.
Challenges Encountered:
Understanding the intricacies of AWS Lambda—learning how a function waits, triggers, and then executes code.
Integrating DynamoDB operations: fetching, incrementing, and updating the visitor count.
Key Takeaway:
Sometimes, the challenge isn’t about solving a business problem but learning how the cloud works at a fundamental level. This phase reminded me that persistence and troubleshooting are vital in mastering new technologies.
Phase 3: Connecting the Dots with JavaScript and CORS
After successfully setting up the backend, it was time to marry the frontend with the API.
The Process:
Implementing JavaScript to call the API upon page load.
Debugging issues when nothing appeared on the screen—only to discover that the culprit was CORS.
The CORS Conundrum:
A puzzling error stating, “Origin [your domain] is not allowed by Access-Control-Allow-Origin.”
Realizing that proper CORS configuration and understanding preflight requests were essential to resolving the issue.
Lessons Learned:
Never underestimate the importance of debugging tools like the browser’s inspector.
Each small victory, like finally receiving a 200 response with the correct data, reaffirmed that persistence pays off.
Embracing Infrastructure as Code and CI/CD
Until this point, most work had been done manually through the AWS console. It was time to automate.
The Technologies:
Experimenting with AWS SAM initially, then switching to Terraform for its flexibility and broader community support.
The Experience:
Rewriting manual processes into code, learning to build modules, and deploying changes via CI/CD pipelines.
Encountering DNS propagation issues that taught me the importance of aligning registered domains with hosted zone settings.
What I Learned:
Automation is not a shortcut—it’s a rigorous process that, when done right, saves time and minimizes human error.
Even when setbacks arise, the discipline of Infrastructure as Code (IaC) pushes you to think more clearly about system architecture.
top
Reflecting on the Journey
1Finally, I reached the part of the challenge where I could step back and reflect.
The Takeaways:
Never Stop Learning: The cloud is vast and ever-changing. Staying updated is key to not being left behind.
Embrace Setbacks: Each challenge—whether it’s a CORS error or a DNS misconfiguration—is an opportunity to learn and improve.
Stay Positive: The mindset you bring to every challenge is as important as the technical skills you develop.
As I wrap up this post, I want to thank everyone who followed along. Special thanks to those like @forrestbrazeal who helped me discover new aspects of my own resilience and potential.




Top comments (0)