My Cloud Resume Challenge Journey: Embracing Serverless

I’ve spent nearly 14 years in the tech industry, working my way up from providing end-user support to managing full-scale corporate infrastructure. For a good portion of my career, I worked with physical servers running virtualization—systems I could walk up to, plug into, and manage directly, with on-prem infrastructure that I understood inside and out. As cloud computing grew in popularity, I naturally found myself migrating infrastructure to the cloud—deploying virtual servers, and also migrating data from various platforms to Microsoft 365, and earning certifications like AZ-104 and AZ-305 along the way. I understood Infrastructure-as-a-Service (IaaS) and had real-world experience using it. But there was still something I hadn’t really touched: serverless. I’d read about it, played with it here and there on my own time, but never had a proper project to truly dive in. Still, the curiosity was always there. I found myself drawn to the idea of serverless, of building things without thinking about the underlying machines. I’d read The Phoenix Project and The Unicorn Project, and those books stayed with me. They planted seeds—seeds of understanding how DevOps, automation, and cloud-native technologies were transforming how we deliver technology. Then one day, I stumbled upon the Cloud Resume Challenge. The Start of Something New The challenge wasn’t just a list of tasks. It was an experience designed to stretch you. It gave you a direction, but no step-by-step instructions. And that’s exactly what I needed. I already had the certifications (AZ-900, AZ-104, AZ-305) and some real-world Azure experience under my belt, but this was a chance to apply all that knowledge—and then some. It started off easy. I had some basic experience with HTML and CSS (though I wasn’t exactly passionate about front-end development). So I leaned on AI to generate my resume web page, uploaded it to Azure Storage as a static site, and pointed my Cloudflare DNS to it. That part was smooth. Getting Uncomfortable Things got harder when I tried to set up Azure Front Door. I knew what it was—a global load balancer—from my certification studies. But putting theory into practice is another thing entirely. Understanding how frontends, backends, routes, and origins all fit together took me down a rabbit hole of documentation. I spent evenings reading, testing, and debugging. Eventually, it clicked. It was a small win, but a satisfying one. The real turning point came when I got to creating the API with Azure Functions. I had never worked with them before. I knew Python well enough, so writing a basic HTTP-triggered function wasn’t too intimidating. But integrating it with Cosmos DB? That was tough. I wanted to develop it locally in VS Code, and setting everything up took longer than expected. The biggest hurdle was understanding how bindings worked to connect the function to the database. It was one of those moments where frustration starts to creep in. But I reminded myself—this is why I took on the challenge in the first place. With enough reading, trial and error, and a little help from ChatGPT, I started to get the hang of it. The sense of progress was incredibly rewarding. Stepping into Infrastructure as Code Next, I took on Terraform. I’d used it before, but only briefly. This time, I committed to really learning it. I installed it, started writing out my .tf files, explored tfvars, and learned about state files and variable assignments. What really tripped me up was how detailed and nested Azure resources could be. Configuring something like Front Door in Terraform meant understanding all of its sub-resources and dependencies. But I stuck with it, and eventually managed to define the full infrastructure in code—including monitoring and alerting with Azure Monitor. I also automated the DNS records in Cloudflare using its Terraform provider. Seeing everything come together—the infrastructure, the code, the monitoring—was incredible. It started to feel like I was really building something robust and production-ready. Adding the Real-World Touches Since I had experience using PagerDuty in previous roles, I decided to bring it into this project as well. I set up a team, schedules, and escalation policies. Then I wired Azure Monitor to send alerts via webhook, so I’d get a ping on my phone if something broke. It gave the project a sense of realism—it wasn’t just a lab experiment anymore. Learning CI/CD from Scratch The final mountain to climb was CI/CD using GitHub Actions. Until this point, I hadn’t worked with pipelines, and it felt like a completely different world. I started reading up on YAML workflows, learning how to trigger deployments with code pushes, how to use Git in VS Code, and how to structure commits and branches. One thing that really stuck with me during this phase was the importance of security. As I prepared to make the project public, I had to learn how

Apr 7, 2025 - 13:06
 0
My Cloud Resume Challenge Journey: Embracing Serverless

I’ve spent nearly 14 years in the tech industry, working my way up from providing end-user support to managing full-scale corporate infrastructure. For a good portion of my career, I worked with physical servers running virtualization—systems I could walk up to, plug into, and manage directly, with on-prem infrastructure that I understood inside and out.

As cloud computing grew in popularity, I naturally found myself migrating infrastructure to the cloud—deploying virtual servers, and also migrating data from various platforms to Microsoft 365, and earning certifications like AZ-104 and AZ-305 along the way. I understood Infrastructure-as-a-Service (IaaS) and had real-world experience using it. But there was still something I hadn’t really touched: serverless. I’d read about it, played with it here and there on my own time, but never had a proper project to truly dive in.

