Skip to main content
  1. tech-posts/

Cloud Resume Challenge Part 1/4 - Project Summary

··9 mins

Overview about overall blog post #

Have you ever heard about Cloud Resume Challenge? It is an hands-on project that challenge us to build a resume and host it in the cloud using cloud and DevOps technologies. Not only launching a web resume online, this Cloud Resume Challenge also call us to publish the learning journey as a blog post. This blog post you are reading now is my answer to the challenge.

As I learned a lot of things from this challenge, there are plenty of things to share. To make it more manageable, I am thinking to divide the post into 4 parts.

  1. Part 1 - Project Summary (this post)
  2. Part 2 - Front End
  3. Part 3 - Back End
  4. Part 4 - DevOps

For all posts, I am not going to cover all step-by-step procedure as I am not thinking to make this series as instruction manual. Instead, I am going to discuss some problems or design decisions that I faced during the challenge. For the implementation details, you can review my Github repositories:

Motivation taking this cloud resume challenge #

During my work as System Administrator, I am fascinated by the fact that cloud technology enables us to run new services scalable and fast at the same time. From there, I started to have the idea of switching career from System Administrator to cloud/DevOps engineer. When searching online about projects that can supplement cloud learning, I found this Cloud Resume Challenge. Motivated by the opportunity to have a hands-on learning on cloud technology, I took this challenge.

My first impression, I thought this hands-on project seems introductory. However, after reading the Challenge FAQ, I was excited because this challenge can expose me to some important concepts used in Cloud and DevOps engineering such as version control, full stack development, software testing, and Infrastructure as Code (IaC). I believe this project would be a good stepping stone to allow me exploring more advanced technologies.

My chosen cloud provider #

The original challenge doesn’t restrict us to any particular cloud provider. However, Forrest Brazeal (the original challenger) had written 3 guidebooks about the challenge, each covering the major cloud provider (in the West at least), i.e. AWS, Azure, GCP.

In this challenge, I chose the AWS path. The reason I went with AWS is because at that time (early 2023), AWS was used by a lot of people. According to Statista, AWS leads the market share (30%), followed by Azure (20%) and GCP (10%). Nevertheless, the decision I made was not rigid because I thought that cloud technology are pretty much similar from one to the others, although they may be differ in the interface cosmetics, pricing, or compatibility with certain tech stacks. I was confident that if I could grasp the fundamentals, switching to the other platform can be done easily (at least on the surface level). In fact, while I was working on the AWS Cloud Resume Challenge, this project helped me a lot in getting started using Azure for different purpose in my working place.

Timeline #

Timeline Summary #

  • Start: 19 Feb 2023
  • HTML: 19 Feb 2023 - 22 Apr 2023
  • CSS: 24 Feb 2023 - 5 Mar 2023
  • AWS Cloud Practitioner Cert: 1 Apr 2023
  • Static web: 6 Mar 2023 - 22 Apr 2023
  • HTTPS: 22 May 2023 - 24 June 2023, 26 Nov 2023
  • DNS: 22 Apr 2023 - 19 June 2023
  • AWS Solution Architect Assoc Cert: 12 Aug 2023
  • Javascript:
    • 24 June 2023 - 2 Oct 2023 -> learn from CodeAcademy
    • 3 Oct 2023 - 26 Nov 2023 -> implement visitor count code
  • Database: 9 Oct 2023 - 17 Nov 2023
  • API: 14 Nov 2023 - 19 Nov 2023
  • Python: 10 Oct 2023 - 23 Nov 2023
  • Test: 27 Nov 2023 - 23 Dec 2023
  • Source control: 17 Dec 2023 - 19 Dec 2023
  • CI/CD (back end): 27 Jan 2024 - 23 Feb 2024
  • CI/CD (front end): 24 Feb 2024 - 2 Mar 2024
  • IaC:
    • 30 Mar 2024 - 23 Apr 2024 -> front end (dev environment)
    • 1-9 June 2024, 27-31 Aug 2024, 8 Jan 2025 -> front end (prod environment - import infrastructure into Terraform)
    • 19 Aug 2024 - 16 Sept 2024, 7-8 Jan 2025 -> back end (dev environment)
    • 31 Aug 2024, 15 Sept 2024, 7-8 Jan 2025 -> back end (prod environment - import infrastructure into Terraform)
  • AWS Developer Assoc Cert: 26 Oct 2024

How long did I spend for this project? #

Overall this Cloud Resume Challenge took almost 2 years to finish, started in February 2023 and completed in January 2025. As I work full time, I could only committed on the project on weekends or holiday. I worked on front-end from February to November 2023 (10 months) with 3 months of studying JavaScript and AWS certification in the middle. Meanwhile, the back-end was configured between October to November 2023 (1 month), much shorter than the front-end thanks to my experience working as System Administrator and the two AWS certification I took in spring and summer 2023. Finally the other extras like testing and DevOps stuffs took the longest, from November 2023 to January 2025 (13 months).

