My Cloud Resume Challenge Journey
Published: 2022-10-01 15:56:50

## About Me
I'm an IT Professional with over 25 years in the field, and a background in full-stack web Development (Java/Spring, MEAN). My current Role is a Software Engineering Manager on an IT Learning Team. I'm also a seasoned Technology Instructor in both Enterprise and Collegiate environments.

With Cloud migrations in full-swing across the Industry, I decided to build my Skills in AWS, and earned the CCP and Solutions Arch Associate certifications in 2021, and the Developer Associate cert in Aug of this year.

However, as we all know, certifications alone aren't enough to make a transition into a Cloud-specific Role, so I've been looking for opportunities to get hands-on practice applying the skills I'm learning. And that led me to find [The Cloud Resume Challenge](https://cloudresumechallenge.dev/) (AWS edition) created by Forrest Brazeal.

## The Cloud Resume Challenge
For those who may not be aware, The Cloud Resume Challenge requires you to build and host your resume, using serverless infrastructure, on a Cloud Provider.

Referencing the [Challenge Guidebook](https://cloudresumechallenge.dev/) (which I highly recommend getting), you'll see the Challenge is broken up into Chunks:

- Chunk 0. Certification Prep
- Chunk 1. Building the front-end
- Chunk 2. Building the API
- Chunk 3. Front-end / back-end integration
- Chunk 4. Automation (IaC, CI/CD)

Now, you could just jump right in and go it alone, but there's also an option to participate in a four-week Sprint.

I chose to participate in the Sept, 2022 Sprint for a couple reasons: first, I wanted to progress through the Challenge quickly and knew the focused Sprint cycles would assist in meeting that goal; and also because I have a passion for sharing my knowledge with others and thought I'd have an opportunity to help those that got stuck along the way via the Challenge's Discord Server.

I created a [YouTube Channel](https://www.youtube.com/channel/UCa29PDb01XSNWU52Qe3kTHA) to document my progress through the Sprint, and I'll add links to the related videos below. Here are the [Intro video](https://www.youtube.com/watch?v=zAhXukIDWkM&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=1) 
{% embed https://www.youtube.com/watch?v=zAhXukIDWkM&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=1 %}

and [Sprint Overview video](https://www.youtube.com/watch?v=m22kxn1iBTg&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=2)
{% embed https://www.youtube.com/watch?v=m22kxn1iBTg&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=2 %}


## AWS CCP Certification
The first step in the Challenge is to build foundational skills in a specific Cloud Provider. Since I had previously earned three AWS certifications prior to staring the Challenge, I was all set with this requirement. I will mention that, when preparing for the certs, I utilized several outstanding courses on [A Cloud Guru](https://acloudguru.com/?utm_campaign=9982801564&utm_source=google&utm_medium=cpc&utm_content=446017694300&utm_term=e_a%20cloud%20guru&adgroupid=106298860048&gclid=EAIaIQobChMI26Dx47C_-gIVmIXICh3OwQ31EAAYASAAEgJVUPD_BwE).


## Sprint Goals
**Week 1: Resume Website**
Skills: HTML/CSS, Git, Cloud Storage, CDN, DNS
{% embed https://www.youtube.com/watch?v=TvJp90OlRv4&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=3 %}
[Week 1 video](https://www.youtube.com/watch?v=TvJp90OlRv4&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=3)

In this section of the Challenge, you are to build the front-end of your [resume page](https://www.cumuluscycles.com/) which incudes using HTML and CSS, as well as hosting it in an S3 Bucket behind a CloudFront Distribution, and making it accessible via a Route 53 Domain over SSL.

Since I have many years experience in web development, I decided not to spend much time building the web page, because I really wanted to focus on advancing my Cloud skills during the Challenge. So, I started out with a simple page template, but later changed to a responsive design due to the quality of pages other Sprinters were building (yes, I was shamed into doing this, which is a good thing).

I put my code in a [GitHub Repo](https://github.com/CumulusCycles/CloudResumeChallenge), as that was a requirement of this phase of the Sprint (and, any Developer worth their salt always starts with a GitHub Repo), and I also decided to implement IaC using AWS SAM from the beginning.


**Week 2: Serverless API**
Skills: Cloud Compute (AWS Lambda), NoSQL Database (DynamoDB), Python
{% embed https://www.youtube.com/watch?v=vOZ-sMgAUFk&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=4 %}
[Week 2 video](https://www.youtube.com/watch?v=vOZ-sMgAUFk&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=4)
	
In this section of the Challenge, you are to build the back-end of your Application using a Lambda Function written in Python and expose it via an API Gateway endpoint. You are also required to stand-up a DynamoDB Table to store your page's hit counter.

I don't have a background in Python, so this was a good learning opportunity for me. And, to get exposure to implementing the serverless back-end, I followed the AWS Tutorial [Build a CRUD API with Lambda and DynamoDB](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-dynamo-db.html).

I also continued on with my IaC implementation.


**Week 3: Front End / Back End Integration**
Skills: JavaScript, Cloud Monitoring, Testing
{% embed https://www.youtube.com/watch?v=LhRmy1-KOJw&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=5 %}
[Week 3 video](https://www.youtube.com/watch?v=LhRmy1-KOJw&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=5)

In this section of the Challenge, you are to integrate your front-end web page with the back-end using JavaScript. Again, given my experience in this area, this was straight forward for me.

However, writing the automated tests for the Lambda Function had me scratching my head for a bit. But, with the help of a few tutorials, I was able to get it to work.

I also decided to jump ahead a bit into the requirements for next week, and implemented GitHub Actions to execute the test on push to the Repo.
	

**Week 4: Infrastructure as Code and CI/CD**
Skills: AWS SAM, GitHub Actions, Secrets Management
{% embed https://www.youtube.com/watch?v=wiyI0Ngn31o&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=6 %}
[Week 4 video](https://www.youtube.com/watch?v=wiyI0Ngn31o&list=PLRBkbp6t5gM1GLxpZ382Egi7IKGIq6jVF&index=6)
	
In this final section of the Challenge, you are to implement IaC using AWS SAM, as well automate deployment of your Infrastructure using GitHub Actions.

Since I had been using SAM throughout the Challenge, I simply had to define the DynamoDB and Lambda Resources in the SAM Template.

Then I modified my GitHub Actions to build and deploy the infrastructure and site after successful completion of the infrastructure test job.


## Conclusion
The Challenge was well worth the investment in time, and I honestly can't say enough about how valuable an experience it was. Don't get me wrong, there are plenty of excellent courses, demos and labs out there, but having to connect all the pieces on your own is time well spent! 

If you're looking for a project to advance your skills in Cloud, I highly recommend taking [The Cloud Resume Challenge](https://cloudresumechallenge.dev/)!