Cloud Resume Challenge: My Experience & My New Addiction to Green Check Marks
Tags: aws, python, serverless, devops
Published: 2020-07-23 04:20:43

It was the latter half of May that my journey down the AWS rabbit hole began. I had just left my job as a Econ/Data Analyst turned Software Engineer doing web development and wanted to commit myself to:
* Learning desirable skills for my market
* Getting to some side projects that had been sitting collecting dust
* Getting *hungry* again in terms of *wanting* to do development and build things

AWS seemed to fit nicely for covering all three points. Over the next 6 weeks, I focused on two parallel efforts: learning AWS by way of certifications (Cloud Practitioner and Solutions Architect-Associate) and making ground on my side projects using any AWS services I could take advantage of. Over that time, while trying to look for resources to learn, I came across the Cloud Resume Challenge a few times but didn't think to attempt the challenge. Once I attained the SA-Associate certification, I decided to revisit the Cloud Resume Challenge for the following reasons:
* I thought it was a good time to put together a portfolio and get back out on the market
* Because of the parallel nature of my approach, some of the hands-on AWS experience I had gained definitely didn't reflect best practices. I liked that the Cloud Resume Challenge required use of SAM which I had been wanting an excuse to learn.

The [Challenge](https://cloudresumechallenge.dev/instructions/) is conceptually straight-forward; create a portfolio/resume website, hosting it through AWS with a back-end that keeps track of visitors to the page, all using proper Source Control/CICD Practices. I'll describe my experience roughly in the order in which I did things.

# Front End Resume Website
Part of my reason for taking on the challenge was to put together a portfolio so I actually spent a good amount of time, relatively speaking, on this portion (although looking at the finished product, it may not seem like it, as a designer I am definitely not). What I most liked about this portion was the bare-bones nature of the website. I had web development experience but had definitely gotten used to relying on frameworks such as Material UI or Bootstrap. It was nice doing everything with only HTML and my own CSS.

# Hosting/DNS/HTTPS
As part of one of my side projects, I had gone through the AWS tutorials on S3 Static Site Hosting behind a CloudFront Distribution and Route 53 Domain Name so this part was relatively quick and straightforward. Most of it was just avoiding the stumbling blocks I ran into while doing this with my side projects, such as making sure the certificate is based in us-east-1 and getting all my ducks in a row with regards to redirecting non-root to root domains through CloudFront distributions and making sure everything was secure.

# Back-End Visitor Count
Most of my side projects/AWS dabbling was done using serverless pieces like Lambda and DynamoDB. To be honest, this was more due to cost than any other architectural considerations. Fortunately though, that experience helped make the Python/JavaScript work needed to get the back-end working not anything I hadn't seen before.

# Infrastructure as Code & CI/CD
This was the area where I felt I learned the most and the area that really hit that third bullet point in my initial list of goals for wanting to learn AWS. In my side projects, I admit (embarassingly) that there was definitely a lot of Lambda Function code editing going on in the console. In my mind I knew it wasn't best practices but I almost treated it like a rite of passage in a sense; some type of hazing process I needed to go through to properly see the benefits of CloudFormation and SAM. As soon as I got my first Stack built based on my commit through my GitHub Actions Workflow (which took much less effort than I was expecting), I thought to myself, "Why wasn't I doing *everything* this way sooner?" I am now very excited to dive deep into CloudFormation/SAM and look into CDK which from what I have read, I think I could be very on-board with.  I can't wait to see more green check marks and circles.

# Final Thoughts
This project was a nice challenge that forced me to update my [resume/portfolio](https://jviloria.com/) and gave me a proper push into the world of Infrastructure as Code that I don't think I'll be leaving any time soon.  A huge thank you to Forrest Brazeal for putting together this challenge.