<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Joseph Dimaano Mercado</title>
    <description>The latest articles on DEV Community by Joseph Dimaano Mercado (@jdmercado).</description>
    <link>https://dev.to/jdmercado</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4142320%2F2ae87e1a-41e2-41bf-a43d-bb3473e67dc9.jpg</url>
      <title>DEV Community: Joseph Dimaano Mercado</title>
      <link>https://dev.to/jdmercado</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jdmercado"/>
    <language>en</language>
    <item>
      <title>Building My Cloud Resume Challenge! From AZ-900 to Serverless Architecture</title>
      <dc:creator>Joseph Dimaano Mercado</dc:creator>
      <pubDate>Mon, 28 Sep 2026 09:03:44 +0000</pubDate>
      <link>https://dev.to/jdmercado/building-my-cloud-resume-challenge-from-az-900-to-serverless-architecture-1ljo</link>
      <guid>https://dev.to/jdmercado/building-my-cloud-resume-challenge-from-az-900-to-serverless-architecture-1ljo</guid>
      <description>&lt;p&gt;Entering my third year as an IT student, my career goal became crystal clear: &lt;br&gt;
I want to be a Cloud Engineer. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd6o7mwu26l8e21i88c4t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd6o7mwu26l8e21i88c4t.jpg" alt="Cloud Computing" width="587" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Earning the Microsoft Azure Fundamentals (AZ-900) certification was a massive first step, but passing a multiple-choice exam doesn't deploy infrastructure. I needed hands-on experience to prove I could bridge the gap between cloud theory and production reality. &lt;/p&gt;

&lt;p&gt;That is why I took on the Azure Cloud Resume Challenge (By Forrest Brazeal).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzg76l3en4862uyw161b4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzg76l3en4862uyw161b4.png" alt="Cloud Resume Challenge - Azure" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of deploying a basic static site, I set out to architect a secure, fully automated serverless backend from scratch.&lt;/p&gt;

&lt;p&gt;Let's look under the hood at the architecture, the custom design, and the critical lessons I learned!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Embracing an Agentic Workflow&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;While the core cloud architecture, security boundaries, and system design were my own, I utilized AI coding tools as a pair-programmer throughout this project. Acting as the technical lead, I directed the AI to help scaffold templates, generate testing boilerplate, and accelerate styling. This modern "agentic" workflow allowed me to focus my energy on high-level engineering—like orchestrating automation and debugging remote cloud conflicts—rather than getting bogged down in syntax.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs21wgu8pkuhz96kllcn6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs21wgu8pkuhz96kllcn6.png" alt="Gemini + Antigravity IDE" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Here is exactly how I built it, step-by-step:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;(Step 1) Certification&lt;/strong&gt;&lt;br&gt;
The foundation of the project. I studied for and passed the Microsoft AZ-900 exam, validating my core understanding of Azure cloud services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Step 2 &amp;amp; 3) HTML &amp;amp; CSS&lt;/strong&gt;&lt;br&gt;
I wanted to avoid the generic "AI-generated" look that floods the internet. I designed a custom aesthetic utilizing a deep navy Azure color palette with sharp, asymmetric edges. I also designed a pixelated "jdm" SVG favicon and added custom Open Graph tags so the site generates a clean preview card on LinkedIn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Step 4, 5, &amp;amp; 6) Static Website, HTTPS, &amp;amp; DNS&lt;/strong&gt;&lt;br&gt;
I hosted the frontend in an Azure Blob Storage $web container. To ensure it was secure and easy to find, I mapped my custom domain using Cloudflare and enforced HTTPS encryption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Step 7) JavaScript&lt;/strong&gt;&lt;br&gt;
I wrote a lightweight client script that automatically reaches out to my backend database every time the page loads to display a live visitor count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Step 8, 9, &amp;amp; 10) Database, API, &amp;amp; Python&lt;/strong&gt;&lt;br&gt;
This is where it gets serverless. I set up an Azure Cosmos DB (Table API) to store the visitor count. To retrieve and update that number, I built a serverless API using the Azure Functions Python v2 programming model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Step 11) Tests&lt;/strong&gt;&lt;br&gt;
Before deploying my Python code to the cloud, I needed to know it wouldn't break. I used pytest to write automated unit tests, isolating my code and proving it worked perfectly without needing to connect to the live database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Step 12) Infrastructure as Code (IaC)&lt;/strong&gt;&lt;br&gt;
Clicking through cloud portals is fine for beginners, but professionals write code to manage their servers. I wrote an Azure Bicep template to automatically create my Database, Storage Account, and Function App.&lt;/p&gt;

&lt;p&gt;The Challenge: Azure initially injected a SQL-formatted connection string instead of a Table API format. I caught this during the Bicep build and corrected the array index to [4] to prevent a silent runtime crash.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Step 13) Source Control&lt;/strong&gt;&lt;br&gt;
My entire project was built in a GitHub repository. Because this project contains my personal resume data and a custom design, I removed the standard open-source license and transitioned the repo to "All Rights Reserved" to protect my intellectual property.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Step 14 &amp;amp; 15) CI/CD Backend &amp;amp; Frontend&lt;/strong&gt;&lt;br&gt;
I set up GitHub Actions to fully automate my workflow. Now, whenever I push new code, GitHub automatically tests it and deploys it to Azure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq72cbq65l81lmcticztc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq72cbq65l81lmcticztc.png" alt="Tech Stack Diagram" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Challenge: My backend deployments kept throwing 503 errors. I discovered a read-only setting (WEBSITE_RUN_FROM_PACKAGE=1) in my Bicep template was conflicting with GitHub's remote build process. I stripped the setting from my code and the live app, completely resolving the pipeline crash.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(Step 16) The Blog Post&lt;/strong&gt;&lt;br&gt;
Writing this post to document the journey!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F972l1309g4xn04lxur9n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F972l1309g4xn04lxur9n.png" alt="Step 16" width="800" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Azure Cloud Resume Challenge was exactly the bridge I needed. I now have a live, fully automated environment that proves I can design, test, deploy, and secure cloud infrastructure.&lt;/p&gt;

&lt;p&gt;Check out the live project here: &lt;a href="https://jdmercado.site/" rel="noopener noreferrer"&gt;https://jdmercado.site/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Review the architecture on GitHub: &lt;a href="https://github.com/ctrl-jo/Cloud-Resume-Challenge-Azure" rel="noopener noreferrer"&gt;https://github.com/ctrl-jo/Cloud-Resume-Challenge-Azure&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with me on LinkedIn: &lt;a href="http://www.linkedin.com/in/jdm-tech" rel="noopener noreferrer"&gt;www.linkedin.com/in/jdm-tech&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>devchallenge</category>
      <category>serverless</category>
    </item>
  </channel>
</rss>
