Right after getting my AWS Solutions Architect certification, I was thinking what my next step in the cloud domain should be. I was getting bombarded with recommendations on Youtube to build a portfolio and it became overwhelming at one point. I needed a fresh look at this topic. One day, I was scrolling through my Reddit feed when I came across something that caught my attention.
Now, I was still new to the community and looking for jobs in cloud (or at the very least looking for something meaningful to do with my new skills). The Cloud Resume Challenge seemed like a really cool way to gain real-world experience, and reading stories from previous challengers truly piqued my curiosity. Stories like how they changed their career path to cloud, stories of people just like me who are beginners really inspired me to start my journey. So in my mind, since I had already passed my exam in September, I thought this would be a piece of cake. I couldn't have been more wrong.
Before diving into my personal journey of the challenge, let's first understand what the Cloud Resume Challenge is. Created by Forrest Brazeal a Cloud Guru, the Cloud Resume Challenge is a hands-on project designed to give aspiring cloud professionals a taste of real-world tasks they might encounter in a cloud role. The challenge involves a series of tasks, from building a resume website to setting up continuous integration and continuous deployment (CI/CD) for automated deployments. The requirements can be found in the website.
Setting up the Website: Expect 99% Panic, 1% Progress!
While many might find the initial steps relatively straightforward, I encountered significant struggles. HTML and CSS posed a challenge for me throughout my academic years, and I avoided learning them for years after graduating. Deciding to embrace this language was a major milestone for me which greatly expanded my grasp of web development. After dedicating three months to earning an AWS Solutions Architect certification, I felt prepared to delve into website creation. Keen on enhancing my skills, I selected an appealing bootstrap template from HTML5 UP and modified it. Honestly, I was still trying to get the hang of a lot of the syntax, so it was a bit like navigating in the dark at times. Eventually, I got a basic website up and running on my local machine. The next step? Finding a domain to host my website online.
I was already quite familiar with Amazon S3, Cloudfront. After setting up my
index.html file in S3, along with all the rest of the website assets, I looked into Cloudfront for the distribution. For the domain, as suggested by the Challenge, I used Route 53. I now had a domain to my name which was also SSL certified by AWS Certificate Manager.
Tackling the Backend: A Dance with Databases and Code!
I used many sources that from Youtube to Discord, Stackoverflow to Reddit. Since the internet was my arsenal, I made sure to use it to its fullest to help me build my first ever website.
There were a few elements that really stood out, and it took some serious brain-picking to understand them, especially the API Gateway. I was using the API Gateway for web-to-database communication, but I had never worked hands-on with it before. I was facing an issue that turned out to be quite common in the community (lucky for me). It was a Cross-Origin-Resource-Sharing (CORS) error which occurred when trying to tie your database, lambda and API together. What I figured out from all the poor souls before me, was that I had to add my domain name and the cloudfront distribution to the Access-Control-Allow-Origin. Coming from a Computer Science background, I have a decent understanding of programming languages. As a result, coding in Python on AWS Lambda turned out to be easier for me than setting up the API.
Juggling AWS SAM and GitHub Actions: A Developer's Tightrope Walk
So after several days and nights of fixing Lambda, Cloudfront (cache invalidation mostly) and API Gateway errors, I decided to look into CI/CD (Continuous Integration and Deployment) before the Infrastructure as Code section (This was a mistake). My approach to CI/CD was like stepping in a dark room and trying to find the switch. There were times I would type in the same git command for the tenth time hoping something would change (the definition of insanity). Github Actions was a fairly new concept for me and the first time that it ran successfully, I was ecstatic! But that was not the end.
After tackling the challenge of cache invalidation in GitHub Actions and establishing a solid CI/CD pipeline on GitHub, the next step was automating the entire process using AWS SAM. To draw on the analogy of a dark room, this time it felt like I was fumbling for a light switch in a place without any electricity. Initially, I misunderstood the task at hand; I thought I could simply layer SAM onto my existing build. Alas, I was wrong again!
After a good deal of head-scratching and research, I realized I needed to start from square one. I crafted a YAML file that defined the logical resources AWS CloudFormation would use to generate the physical resources for my entire infrastructure. All I needed to do was input the right AWS SAM command in my machine and it automatically created stacks. Honestly, I was pretty surprised at how simple the solution turned out to be, especially after it had initially seemed like such a huge, complicated mess.
Like any project, the Cloud Resume Challenge wasn't without its hurdles. From debugging Lambda function errors to ensuring seamless integration between different AWS services, from tirelessly working on AWS SAM to implementing Github Actions, the journey was filled with learning opportunities. It was these challenges that made the entire process so rewarding. At the end of the challenge, I had not only a cloud-powered resume to showcase my skills but also a treasure trove of practical experience. The challenge reinforced the idea that the best way to learn is by doing. Every obstacle faced and problem solved added a new dimension to my understanding of cloud technologies.
If you're considering taking on the Cloud Resume Challenge, or anything remotely similar, here's my heartfelt suggestion: Just go for it! There's something about getting your hands dirty and wrestling with real-life problems that you just can't get from books or tutorials. It's like the cloud computing world – always changing, always throwing new stuff at you. Taking on these projects isn’t just about beefing up your resume; it’s giving yourself a secret weapon in this ever-competitive job market. Trust me, it’s worth every bit of the effort!
Here's the website I created.