My Journey on Completing the Cloud Resume Challenge
I will be sharing my experiences in pursuing the cloud resume challenge from Forrest Brazeal. You can find details about this project at Cloud Resume Challenge.
You can find my cloud resume here: petegerman.com
Backstory
After graduating college and getting into the IT workforce, I started coming across the prevalence of cloud computing. It was always something that I was aware of but I never took the time to truly understand it. I always felt that the cloud is something that is reserved for highly skilled IT professionals and that it was out of reach for an individual like me.
Throughout my career, I became dissatisfied with having to compromise on developing my technical capabilities for skills that were non-technical. That is not to say that I am not grateful, I am because it has helped me develop a unique skill set that has proven enormously helpful. I had developed a feeling that I wasn't learning anything exciting and marketable. I was beginning to lose the passion to learn and work was becoming routine.
Cloud computing is something that I have always heard being discussed. How it has made things easier within the realm of IT and that is the future we were heading towards. I have always been curious but never decided to take the plunge into learning more about it outside of a rudimentary understanding.
I began working for a company that was heavily based on Azure and its service offerings. Although not required for my role, I always felt that I was at a disadvantage when it came to discussions about the future state of our technology and infrastructure. In the spring of 2022, I decided to make a change. I began to study for the Azure Fundamentals (AZ-900) certification and passed within two weeks of study. And what a difference it has made...
I began to understand the vocabulary of the cloud and Azure. It was as if I had an epiphany and I felt empowered. I was starting to understand things at a deeper level which made me much more effective at work and helped me develop more confidence. I became invigorated and motivated to learn more about the cloud.
I began to research the other Azure certificates and what they had to offer. I had even begun to ask to be more involved with the technical operations within Azure but was declined due to my lack of knowledge and expertise (understandably). That motivated me to start pursuing the Azure Administrator Certification (AZ-104) to get the skillset required.
At the end of the summer of 2022, I received an invite from the organization's architecture team to attend an AWS summit. I was ecstatic. The organization was beginning to consider a multi-cloud environment. Unfortunately, my request to go was declined by my management because it wasn't aligned with my current role's responsibilities. Although saddened by the news, I saw this as an opportunity. An opportunity to get ahead of the curve and be at the forefront of the potential to contribute to a multi-cloud environment.
I decided to pursue the AWS Solutions Architect Associate (AWS-SAA) exam. And boy did this certification preparation expose the technical gaps in my knowledge. I had to re-learn things such as networking fundamentals while learning about AWS's service offerings and how they tie together. After countless hours of studying and intense preparation, I finally achieved my goal and passed the AWS Solutions Architect Associate exam in November 2022. I was not ready to stop there. After a short break, I decided to pursue the AWS Developer (AWS-DVA) exam and passed in January of 2023. The irony here is that these AWS certifications made me much better at my current role as I began to develop a better holistic understanding of IT even though I was working in a Microsoft/Azure focused organization.
I understood that certifications that validate your knowledge on the subject but it does not prove that you are capable of doing the work. So I began researching what projects I can pursue that would validate my capability. I came across the cloud resume challenge and decided to take it on!
After a few months of hard work and many nights of wanting to bang my head against non-soft objects, you can find my serverless cloud resume here: petegerman.com
My Approach to the Cloud Resume Challenge
Architecture Diagram
Credit to sketchboard.me tool for allowing me to draw this diagram
Phase 0 [Certification]
I had already knocked out three cloud certs [AZ900, AWS-SAA, & AWS-DVA] prior to starting the challenge.
I'll quickly go over what I learned and the important takeaways from each (in the order that I took them):
AZ-900 - Great introductory cert for understanding cloud technology and its benefits. Also helped me to understand Azure services at a high level and the concepts of CapEx and OpEx.
AWS-SAA - Most challenging and useful cert I have taken yet. Provided me with a solid understanding of core AWS services and how to tie them together to architect/deliver effective solutions. Covers concepts such as networking, security, databases, etc.
AWS-DVA - Similar to AWS SAA and slightly easier. The exams have about 40% overlap of services. It dives much deeper into serverless concepts (API Gateway, Lambda, DynamoDB). Also covers concepts such as deployment methods and AWS CLI
Phase 1 [Front-End]
Tasks: HTML, CSS, Static Website Hosting, HTTPS, & DNS
I found this to be the easiest part of the challenge. I explored using the bootstrap CDN and got a reasonably-looking page. I also wanted the page to be dynamic and have different sections. I felt I have spent too much time trying to make the HTML and CSS nice and visually appealing. I am not a designer but I overall enjoyed the designing aspect.
Hosting the Website on S3 is relatively straightforward. Probably the easiest step in the cloud resume challenge for me.
Setting up the HTTPS and DNS took a bit of time but were not difficult tasks for me. The knowledge obtained from the AWS SAA studies helped immensely. I would have loved to settle for petergerman.com rather than petegerman.com but the domain name was sadly taken.
Phase 2 [Building the API]
Tasks: Database, API Gateway, Python & AWS Lambda, Javascript, Testing & System Integration
This is where the real headaches began!
I approached in this order: Database, Local Javascript Counter, Python, API Gateway, Testing & Systems Integration.
Creating the DynamoDB was straightforward.
Getting the Javascript to create a counter locally was slightly challenging. There are plenty of resources online that were very helpful. I added my own twist to the counter requirement by showing your contribution to the visitor count. I thought it was cool!
Getting Python and Lambda to work... Oh boy. I spent countless dealing with bugs/errors and spent hours reading boto3 and AWS documentation. Reading from DynamoDB was relatively easy to figure out. Incrementing was 100x harder for me. One of the notable errors that stuck in my head was the JSON serialization errors. Let's just say JSON does not play nice with decimal values coming from DynamoDB /SarcasticSmile
API Gateway I found to be pretty easy to understand and implement. The POST method that is recommended to increase visitor count is not the approach I took. I used GET instead
Testing and Integration were relatively quick for me. I utilized the Lambda tests feature to test the DDB interactions. I performed API tests using the browser. Once satisfactory, I integrated the pieces into the website and made some adjustments to the javascript code
The concepts I learned from the AWS DVA exam helped me understand the concepts of the serverless model. The exam preparation helped shorten the learning curve of understanding the underlying architecture.
I also pursued the DevOps Mod. I created a CloudWatch alarm that would personally alert me in the event of over X amount of API calls within 5 mins time frame.
Phase 3 [IaC & CICD]
Tasks: IaC via Terraform, Source Control via GitHub, & Github Actions
My current role has me working with a Microsoft tool called Power Automate. One of the most rewarding aspects of the tool is the gratification that comes from successfully creating and executing automated processes. I was very much looking forward to this phase and unsurprisingly had the most fun.
I decided to challenge myself by using Terraform rather than AWS SAM. Terraform and IaC were new concepts for me. It was very much a challenge that I found engaging. So much so that I would like to pursue the Terraform Associate certification before the end of the year.
This phase highlighted the importance of source control and CICD. I have come to appreciate how these practices make it easier to work with greater efficiency and effectiveness.
Phase 4 [Refinement]
Tasks: Code Cleanup, HTML & CSS improvements
Although I was proud of what I had accomplished so far, I wanted to add an extra phase of cleaning up the code and changing the UI to look better. I am a firm believer that first impressions matter. I found a free template and spent a significant amount of time customizing, configuring, and integrating components of the cloud resume challenge.
Check out the new design and feel free to leave some comments or constructive criticism!
Key Takeaways
It was my first application built on the cloud.
I had fun throughout the whole process. Taking the time to build something has given me a sense of pride and confidence.
It is okay to walk away if you haven't resolved an issue or bug after some time. I often thought of fixes, solutions, and different approaches when I was out at the gym or walking the dog.
If I had to do the project again, I would first start with source control and a CICD pipeline to track changes and minimize time wasted with deployment.
Working closely with security teams and preparing for the AWS certification exams the security principle of least privilege was always kept in mind.
I will be diving deeper into IaC. I got my feet wet and I want to learn more!