Cloud Resumé CHALLENGE
Tags: challenge, beginners, javascript, cloudresumechallenge
Published: 2022-12-22 18:55:01

After earning my AWS Solutions Architect Associate certification in November, 2022, I came across the Cloud Resume Challenge as a way to dive into the cloud and DevOps in a hands-on way. I knew that it would be difficult, but the challenge proved to be greater than I anticipated as a total programming newbie. Working in the CLI, with Python, SAM, GitHub Actions and JavaScript for the first time put a lot of learning on my plate that I am incredibly grateful for. 

A description of the challenge and its variations can be found here: https://cloudresumechallenge.dev/docs/the-challenge/aws/

## Front End:

I kept my front-end very bare bones regarding HTML and CSS, since UI/UX and web development are not a career path that I am aiming to go down, but I did my best to keep my resume relevant and my format as clean and easy to read as possible. I did much of my styling in HTML.

The HTML and CSS documents were uploaded to an S3 bucket that was configured to host a static website and connected to a CloudFront distribution and Route 53 DNS service (where I bought my domain for $12)

The biggest challenge with the front end was getting it to integrate with my backend code to display the "Visitor Counter" number at the bottom of the page. After many tries and hours of work, I was able to use a GetElementByID function to display the visitor count returned from my backend whenever the page is loaded.

My biggest tip for this section is to **host your html page locally while you make changes**, so you can see in real time how your webpage will look with the changes that you are making. It is extremely time consuming and painful to make edits to an HTML index document, upload to S3, invalidate a CloudFront endpoint and reload the page just to find out that the formatting is off or your visitor count is not displaying :')

I used npm to host my page locally set up via the terminal CLI.

## Back End 

This is where the challenge really started for me and where 90% of my learning happened. The challenged called for using the AWS SAM, to deploy Infrastructure as Code for the Serverless visitor counter using API Gateway, Lambda (with Python code), and a DynamoDB table. 

The SAM tool was not very easy to use and apparently out of vogue in the world of DevOps and Cloud, I recommend anyone doing the challenge to use Terraform and the Cloud Development Kit instead. This will help you gain more relevant skills to the job market and (probably) save you some time.

SAM would not deploy due to a small error in my YAML template which defined the Lambda, API and DynamoDB table. The tool did not tell me that this was the error and simply returned a "failedtocreatechangeset" message. The lack of feedback as to why my deployment was failing led to an extended period of problem solving on this step of the challenge. 

Hopefully documentation and instructions on the challenge are updated to guide users to use Terraform and CDK and discourage the usage of SAM, since it is no longer commonly used in the industry.

I used SAM pipelines for the CI/CD pipelines, I found there to be a lack of an easy path to a multi-account deployment (utilizing my dev and prod accounts) with SAM pipelines. I deployed both stacks into my general account, and used a !Sub variable for the DynamoDB table name to avoid errors resulting from having 2 tables with the same name, which caused my Prod-stack to fail prior to adding the variable. 

## All in all...

I want to give a shoutout to the Discord community associated with the project. I went to this community for guidance a couple of times when I was struggling with the challenge and they were helpful and encouraging in their responses. 

Credits to the challenge creator, Forrest Brazeal, 

and happy holidays to you all :)

[My Resume site](https://thomasrauffenbartresume.com/)