13 months sounds rather long. But after I reflect again on my activities during that period, the pace of testing, CI/CD, and IaC were similar to the front-end. Actually I took some pause from the Cloud Resume Project to deal with my personal events (marriage, move, etc.) in 2024 and AWS Developer Associate certification. So, the break down of the 13-month period for testing and DevOps stuff looks like this:

  • Testing: Nov 2023 - Dec 2023 (1 month)
  • CI/CD: Jan 2024 - Mar 2024 (2 months)
  • IaC: Mar 2024 - April 2024 (1 month) + Aug 2024 - Sept 2024 (2 month) + Jan 2025 (1 month)
  • Personal occasion: May 2024, July 2024, Nov 2024 - Dec 2024 (4 months)
  • AWS Developer Associate certification: Sept 2024 - Oct 2024 (2 months)

I admit that I was procrastinating a bit when working on the IaC. I felt my progress was slow between August-September 2024. Also, in professional standard, spending months working on single module sounds like long, yet I am proud and enjoying every single experience. Using generative AI like ChatGPT, Claude or DeepSeek to spill out solution can shortened this project a lot, but there is no point of using generative AI in this learning process. I limited the use of generative AI in doing troubleshooting or researching purpose only.

For other Cloud Resume challengers, I suggest you to take your time in this project. It is normal if this project takes long time, especially if you have other responsibilities in your personal life.

Personal thoughts #

What I like from this project #

First of all, Infrastructure as Code is amazing! I can rebuild my entire system very easily with a couple of Terraform commands. Initially, I used the https://timmytandian.com and https://www.timmytandian.com to host my cloud resume. But, after I decided launching this blog, I wanted to use the https://www.timmytandian.com to host this blog. This means, I need to port my cloud resume to the other timmytandian.com subdomain. Thanks to IaC, by changing variables in the Terraform configuration, I could rebuild my whole cloud resume (recreated S3, changing the connection between front-end and back-end, etc.) with a single Terraform command. How sweet!

The overall process and outcome are amazing. I enjoyed every single bit of the learning process. To be able to publish something to the Internet from a raw code while understanding every single details how everything move and interact is a satisfying experience.

What I don’t like from this project #

If I want to redo part of this project, it would be the structure of source control or project directories. Currently I have 2 repositories, one for front-end and the other one for back-end. Furthermore, each repository contains Terraform configuration for development environment and production environment, each environment is placed into one by git branch. So, in total I have 4 areas to manage the infrastructure deployment. If I want to deploy a new configuration to the both dev and prod environment in front-end and back-end, with my current I have to do 4 pushes to the repository to trigger the CI/CD pipeline. I feel this is tedious and it would be nice if I can squeeze all configuration into a single repository and control the deployment from CI/CD pipeline.

For example, I can either have three options below. Sounds feasible, although I haven’t tried implemented it yet in other projects.

  • Option 1. In single repository, separate the front-end code and back-end code by folder. Then separate the dev and prod environment by git branch. I can use the CI/CD pipepline to control the flow of deployment.
  • Option 2. Still using a single repository with separate directories for the front-end code and back-end code. However, the difference with the option 1 above is to use only 1 git branch for both the dev and prod environment. The Terraform infrastructure deployment can be controlled via CI/CD pipeline using GitHub tags, releases, or approval process. For instance, using a specific tag would prompt manual approval process to deploy into prod infrastructure.
  • Option 3. Use a single repository to contain everything, and have different directories to separate the deployment environment as illustrated below.
Terraform/
├── Environments/
│   ├── dev/
│   └── prod/
└── Modules/
    ├── Backend-Database/
    ├── Backend-Lambda/
    ├── Backend-API-Gateway/
    ├── Frontend-CDN/
    ├── Frontend-DNS/
    └── Frontend-Static-Website/

Final Words #

For people who want to jump into Cloud & DevOps Enginnering, I highly recommend you trying this Cloud Resume Challenge. The possibility of learning is vast, while you can freely include some adjustments in the project scope to make the challenge easier/harder.

Besides the core Cloud & DevOps engineering that I learned, this hands-on project also opened the path for learning other technologies, like web development technologies or containers. For instance, instead of using DynamoDB, what if we use a container? Or, what if we use Kubernetes to implement the whole back-end modules? Anyway, the blog you are reading now went live thanks to some seeds of confidence and fundamentals that I learned from tackling this challenge.

Finally, don’t be bothered by the amount of time you need to finish this project. Everybody has their own situation, personal responsibilities, target, idealism in completing this project. So, just take your time to enjoy the learning process.

In the next blog post, I will share the details of front-end implementation. Stay tune!