After three years of my CS degree, I explored every field I could specialize in. From web development to machine learning, Java to C++, you could name anything, and I would tell you about a project I had made revolving around that particular thing. At this point in my life, I had become a jack of all trades, master of none. Why was that? The answer to that is simple. I couldn't settle on a field.
Until I found out about the cloud, I didn't make much of it. It's another field I'd explore and eventually lose direction in. Plus, 'cloud computing' sounds like just about the most complex field ever. But I decided to take a step forward and get into it. I discovered that AWS has the largest market share of the three largest cloud providers, and I decided to start with AWS.
So what next? Certifications?
From my three years of studying computer science, if there was one thing I learned, it was this: to learn something, you have to get your hands dirty. That's right, hands-on work. I had to make projects. In the past, I've taken courses that contain 50+ hours of videos each, only to decide I don't want to be doing that in the future. Moreover, those videos wouldn't teach me more than theory; I had to do a project to truly understand anything.
So, eventually, I found the cloud resume challenge, labeled as the entry point for beginners trying to get into the cloud. It immediately caught my attention. I got my hands on the AWS edition book and had no idea what I was getting into. I can say now that it was a life-changing experience.
After completing the cloud resume challenge, here is my journey.
You may access my resume website here: jawadify.xyz
Prerequisites:
The initial requirement of the cloud resume challenge was to acquire the foundational Cloud Certified Practitioner Certification. However, this step was optional. As I already had an IT background, I skipped this step. My goal was to do hands-on work before I started studying for certifications.
Part 1: Building the front-end
The first step of this part was simple: making a resume in HTML and CSS. I already had ample experience doing this, so I did the additional developer mod. I made the front end using React instead of simple HTML and CSS. Moreover, since I had recently updated it, I could replicate the exact resume I usually hand out to recruiters. What better way to say to someone asking for your resume, "Go to this website," and have the exact resume printed on their screen?
The next step, however, was much trickier. At this point, I started feeling the lack of cloud knowledge I had, perhaps from skipping the CCP certification. I was lost. Static S3 website CloudFront, Route 53? I had no idea what to do. I decided to pause to learn more about the cloud and cloud development. I started reviewing the AWS docs and YouTube tutorials explaining AWS and the cloud and completed an Introduction to Cloud 101 course by AWS Educate. Eventually, I cracked this part and could access my resume from anywhere using the internet. I thought I had done all the work, but it was just the start!
Part 2: Building the API
At this stage, things became more advanced. Thankfully, I had previous experience with developing APIs, and even though the boto3 library was new to me, I went back to the docs to gain guidance so I could set up my Lambda function using Python. Once again, I struggled to navigate the cloudy stuff, but the AWS docs helped. As for source control, I had set up my GitHub repository from the start, so I just pushed the changes.
It took some going back and forth, though, as I had to spend some time testing the API to make sure it was doing what I wanted. There were few lines of code compared to what I have done before, but the errors, especially those CORS errors, made me question whether cloud computing suits me. After I went into the developer console on my browser, I discovered that they were the cause of all my problems.
Part 3: Front-End/Back-End Integration
I had to write my JavaScript code to display the visitor count on my resume, utilizing the call to my API. To do that, I also had to set up an API gateway to my lambda function. After this, I wrote some tests in Python to make sure my API was working properly. I wrote unit tests, integration tests, and end-to-end tests. I had some experience in Selenium, so this time, I chose to try out puppeteer, doing something new.
I also wrote a test that directly called the API to ensure it was correct by comparing the values from the first and second calls.
Part 4: Automation / CI
The good part was that Infrastructure as Code (IaC) was the first thing I set up at the start of this challenge. I used AWS SAM, which was the one mentioned in the challenge. Working with IaC opened me up to the actual world of the cloud. It is truly magical that I could delete all the work I have done on the cloud by using one command and deploying it all again with all my settings with another command. IaC is where it's really at.
I already had all my SAM code on the GitHub repository; my front end was with it. I chose to keep it as one repository rather than two for simplicity. I was already working with makefile to make my deployment effortless, but then I realized the magic of GitHub actions. I made a workflow template and, within it, created a bunch of jobs. One job was to test the code; another was to build my infrastructure, another was to deploy my site, and so on.
Conclusion
At last, my website was complete. I developed a complete end-to-end project from front-end to back-end, testing through CI/CD and automation. I don't believe I've ever made a project that was so complete. It touched on everything you'd do when developing a project, and it felt extremely satisfying.
One thing was clear, though: I learned a lot. In the beginning, I struggled to make an AWS account and assign it permissions through IAM, which I needed to figure out what to make of. Now, I feel confident in my AWS skills. I could easily navigate the console, know what to do and where to go and build and deploy resources using code with an IaC tool.
Now, I have started out pursuing my cloud journey. I did the project, and I found out what cloud computing is. I decided that this was it. Cloud engineering was what I wanted to be doing in the future. Therefore, I will now work on doing more projects and pursue the Solutions Architect Associate Certification to have an all-rounded cloud portfolio by next year, when I will start applying for a cloud role.
Top comments (2)
Detailed blog, great Job
Amazing to read! Very inspiring!