<?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: Christian Medina</title>
    <description>The latest articles on DEV Community by Christian Medina (@cjmedina_dev).</description>
    <link>https://dev.to/cjmedina_dev</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F947443%2F4bd8a18c-b4fd-4f84-a04f-129c6037db29.png</url>
      <title>DEV Community: Christian Medina</title>
      <link>https://dev.to/cjmedina_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cjmedina_dev"/>
    <language>en</language>
    <item>
      <title>Cloud Resume Challenge - Finished</title>
      <dc:creator>Christian Medina</dc:creator>
      <pubDate>Sat, 17 Dec 2022 23:06:21 +0000</pubDate>
      <link>https://dev.to/cjmedina_dev/cloud-resume-challenge-finished-1nbp</link>
      <guid>https://dev.to/cjmedina_dev/cloud-resume-challenge-finished-1nbp</guid>
      <description>&lt;p&gt;In October of this year I received my AZ-900 certification. That's when I decided to take on the Cloud Resume Challenge. The Challenge is composed of 15 steps (16 including this blog post), and it took me about two months to complete.&lt;/p&gt;

&lt;p&gt;I'm going to divide the blog post into three parts: the front-end, the back-end, and tying it all together. So, without further ado:&lt;/p&gt;

&lt;h2&gt;
  
  
  The Front-end
&lt;/h2&gt;

&lt;p&gt;For anyone who has taken and completed the challenge, I think it can be universally agreed that the initial steps are by far the easiest part of the challenge. These steps are very approachable by beginners and serve as a good build-up to the true difficulty in the challenge.&lt;/p&gt;

&lt;p&gt;The HTML, CSS, and JavaScript were all fairly easy for me as I've previously designed websites before. Similarly with setting up DNS. HTTPS posed quite a challenge as this was the first time I dipped my toes into cloud technology. I needed to learn how to use Azure Storage, Azure CDN, and Azure DNS Zones to get my website online. Thankfully this only took a bit of tweaking and was straightforward to do in the portal.&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.amazonaws.com%2Fuploads%2Farticles%2Fk55ep08zfq2aypkihsbr.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.amazonaws.com%2Fuploads%2Farticles%2Fk55ep08zfq2aypkihsbr.png" alt="An Azure CDN Profile showing the active endpoint of the website" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The difficulty, however, significantly ramps up in the following steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Back-end
&lt;/h2&gt;

&lt;p&gt;This is where the Cloud Resume Challenge really shows its difficulty. The database was simple enough to create. But the API is where I would wager a vast majority of challengers simply don't make it through. This portion required a rather significant time investment in studying exactly how Azure worked--particularly, setting up a local development environment. In retrospect, it would have been much better if I had set up CI/CD at this point, as I feel the development process was much easier in terms of testing code rather than deploying to the portal from VS Code.&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.amazonaws.com%2Fuploads%2Farticles%2F2no39o31gcaumambs3vj.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.amazonaws.com%2Fuploads%2Farticles%2F2no39o31gcaumambs3vj.png" alt="Terraform Infrastructure-as-Code" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There was also a long time spent on Terraform and learning Infrastructure-as-Code. I like that the challenge had me deploy a fully functioning environment before attempting this step as it made switching to Terraform much easier, though now I could start with Terraform from scratch having learned it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tying it all together
&lt;/h2&gt;

&lt;p&gt;Another tricky portion of the challenge is actually having the back-end communicate with the front-end. This involved a lot of troubleshooting CORS issues. &lt;/p&gt;

&lt;p&gt;Then, finally, there was deploying the code to GitHub for CI/CD. Despite not taking as much time as the API, this one seriously stumped me for quite a bit due to problems with Cypress integration. After a couple of days, I finally got GitHub actions functional on both the front-end and back-end repositories, though.&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.amazonaws.com%2Fuploads%2Farticles%2Fteodptfp33mm20tdeerf.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.amazonaws.com%2Fuploads%2Farticles%2Fteodptfp33mm20tdeerf.png" alt="GitHub code repository" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Despite having quite a bit of background in coding and development, it still took me quite a while to piece together all the different parts of the challenge. I learned a ton and feel much more prepared to pursue a career in the cloud.&lt;/p&gt;