Still, the curiosity was always there. I found myself drawn to the idea of serverless, of building things without thinking about the underlying machines. I’d read The Phoenix Project and The Unicorn Project, and those books stayed with me. They planted seeds—seeds of understanding how DevOps, automation, and cloud-native technologies were transforming how we deliver technology.

Then one day, I stumbled upon the Cloud Resume Challenge.

The Start of Something New

The challenge wasn’t just a list of tasks. It was an experience designed to stretch you. It gave you a direction, but no step-by-step instructions. And that’s exactly what I needed. I already had the certifications (AZ-900, AZ-104, AZ-305) and some real-world Azure experience under my belt, but this was a chance to apply all that knowledge—and then some.
It started off easy. I had some basic experience with HTML and CSS (though I wasn’t exactly passionate about front-end development). So I leaned on AI to generate my resume web page, uploaded it to Azure Storage as a static site, and pointed my Cloudflare DNS to it. That part was smooth.

Getting Uncomfortable

Things got harder when I tried to set up Azure Front Door. I knew what it was—a global load balancer—from my certification studies. But putting theory into practice is another thing entirely. Understanding how frontends, backends, routes, and origins all fit together took me down a rabbit hole of documentation. I spent evenings reading, testing, and debugging. Eventually, it clicked. It was a small win, but a satisfying one.

The real turning point came when I got to creating the API with Azure Functions. I had never worked with them before. I knew Python well enough, so writing a basic HTTP-triggered function wasn’t too intimidating. But integrating it with Cosmos DB? That was tough. I wanted to develop it locally in VS Code, and setting everything up took longer than expected. The biggest hurdle was understanding how bindings worked to connect the function to the database.

It was one of those moments where frustration starts to creep in. But I reminded myself—this is why I took on the challenge in the first place. With enough reading, trial and error, and a little help from ChatGPT, I started to get the hang of it. The sense of progress was incredibly rewarding.

Stepping into Infrastructure as Code

Next, I took on Terraform. I’d used it before, but only briefly. This time, I committed to really learning it. I installed it, started writing out my .tf files, explored tfvars, and learned about state files and variable assignments.

What really tripped me up was how detailed and nested Azure resources could be. Configuring something like Front Door in Terraform meant understanding all of its sub-resources and dependencies. But I stuck with it, and eventually managed to define the full infrastructure in code—including monitoring and alerting with Azure Monitor.

I also automated the DNS records in Cloudflare using its Terraform provider. Seeing everything come together—the infrastructure, the code, the monitoring—was incredible. It started to feel like I was really building something robust and production-ready.

Adding the Real-World Touches

Since I had experience using PagerDuty in previous roles, I decided to bring it into this project as well. I set up a team, schedules, and escalation policies. Then I wired Azure Monitor to send alerts via webhook, so I’d get a ping on my phone if something broke. It gave the project a sense of realism—it wasn’t just a lab experiment anymore.

Learning CI/CD from Scratch

The final mountain to climb was CI/CD using GitHub Actions. Until this point, I hadn’t worked with pipelines, and it felt like a completely different world. I started reading up on YAML workflows, learning how to trigger deployments with code pushes, how to use Git in VS Code, and how to structure commits and branches.

One thing that really stuck with me during this phase was the importance of security. As I prepared to make the project public, I had to learn how to manage secrets safely. I used GitHub’s encrypted secrets for things like my Azure credentials and Cloudflare API tokens. I also configured a backend in Azure Storage for Terraform’s state file, ensuring I could work on the project from multiple machines without losing consistency.

All of this took time. There were late nights. There were moments of confusion. But each hurdle taught me something meaningful—and that’s what made the experience so valuable.

Final Thoughts

Completing the Cloud Resume Challenge wasn’t just about putting a resume online. It was about stepping out of my comfort zone and immersing myself in the technologies I’d always been curious about but hadn’t truly explored.

This challenge taught me more than just how to use serverless resources or write Terraform code. It taught me how to break down problems, how to keep learning even when things feel difficult, and how to build something real from scratch.

Even with years of experience in IT, this project gave me a new perspective on what the cloud can do—and how far I’ve come in my own journey. It reminded me why I got into tech in the first place: to keep building, to keep learning, and to keep pushing forward.

If you're someone who's cloud-curious, or even if you've been in tech a long time but want to expand your skills, I wholeheartedly recommend taking on the Cloud Resume Challenge. It might just change the way you see your career.

Want to check out my project? [https://github.com/ph4n7om2000/cloudresumechallenge]