&lt;p&gt;Here is the final website: &lt;a href="https://cjmedina.dev" rel="noopener noreferrer"&gt;https://cjmedina.dev&lt;/a&gt;&lt;br&gt;
The front-end repo: &lt;a href="https://github.com/cjmedina95/crc-frontend" rel="noopener noreferrer"&gt;https://github.com/cjmedina95/crc-frontend&lt;/a&gt;&lt;br&gt;
And the back-end: &lt;a href="https://github.com/cjmedina95/crc-backend" rel="noopener noreferrer"&gt;https://github.com/cjmedina95/crc-backend&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>debugging</category>
      <category>programming</category>
      <category>testing</category>
    </item>
    <item>
      <title>Day 1 - Azure and DNS | Cloud Resume Challenge</title>
      <dc:creator>Christian Medina</dc:creator>
      <pubDate>Tue, 18 Oct 2022 04:56:55 +0000</pubDate>
      <link>https://dev.to/cjmedina_dev/day-1-azure-and-dns-cloud-resume-challenge-1l22</link>
      <guid>https://dev.to/cjmedina_dev/day-1-azure-and-dns-cloud-resume-challenge-1l22</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;To start off my blog, I figured it would be better to do a day-by-day and wrap everything up at the end. Prior to the challenge, I completed the AZ-900, allowing me to add it to my resume and complete step 1.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps 2 and 3 - HTML and CSS
&lt;/h2&gt;

&lt;p&gt;I spent a couple hours of my first day designing the website itself. The HTML is a fairly basic single page, two-column layout using Bootstrap 5. While there's still some refining touches to be made, I'm ultimately happy with how it turned out. For color palette, I went with MaterialUI's recommendations by overlaying an 8% opacity hue of blue on top of a #121212 color to give a nice accent to the left column.&lt;/p&gt;

&lt;p&gt;Bootstrap did take some learning with getting responsiveness functioning when the browser scales which required me studying up on the difference between col-lg, col-md, and col-xs. I do plan to go back and make some adjustments, but left it as is since I felt I dawdled too long on these steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 - Deploying the website and Azure Storage accounts
&lt;/h2&gt;

&lt;p&gt;I love that Azure is so intuitive to navigate. I had a storage account up and running in 15 minutes having never created one before. Creating the static website was equally as fast, requiring only a couple of button clicks.&lt;/p&gt;

&lt;p&gt;After getting Azure Storage Explorer up and running on my Desktop, I was able to upload my single index.html and main.css files to my storage account and access them through a brand new URL which was very exciting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps 5 and 6 - DNS and HTTPS
&lt;/h2&gt;

&lt;p&gt;This step was really, really difficult for me, perhaps unnecessarily. After purchasing my domain from Google for this step (&lt;a href="//cjmedina.dev"&gt;cjmedina.dev&lt;/a&gt;) I quickly deployed an Azure CDN resource and Azure DNS resource to get the domain active.&lt;/p&gt;

&lt;p&gt;After a couple of hours, I managed to get the nameservers converted on Google's end to the Azure DNS zone nameservers, had the records all specified and pointing to the CDN endpoint, and everything was perfect until I went to flip the switch for HTTPS.&lt;/p&gt;

&lt;p&gt;As it turns out, Azure no longer supports CDN-managed (or never did) HTTPS for apex domains--in other words, domains such as &lt;a href="https://cjmedina.dev"&gt;https://cjmedina.dev&lt;/a&gt; rather than &lt;a href="https://www.cjmedina.dev"&gt;https://www.cjmedina.dev&lt;/a&gt;. This meant &lt;a href="https://cjmedina.dev"&gt;https://cjmedina.dev&lt;/a&gt; actually gave an insecure error if you tried connecting to it and the only way I could fix it through Azure DNS was providing a totally separate SSL key through Azure Key Vault.&lt;/p&gt;

&lt;p&gt;I decided against that route, and instead opted to migrate to Cloudflare. The process involved switching custom nameservers to Cloudflare's, then re-adding the CNAME, MX, and TXT (DMARC and SPF) records into Cloudflare and letting it generate a certificate.&lt;/p&gt;

&lt;p&gt;After some time and many CTRL+F5 presses later, the website started reflecting Cloudflare's new certificate, and both &lt;a href="https://cjmedina.dev"&gt;https://cjmedina.dev&lt;/a&gt; and &lt;a href="https://www.cjmedina.dev"&gt;https://www.cjmedina.dev&lt;/a&gt; function as expected.&lt;/p&gt;

&lt;p&gt;Now to plan for Javascript and CosmosDB.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>azure</category>
      <category>cloudresumechallenge</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
