<?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: Ijay</title>
    <description>The latest articles on DEV Community by Ijay (@ijay).</description>
    <link>https://dev.to/ijay</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%2F691309%2F3cfc37d1-ceb9-4869-ab1a-a29581db29ce.png</url>
      <title>DEV Community: Ijay</title>
      <link>https://dev.to/ijay</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ijay"/>
    <language>en</language>
    <item>
      <title>Some cloud concepts like regions and availability zones can be explained simply.

Do you think someone without a technical background can get AWS fundamentals?

Watch and share your thoughts:
https://www.youtube.com/watch?v=UaNqs93P38Q&amp;t=8s

#aws #cloud</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 15 Apr 2026 13:25:21 +0000</pubDate>
      <link>https://dev.to/ijay/some-cloud-concepts-like-regions-and-availability-zones-can-be-explained-simply-do-you-think-2hn4</link>
      <guid>https://dev.to/ijay/some-cloud-concepts-like-regions-and-availability-zones-can-be-explained-simply-do-you-think-2hn4</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.youtube.com/watch?v=UaNqs93P38Q&amp;amp;amp;t=8s" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;youtube.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>How I Escaped Tutorial Hell</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 15 Apr 2026 09:00:00 +0000</pubDate>
      <link>https://dev.to/ijay/how-i-escaped-tutorial-hell-fdd</link>
      <guid>https://dev.to/ijay/how-i-escaped-tutorial-hell-fdd</guid>
      <description>&lt;p&gt;&lt;em&gt;What watching tutorials taught me and why building changed everything.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Almost everyone who is learning something new experiences tutorial hell at some point.&lt;/p&gt;

&lt;p&gt;You watch videos, read guides, and follow along step by step. Everything seems clear while you are watching.&lt;/p&gt;

&lt;p&gt;But when it is time to try things on your own, you suddenly feel stuck.&lt;/p&gt;

&lt;p&gt;In this edition, I want to share my experience and how I eventually broke out of that cycle.&lt;/p&gt;

&lt;p&gt;Time flies.&lt;/p&gt;

&lt;p&gt;I still remember when I first started learning to code.&lt;/p&gt;

&lt;p&gt;I spent hours watching tutorials. React tutorials. JavaScript tutorials. Anything I could find on YouTube.&lt;/p&gt;

&lt;p&gt;If you asked me what I was doing, I would confidently say I was learning.&lt;/p&gt;

&lt;p&gt;I was always busy.&lt;/p&gt;

&lt;p&gt;Busy watching another tutorial.&lt;/p&gt;

&lt;p&gt;Busy taking notes. &lt;/p&gt;

&lt;p&gt;Busy trying to become a good software engineer.&lt;/p&gt;

&lt;p&gt;But there was one problem.&lt;/p&gt;

&lt;p&gt;I was watching a lot.&lt;/p&gt;

&lt;p&gt;I was not building much.&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%2Fo6xjew4kzcl93e4rfnek.gif" 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%2Fo6xjew4kzcl93e4rfnek.gif" alt="false confidence" width="200" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But whenever I tried to build something on my own, I froze.&lt;/p&gt;

&lt;p&gt;Following along in a tutorial felt easy. I could understand what the instructor was doing, and everything looked clear.&lt;/p&gt;

&lt;p&gt;But when the tutorial ended, and I was left with a blank editor, I did not know where to start.&lt;/p&gt;

&lt;p&gt;That was when I realized something.&lt;/p&gt;

&lt;p&gt;I was not actually building.&lt;/p&gt;

&lt;p&gt;I was stuck in what many developers call &lt;strong&gt;tutorial hell&lt;/strong&gt;.&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%2F4vfvugj29r7ny45ki57e.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%2F4vfvugj29r7ny45ki57e.png" alt="tutorial loop learners fall into" width="800" height="755"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everything makes sense while the instructor is explaining it.&lt;/p&gt;

&lt;p&gt;But the moment the tutorial ends and you try to build something on your own, the confidence disappears.&lt;/p&gt;

&lt;p&gt;That was exactly what happened to me when I was learning React.&lt;/p&gt;

&lt;p&gt;I had watched many tutorials, but I still did not know how to start a simple application from scratch.&lt;/p&gt;

&lt;p&gt;That was when I realised something needed to change.&lt;/p&gt;

&lt;p&gt;It took time, but eventually I broke out of that cycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing that helped me was simple.
&lt;/h2&gt;

&lt;p&gt;I stopped focusing on watching and started focusing on building.&lt;/p&gt;

&lt;p&gt;Now, when I want to learn something new, I approach it differently.&lt;/p&gt;

&lt;p&gt;Instead of opening YouTube first, I start with a small idea.&lt;/p&gt;

&lt;p&gt;It could be a simple tool. It could be a small project.&lt;/p&gt;

&lt;p&gt;Then I try to build it.&lt;/p&gt;

&lt;p&gt;Most of the time, I get stuck. That is normal.&lt;/p&gt;

&lt;p&gt;When that happens, I search for solutions, read documentation, debug with AI, or even just take a rest.&lt;/p&gt;

&lt;p&gt;But the important thing is this.&lt;/p&gt;

&lt;p&gt;I am still the one building it.&lt;/p&gt;

&lt;p&gt;And that changes everything.&lt;/p&gt;

&lt;p&gt;When you build something yourself, you begin to understand the real challenges developers face. You start seeing how different parts connect. Your confidence grows because you solved the problem yourself.&lt;/p&gt;

&lt;p&gt;Tutorials are useful. They introduce you to new tools and concepts.&lt;/p&gt;

&lt;p&gt;But tutorials alone cannot make you better.&lt;/p&gt;

&lt;p&gt;Building can&lt;/p&gt;

&lt;h2&gt;
  
  
  Try this this week
&lt;/h2&gt;

&lt;p&gt;Pick one small idea and build it without following a tutorial step by step.&lt;/p&gt;

&lt;p&gt;It does not need to be perfect. It just needs to be something you built yourself.&lt;/p&gt;

&lt;p&gt;Examples&lt;/p&gt;

&lt;p&gt;• A simple to-do list app &lt;/p&gt;

&lt;p&gt;• A small API &lt;/p&gt;

&lt;p&gt;• A static website&lt;/p&gt;

&lt;p&gt;• A small cloud project, like hosting a website on Amazon S3&lt;/p&gt;

&lt;p&gt;If you are interested in cloud projects and you are struggling to think of ideas, that is completely normal. Some days your mind just goes blank.&lt;/p&gt;

&lt;p&gt;When that happens, do not worry.&lt;/p&gt;

&lt;p&gt;You can explore AWS Skill Builder. They have many hands-on projects and learning paths you can follow.&lt;/p&gt;

&lt;p&gt;You can also check out my previous post, where I shared an &lt;a href="https://www.linkedin.com/posts/ijeoma-igboagu_learningaws-cloudcomputing-devops-activity-7424376180373368832-npYy/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAADLCAmYB2_R_Wt0asbxpZqe5BXIWwgJfO0E" rel="noopener noreferrer"&gt;AWS learning path for beginners.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will learn more than you expect.&lt;/p&gt;

&lt;p&gt;Build more. &lt;/p&gt;

&lt;p&gt;Watch less. &lt;/p&gt;

&lt;p&gt;Your confidence will grow faster than you think.&lt;/p&gt;




&lt;p&gt;Before you go, I am curious.&lt;/p&gt;

&lt;p&gt;Right now, which one are you doing more?&lt;/p&gt;

&lt;p&gt;Watching tutorials or building projects?&lt;/p&gt;

&lt;p&gt;Reply and tell me. I would love to hear your experience.&lt;/p&gt;




&lt;p&gt;Every month, I share simple lessons from my journey learning cloud and DevOps.&lt;/p&gt;

&lt;p&gt;If you enjoy practical stories like this, follow the newsletter for more.&lt;/p&gt;

&lt;p&gt;You can follow my work and projects on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub &lt;/a&gt;to stay updated on what I’m building and learning.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Can a Non-Technical Person Understand AWS</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Mon, 13 Apr 2026 09:00:00 +0000</pubDate>
      <link>https://dev.to/ijay/can-a-non-technical-person-understand-aws-a1</link>
      <guid>https://dev.to/ijay/can-a-non-technical-person-understand-aws-a1</guid>
      <description>&lt;p&gt;This video explains Amazon Web Services in simple, everyday language, without technical pressure.&lt;/p&gt;

&lt;p&gt;If you are not from a tech background but keep hearing about cloud computing, AWS jobs, or cloud skills, this video is for you. &lt;/p&gt;

&lt;p&gt;In this video, I broke down what AWS actually is, why companies use it, and what you truly need to understand without becoming an engineer.&lt;/p&gt;

&lt;p&gt;I made this video for beginners, career switchers like me, students, business owners, and anyone curious about cloud computing but overwhelmed by technical explanations.&lt;/p&gt;

&lt;p&gt;You do not need programming experience to follow along. This is a clear explanation of AWS from a non-technical point of view.&lt;/p&gt;

&lt;p&gt;If this video helped you, feel free to leave a comment here and engage on &lt;a href="https://www.youtube.com/@cloudinreallife" rel="noopener noreferrer"&gt;my channel&lt;/a&gt;. I read and learn from your feedback.&lt;/p&gt;

&lt;p&gt;Thank you. ❤️&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>nontechnical</category>
      <category>programming</category>
    </item>
    <item>
      <title>Deploying with Terraform</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 18 Mar 2026 19:27:00 +0000</pubDate>
      <link>https://dev.to/ijay/deploying-with-terraform-g27</link>
      <guid>https://dev.to/ijay/deploying-with-terraform-g27</guid>
      <description>&lt;h2&gt;
  
  
  The workflow design
&lt;/h2&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%2F5pulu1k3f3vcwoygoxpy.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%2F5pulu1k3f3vcwoygoxpy.png" alt="The architure" width="630" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my&lt;a href="https://dev.to/ijay/what-is-infrastructure-as-code-10mp"&gt; previous posts&lt;/a&gt;, I focused on understanding Infrastructure as Code and setting up my environment. Now it is time to actually build something.&lt;/p&gt;

&lt;p&gt;In today's challenge, we are to build our website using Terraform.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I used Terraform to create a simple EC2 instance on AWS and made it accessible from the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The setup included:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A provider block to connect to AWS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A resource block to create the EC2 instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A security group to allow HTTP traffic on port 80&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A user data script to serve a simple HTML page.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fbdyv444a0rrgkm69yhph.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%2Fbdyv444a0rrgkm69yhph.png" alt="folder structure" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To deploy the server, I ran:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform init
terraform plan
terraform apply &lt;span class="nt"&gt;-auto-approve&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Confirming the Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After running terraform apply, Terraform returned a public IP in the AWS Console.&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%2F1xxqu3xrog2d1tij62bl.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%2F1xxqu3xrog2d1tij62bl.png" alt="public IP" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I copied the public IP generated and pasted it into the browser:&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%2F29or0o7lenq4ov8m65md.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%2F29or0o7lenq4ov8m65md.png" alt="the website" width="634" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That confirmed that the server was running and accessible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The challenges I faced
&lt;/h2&gt;

&lt;p&gt;One issue I encountered was using an invalid AMI. At first, my instance failed to launch because the AMI was not valid for my region.&lt;/p&gt;

&lt;p&gt;I fixed this by using a data block to dynamically fetch the correct Amazon Linux AMI.&lt;/p&gt;

&lt;p&gt;I also had an issue where my server was not loading in the browser. This was because the web server was not properly set up. I fixed it by installing and starting Apache using the user data.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Doing this challenge helped me understand how Terraform actually works in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Instead of clicking around the AWS console, I was able to define everything in code and create infrastructure in a repeatable way.&lt;/p&gt;

&lt;p&gt;This is just the beginning, and I’m looking forward to building more as I continue this challenge.&lt;/p&gt;

&lt;p&gt;If this resonates with you, feel free to share it with others on a similar journey.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>aws</category>
      <category>terraform</category>
      <category>cloudcomputing</category>
      <category>devops</category>
    </item>
    <item>
      <title>IAM Permissions Are Confusing</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 18 Mar 2026 09:00:00 +0000</pubDate>
      <link>https://dev.to/ijay/iam-permissions-are-confusing-17nj</link>
      <guid>https://dev.to/ijay/iam-permissions-are-confusing-17nj</guid>
      <description>&lt;p&gt;If you’ve ever worked with AWS IAM, you've probably felt this way.&lt;/p&gt;

&lt;p&gt;You create a policy. Attach it to a user or role. And still get an "Access Denied" error.&lt;/p&gt;

&lt;p&gt;That happened to me more than once.&lt;/p&gt;

&lt;p&gt;While learning AWS, I even locked myself out of my account after giving the wrong permissions to a service. Not on purpose, I simply didn’t fully understand what the policy was actually allowing.&lt;/p&gt;

&lt;p&gt;That’s when I realised guessing my way through IAM wasn’t helping.&lt;/p&gt;

&lt;p&gt;While trying to make sense of it, I came across the IAM Policy Simulator, and it changed how I approach permissions.&lt;/p&gt;

&lt;p&gt;What I like about the simulator is how simple the idea is.&lt;/p&gt;

&lt;p&gt;It lets you test what a user or role can actually do before you change anything.&lt;/p&gt;

&lt;p&gt;Instead of wondering, you can ask one clear question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can this user or role perform this action on this resource? (For example: Can this EC2 role read from this S3 bucket?)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The simulator checks all attached policies and shows you the final decision. Seeing it laid out like that helped me understand exactly where things were going wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I usually access it
&lt;/h2&gt;

&lt;p&gt;When I need it, I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sign in to AWS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the IAM service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the right-hand side, under Tools, click Policy Simulator. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It redirects to the Policy Simulator page.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or open the IAM Policy Simulator directly here: &lt;a href="https://policysim.aws.amazon.com/" rel="noopener noreferrer"&gt;IAM policy simulator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From there, I test the actions I’m unsure about and see what’s allowed or denied.&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%2Fl3bwaidtqw4h48pkx74k.gif" 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%2Fl3bwaidtqw4h48pkx74k.gif" alt="Testing the IAM Policy" width="720" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters (at least for me)
&lt;/h2&gt;

&lt;p&gt;Most of the permission issues I’ve run into weren’t due to anything being missing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They were small details:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A wrong resource ARN&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A condition I didn’t think about&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Or an explicit deny I forgot existed&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The simulator doesn’t fix things for you or replace reading policies carefully, but it clearly shows which policies are affecting or attached to the user or role, and that makes IAM much less frustrating.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’m taking away from this
&lt;/h2&gt;

&lt;p&gt;The IAM Policy Simulator has been a safer way for me to learn permissions. It lets me experiment, understand mistakes, and avoid granting extra permissions just to “make it work.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I’m curious:&lt;/strong&gt; When IAM permissions don’t work as expected, how do you usually debug them? Trial and error or stopping to inspect the policy closely?&lt;/p&gt;

&lt;p&gt;If IAM or any AWS service has ever confused you, follow the &lt;br&gt;
&lt;a href="https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7336744982432600064" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt; or the &lt;a href="https://www.youtube.com/@cloudinreallife" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; channel. I share what I learn as I continue making sense of AWS.&lt;/p&gt;

&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://twitter.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/m/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>security</category>
    </item>
    <item>
      <title>Step-by-Step Guide to Setting Up Terraform, AWS CLI, and Your AWS Environment</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Tue, 17 Mar 2026 23:20:50 +0000</pubDate>
      <link>https://dev.to/ijay/step-by-step-guide-to-setting-up-terraform-aws-cli-and-your-aws-environment-50kk</link>
      <guid>https://dev.to/ijay/step-by-step-guide-to-setting-up-terraform-aws-cli-and-your-aws-environment-50kk</guid>
      <description>&lt;p&gt;In my &lt;a href="https://dev.to/ijay/what-is-infrastructure-as-code-10mp"&gt;previous post&lt;/a&gt;, I talked about what Infrastructure as Code is, why it matters, and why I decided to start learning Terraform.&lt;/p&gt;

&lt;p&gt;Now it is time to move from understanding to actually setting things up.&lt;/p&gt;

&lt;p&gt;Before building anything, having the right environment is important. If your setup is not correct, it can slow you down later. So in this post, I will walk through how I set up my Terraform environment and connected it to AWS.&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%2F47txnssl1p8mdrrhzsw0.jpeg" 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%2F47txnssl1p8mdrrhzsw0.jpeg" alt="Lets get started" width="328" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Setting Up AWS Account
&lt;/h2&gt;

&lt;p&gt;I already had an AWS account, so I didn’t need to create a new one. However, I made sure not to use my root account.&lt;/p&gt;

&lt;p&gt;Instead, I created an IAM user with programmatic access using the AWS console and used it for my setup instead of my root account. This is more secure and is the recommended way to work with AWS.&lt;/p&gt;

&lt;p&gt;Step 2: Installing AWS CLI&lt;/p&gt;

&lt;p&gt;Next, I installed AWS CLI on my system.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;awscli &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installation, I checked that it was working by verifying the version. This confirmed that AWS CLI was installed correctly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Checking the credentials&lt;br&gt;
After installing AWS CLI, I configured it using my IAM user credentials.&lt;/p&gt;

&lt;p&gt;I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Access key&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secret key&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Default region&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I did this by running &lt;code&gt;aws configure&lt;/code&gt; and following the prompts.&lt;/p&gt;

&lt;p&gt;To confirm everything worked, I checked my AWS identity. It returned my account details, which showed that my setup was correct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To check&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform version
aws &lt;span class="nt"&gt;--version&lt;/span&gt;
aws sts get-caller-identity
aws configure list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;Terraform v1.14.7
on linux_amd64
+ provider registry.terraform.io/hashicorp/aws v6.36.0
aws-cli/2.22.12 Python/3.12.6 Linux/6.6.87.2-microsoft-standard-WSL2 exe/x86_64.ubuntu.22
{
    "UserId": "AXXXXXXXXXXXXXXXXXXXV",
    "Account": "2xxxxxxxxxxxx4",
    "Arn": "arn:aws:iam::2xxxxxxxxxxx4:user/onyi"
}
      Name                    Value             Type    Location
      ----                    -----             ----    --------
&lt;/span&gt;&lt;span class="gp"&gt;   profile                &amp;lt;not set&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;None    None
&lt;span class="go"&gt;access_key     ****************5SNW shared-credentials-file
secret_key     ****************KJtJ shared-credentials-file
    region                eu-west-1      config-file    ~/.aws/config
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Installing Terraform
&lt;/h2&gt;

&lt;p&gt;I installed Terraform on my system and confirmed it was working by checking the version.&lt;/p&gt;

&lt;p&gt;During this step, I noticed that my Terraform version was outdated. I am currently fixing this by downloading the latest version from the official&lt;br&gt;
&lt;a href="https://developer.hashicorp.com/terraform/install" rel="noopener noreferrer"&gt;Terraform website&lt;/a&gt;.&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%2F6ya1w9sgjdgxdxi2gi25.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%2F6ya1w9sgjdgxdxi2gi25.png" alt="error" width="800" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5. Connecting Terraform to AWS
&lt;/h2&gt;

&lt;p&gt;Terraform uses the AWS credentials configured through AWS CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6. Verifying the Setup
&lt;/h2&gt;

&lt;p&gt;To make sure everything was working properly, I ran checks to confirm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Terraform is installed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS CLI is installed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS authentication is working&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS configuration is correct&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything worked as expected, which means my environment is ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges I Faced
&lt;/h2&gt;

&lt;p&gt;The main issue I encountered was that my Terraform version was outdated.&lt;/p&gt;

&lt;p&gt;I discovered this while verifying my setup and started fixing it by installing the latest version.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;From this setup, I learned how Terraform connects to AWS through AWS CLI.&lt;/p&gt;

&lt;p&gt;I also understood why using an IAM user is important instead of using root credentials. It improves security and gives better control over access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;From everything, using the AWS CLI is more secure than clicking the AWS console.&lt;/p&gt;

&lt;p&gt;If this resonates with you, feel free to share it with others on a similar journey.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>aws</category>
      <category>terraform</category>
      <category>cloudcomputing</category>
      <category>devops</category>
    </item>
    <item>
      <title>What is Infrastructure as Code?</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Tue, 17 Mar 2026 10:00:00 +0000</pubDate>
      <link>https://dev.to/ijay/what-is-infrastructure-as-code-10mp</link>
      <guid>https://dev.to/ijay/what-is-infrastructure-as-code-10mp</guid>
      <description>&lt;p&gt;Learning cloud and DevOps is good, but in the process of learning, I’ve come to understand that Infrastructure as Code is very important.&lt;/p&gt;

&lt;p&gt;In this article, I will cover&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What Infrastructure as Code is and the problem it solves&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The difference between declarative and imperative approaches&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why Terraform is worth learning&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My reason for taking on this 30-day challenge&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fc09rkgznxjlxdsembnf5.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%2Fc09rkgznxjlxdsembnf5.png" alt="Let's get started" width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Infrastructure as Code (IaC)
&lt;/h2&gt;

&lt;p&gt;From my reading, Infrastructure as Code means using code to manage and set up infrastructure instead of doing everything manually. It is mostly used by DevOps and cloud engineers to provision resources in the cloud.&lt;/p&gt;

&lt;p&gt;What problem does it solve?&lt;/p&gt;

&lt;p&gt;IaC solves a lot of issues, especially what people call click ops. Instead of going to the cloud console and clicking around, which can lead to mistakes, you define everything in code. This makes it easier to repeat the same setup and avoid errors.&lt;/p&gt;

&lt;p&gt;What are the ways Terraform is defined?&lt;/p&gt;

&lt;p&gt;There are two ways Terraform is defined in editors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Declarative&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Imperative&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.Declarative: means you describe what you want, and the tool figures out how to achieve it.&lt;/p&gt;

&lt;p&gt;For example, if you want to create an S3 bucket in AWS using Terraform, you just write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight terraform"&gt;&lt;code&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_s3_bucket"&lt;/span&gt; &lt;span class="s2"&gt;"example"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;bucket&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"my-example-bucket"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the example above, you are only saying, "Create a bucket with this name.” Terraform handles how it will be created.&lt;/p&gt;

&lt;p&gt;2.Imperative: means you define every single step to get the result.&lt;/p&gt;

&lt;p&gt;For example, using AWS CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 mb s3://my-example-bucket
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Which method is commonly used by developers?
&lt;/h2&gt;

&lt;p&gt;In declaring a HashiCorp Configuration Language (HCL), most developers use declarative rather than imperative because you only define what you want, and the tool handles the process. It reduces errors and makes infrastructure easier to manage.&lt;/p&gt;

&lt;p&gt;While imperative is useful for quick tasks, it is not for long-term and scalable systems. i.e., step by step&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we use Terraform basically
&lt;/h2&gt;

&lt;p&gt;Terraform is used for provisioning infrastructure across different cloud providers. It is not limited to one cloud like CloudFormation, so it is more flexible and widely used.&lt;/p&gt;

&lt;h2&gt;
  
  
  My goal for the next 30 days
&lt;/h2&gt;

&lt;p&gt;My goal is to challenge myself to build using IaC and stop relying on clicking around in AWS. I want to improve my skills, become better as a DevOps and cloud engineer, and get more comfortable building real things.&lt;/p&gt;

&lt;p&gt;If this resonates with you, feel free to share it with others on a similar journey.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>challenge</category>
      <category>cloudcomputing</category>
      <category>devops</category>
    </item>
    <item>
      <title>Building a 3-Tier Application on AWS</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Tue, 17 Mar 2026 08:58:00 +0000</pubDate>
      <link>https://dev.to/ijay/building-a-3-tier-application-on-aws-4936</link>
      <guid>https://dev.to/ijay/building-a-3-tier-application-on-aws-4936</guid>
      <description>&lt;p&gt;When I hear the word "3-tier architecture," it sounds like one of those big concepts people often mention in all these tech talks. Most times, I just add it to my list of things to read later.&lt;br&gt;
But something interesting happened when I started looking into it more closely.&lt;br&gt;
I realized that 3-tier architecture is actually something many of us already interact with, especially when using Backend as a Service platforms.&lt;br&gt;
Sometimes a concept becomes clearer when someone explains it in a simple way. After attending a session from Solavise Technologies Institute, the idea stopped feeling abstract.&lt;/p&gt;

&lt;p&gt;Instead of only reading about it, I decided to build something small to understand how it actually works.&lt;/p&gt;

&lt;p&gt;With their guidance, I built a Nigerian passport application system deployed using a 3-tier architecture on AWS.&lt;/p&gt;
&lt;h2&gt;
  
  
  Architecture Diagram
&lt;/h2&gt;

&lt;p&gt;Below is a simple overview of how the system is structured.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                User
                 |
                 |  HTTP Request
                 v
        -----------------------
        Presentation Layer
        EC2 Instance
        Nginx Web Server
        (HTML, CSS, JS)
        -----------------------
                 |
                 |  POST Request
                 v
        -----------------------
        Logic Layer
        EC2 Instance
        Flask API
        (Application Logic)
        -----------------------
                 |
                 |  SQL Query
                 v
        -----------------------
        Data Layer
        Amazon RDS
        MariaDB Database
        -----------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A 3-tier architecture simply means an application separated into three different layers:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Presentation Layer
&lt;/h3&gt;

&lt;p&gt;This is the frontend of an application. It is what users see and interact with.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Logic Layer
&lt;/h3&gt;

&lt;p&gt;This is the backend. It processes requests and handles the application logic.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Data Layer
&lt;/h3&gt;

&lt;p&gt;This is where the data is stored. It can be a database hosted by a cloud provider or any other database system.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea Behind the Project
&lt;/h2&gt;

&lt;p&gt;The goal was not to build a complex application but to understand how real systems work across layers.&lt;/p&gt;

&lt;p&gt;Imagine a simple website where someone fills out a passport application form.&lt;/p&gt;

&lt;p&gt;When a user submits the form, a few things need to happen.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The application receives the request.&lt;/li&gt;
&lt;li&gt;The system processes the data.&lt;/li&gt;
&lt;li&gt;The information is stored in a database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of putting everything on one server, the system splits these responsibilities across different layers.&lt;/p&gt;

&lt;p&gt;This separation is what defines a 3-tier architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking Down the Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Presentation Layer&lt;/strong&gt;: The first layer of the architecture is the presentation layer. It is the part users interact with.&lt;/p&gt;

&lt;p&gt;For this project, the frontend consists of a simple form, which I built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend runs on an EC2 instance configured with Nginx.&lt;/p&gt;

&lt;p&gt;Its responsibility is straightforward. It collects user input from the passport form and sends the data to the backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Logic Layer&lt;/strong&gt;: The second layer of the architecture is the logic layer. This layer processes the requests coming from the frontend.&lt;/p&gt;

&lt;p&gt;In this project, the logic layer runs on a separate EC2 instance running a Flask API.&lt;/p&gt;

&lt;p&gt;When the frontend sends a request, the Flask application receives the form data, processes it, and prepares it to be stored in the database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Data Layer:&lt;/strong&gt; The final layer is the data layer. This layer is responsible for storing and managing the application data.&lt;/p&gt;

&lt;p&gt;For this project, I used Amazon RDS with MariaDB to store the passport application records.&lt;/p&gt;

&lt;p&gt;Whenever the backend receives a valid request, it inserts the data into the RDS database.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the System Works
&lt;/h2&gt;

&lt;p&gt;Once all three layers are in place, the interaction between them follows a simple flow.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A user opens the website and fills out the passport form.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The frontend sends the form data to the Flask API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The backend processes the request and stores the information in Amazon RDS.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each layer performs a specific task, which keeps the system organized and easier to manage.&lt;/p&gt;

&lt;h2&gt;
  
  
  What was the Challenge?
&lt;/h2&gt;

&lt;p&gt;At one point during the project, everything seemed ready.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The servers were running.&lt;/li&gt;
&lt;li&gt;The code looked correct.&lt;/li&gt;
&lt;li&gt;The database was configured.
But the form refused to work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After troubleshooting for hours, I realised the issue had nothing to do with the application code.&lt;/p&gt;

&lt;p&gt;The problem was coming from the network configuration.&lt;/p&gt;

&lt;p&gt;The backend server was not reachable because the security group did not allow traffic on the required port.&lt;/p&gt;

&lt;p&gt;Once I corrected the security group configuration and fixed the API endpoint, communication between the 3 layers started working immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Project Helped Me Understand
&lt;/h2&gt;

&lt;p&gt;Before building this project, a 3-tier architecture felt like a theoretical concept:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now it feels much more practical.&lt;/li&gt;
&lt;li&gt;Makes the applications easier to maintain, scale, and troubleshoot.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Repository
&lt;/h2&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%2Fky0ovdbbfpy8ay4y6w7s.gif" 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%2Fky0ovdbbfpy8ay4y6w7s.gif" alt="passport application" width="760" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ijayhub/A-3tier-Nigeria-Passport-Architecture-" rel="noopener noreferrer"&gt;The full project code is available here:&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The frontend focuses on user interaction.&lt;/li&gt;
&lt;li&gt;The backend handles the application logic.&lt;/li&gt;
&lt;li&gt;The database stores and manages the data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you found this documentation helpful, share it with others who may find it interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/cloud-computing-guide-for-beginners/" rel="noopener noreferrer"&gt;What is cloud computing? A Guide for Beginners&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-can-aws-amplify-improve-your-development-process-2gj5"&gt;How Can AWS Amplify Improve Your Development Process?&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-build-an-application-with-aws-lambda/" rel="noopener noreferrer"&gt;How to Build an Application with AWS Lambda&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>aws</category>
      <category>community</category>
      <category>cloudcomputing</category>
      <category>devops</category>
    </item>
    <item>
      <title>Running a Containerised App on AWS: My Experience</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Fri, 06 Mar 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/ijay/running-a-containerised-app-on-aws-my-experience-459a</link>
      <guid>https://dev.to/ijay/running-a-containerised-app-on-aws-my-experience-459a</guid>
      <description>&lt;p&gt;In this project, I wanted to practice building a DevOps workflow from development to deployment.&lt;br&gt;
The goal was simple. Take a small application, package it with Docker, deploy it to AWS, and automate the process using GitHub Actions.&lt;br&gt;
This project helped me understand how different tools in the DevOps ecosystem work together.&lt;/p&gt;
&lt;h2&gt;
  
  
  What this project does
&lt;/h2&gt;

&lt;p&gt;This project shows how an application can move from code to deployment using automation.&lt;/p&gt;
&lt;h3&gt;
  
  
  The process looks like this:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Code is pushed to GitHub&lt;/li&gt;
&lt;li&gt;GitHub Actions builds the Docker image&lt;/li&gt;
&lt;li&gt;The image is pushed to Amazon ECR&lt;/li&gt;
&lt;li&gt;Amazon ECS Fargate pulls the image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This removes the need to manually deploy applications.&lt;/p&gt;
&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Here is a simple view of the setup:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer (Build the code)
   │
   │ 
   ▼
Build Docker Image
   │ provision with Terraform
   ▼
Amazon ECR
   │
   ▼
Amazon ECS Fargate
   │ push code
   ▼
GitHub Repository
   │
   ▼
Users can access the application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tools used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Terraform&lt;/li&gt;
&lt;li&gt;AWS ECS Fargate&lt;/li&gt;
&lt;li&gt;Amazon ECR&lt;/li&gt;
&lt;li&gt;GitHub Actions&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each tool plays a different role in the deployment process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker packages the application so it runs consistently anywhere.&lt;/li&gt;
&lt;li&gt;Terraform creates and manages the infrastructure.&lt;/li&gt;
&lt;li&gt;ECR stores the container images.&lt;/li&gt;
&lt;li&gt;ECS Fargate runs the containers without managing servers.&lt;/li&gt;
&lt;li&gt;GitHub Actions automates the build and deployment process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key steps in the project
&lt;/h2&gt;

&lt;p&gt;The application was packaged into a Docker image using a Dockerfile. This allows the application to run consistently across environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating the infrastructure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Terraform was used to create the AWS infrastructure:&lt;/li&gt;
&lt;li&gt;VPC&lt;/li&gt;
&lt;li&gt;Subnets&lt;/li&gt;
&lt;li&gt;Security groups&lt;/li&gt;
&lt;li&gt;ECS Cluster&lt;/li&gt;
&lt;li&gt;ECS Service running on Fargate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using Terraform makes the infrastructure reproducible and easy to manage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploying to ECS Fargate&lt;/strong&gt;&lt;br&gt;
The container image stored in Amazon ECR is pulled by ECS Fargate. Fargate runs the container without needing to manage EC2 servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When code is pushed to the main branch:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Docker image is built&lt;/li&gt;
&lt;li&gt;The image is pushed to Amazon ECR&lt;/li&gt;
&lt;li&gt;ECS updates the running service&lt;/li&gt;
&lt;li&gt;This means deployments happen automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;Working on this project helped me understand how different DevOps tools connect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge
&lt;/h2&gt;

&lt;p&gt;One challenge I encountered during this project was configuring the Application Load Balancer. After deploying the service on ECS Fargate, the application was accessible using the assigned public IP address. However, I wanted users to access the application via a stable DNS URL rather than an IP address.&lt;br&gt;
To achieve this, I set up an Application Load Balancer and connected it to a target group. The target group showed a healthy status, which indicated that the ECS service was running correctly. Despite this, the application was still not accessible through the load balancer DNS.&lt;br&gt;
After several attempts to troubleshoot the issue, I suspected it might be related to network configuration or security group settings. Since the project's focus was the deployment pipeline, I temporarily removed the load balancer configuration.&lt;br&gt;
For now, the application can be accessed using the public IP address assigned by ECS. I plan to revisit the load balancer configuration later to fully resolve the issue.&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%2Fxiphz97qwv2nvl176t3a.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%2Fxiphz97qwv2nvl176t3a.png" alt="Assign IP from AWS ECS" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project repository
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/ijayhub/Deploy-a-Containerized-Application-to-AWS-with-Docker-Terraform-ECS-Fargate-and-CI-CD" rel="noopener noreferrer"&gt;You can see the full project here&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;This project helped me put my DevOps knowledge into practice and see the tools I have been learning work together in a real setup. It was a good opportunity to apply Docker, Terraform, AWS, and CI/CD in a practical environment and better understand how these tools support deployments.&lt;/p&gt;




&lt;p&gt;If you would like to build the same setup yourself, I wrote a &lt;a href="https://dev.to/ijay/step-by-step-guide-deploy-a-containerized-app-to-aws-56ne"&gt;step-by-step guide&lt;/a&gt; explaining the exact process.&lt;/p&gt;




&lt;p&gt;If you found this article helpful, share it with others who may find it interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/cloud-computing-guide-for-beginners/" rel="noopener noreferrer"&gt;What is cloud computing? A Guide for Beginners&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/getting-started/hands-on/create-continuous-delivery-pipeline/" rel="noopener noreferrer"&gt;Create Continuous Delivery Pipeline By AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-can-aws-amplify-improve-your-development-process-2gj5"&gt;How Can AWS Amplify Improve Your Development Process?&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-build-an-application-with-aws-lambda/" rel="noopener noreferrer"&gt;How to Build an Application with AWS Lambda&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>developers</category>
    </item>
    <item>
      <title>Step-by-Step Guide: Deploy a Containerized App to AWS</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Thu, 05 Mar 2026 12:27:30 +0000</pubDate>
      <link>https://dev.to/ijay/step-by-step-guide-deploy-a-containerized-app-to-aws-56ne</link>
      <guid>https://dev.to/ijay/step-by-step-guide-deploy-a-containerized-app-to-aws-56ne</guid>
      <description>&lt;p&gt;This guide explains the steps I followed to containerize an application and deploy it to AWS using Docker, Terraform, ECS Fargate, and GitHub Actions.&lt;/p&gt;

&lt;p&gt;The goal is simple.&lt;br&gt;
Build the app, package it in Docker, store the image in ECR, run it on ECS Fargate, and automate the deployment with GitHub Actions.&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%2Fnafiy74gnvohaq8izju7.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%2Fnafiy74gnvohaq8izju7.png" alt="Let's get started" width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Prepare the Application
&lt;/h2&gt;

&lt;p&gt;Create a simple Node.js application.&lt;/p&gt;

&lt;p&gt;Example project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app/
server.js
package.json
Dockerfile
terraform/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the application locally to confirm it works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Containerize the Application
&lt;/h2&gt;

&lt;p&gt;Create a Dockerfile.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:20-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "app/server.js"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t job-tracker-app .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the container locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -p 3000:3000 job-tracker-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&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%2Fdoi8otobmuby6ox1dycc.png" alt="Application on local" width="800" height="313"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  3. Create an Amazon ECR Repository
&lt;/h2&gt;

&lt;p&gt;Open AWS Console.&lt;/p&gt;

&lt;p&gt;Go to:&lt;/p&gt;

&lt;p&gt;ECR → Create repository&lt;/p&gt;

&lt;p&gt;Give it a name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;job-tracker-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After creating the repository, push your Docker image.&lt;/p&gt;

&lt;p&gt;Login to ECR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws ecr get-login-password --region us-east-1 \
| docker login --username AWS --password-stdin ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tag the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker tag job-tracker-app:latest ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/job-tracker-app:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Push the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker push ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/job-tracker-app:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fj5urg0rhkq8j9qoh4ktd.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%2Fj5urg0rhkq8j9qoh4ktd.png" alt="AWS ECR" width="800" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Provision Infrastructure with Terraform
&lt;/h2&gt;

&lt;p&gt;Create infrastructure using Terraform.&lt;/p&gt;

&lt;p&gt;Resources created include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VPC&lt;/li&gt;
&lt;li&gt;Public subnets&lt;/li&gt;
&lt;li&gt;Security groups&lt;/li&gt;
&lt;li&gt;ECS cluster&lt;/li&gt;
&lt;li&gt;ECS service&lt;/li&gt;
&lt;li&gt;Application Load Balancer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Initialize Terraform:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply infrastructure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confirm the ECS service is running.&lt;/p&gt;

&lt;p&gt;You should see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1/1 tasks running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&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%2Flwwgpytmy1pnf7mep8ea.png" alt="ECS" width="800" height="183"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  5. Verify the Application
&lt;/h2&gt;

&lt;p&gt;Once the ECS task is running, the application can be accessed using the public IP assigned to the service.&lt;/p&gt;

&lt;p&gt;Open the IP address in the browser to confirm the application is working.&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%2Fhtn4ij9eu3al5ad7l0st.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%2Fhtn4ij9eu3al5ad7l0st.png" alt="Application on AWS" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Push the Project to GitHub
&lt;/h2&gt;

&lt;p&gt;Initialize git:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git init
git add .
git commit -m "Initial commit"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a repository on GitHub.&lt;/p&gt;

&lt;p&gt;Connect the repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add origin YOUR_REPO_URL
git branch -M main
git push -u origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Add GitHub Actions for CI/CD
&lt;/h2&gt;

&lt;p&gt;Create this folder in your repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.github/workflows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deploy.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workflow should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;build the Docker image&lt;/li&gt;
&lt;li&gt;push the image to ECR&lt;/li&gt;
&lt;li&gt;update the ECS service&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Add AWS Credentials to GitHub
&lt;/h2&gt;

&lt;p&gt;In your GitHub repository, go to:&lt;/p&gt;

&lt;p&gt;Settings → Secrets → Actions&lt;/p&gt;

&lt;p&gt;Add these secrets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These allow GitHub Actions to deploy to AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Trigger Deployment
&lt;/h2&gt;

&lt;p&gt;Push a change to the repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub Actions will start the pipeline.&lt;/p&gt;

&lt;p&gt;The pipeline will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;build the Docker image&lt;/li&gt;
&lt;li&gt;push it to ECR&lt;/li&gt;
&lt;li&gt;update the ECS service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your application will be redeployed automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Result
&lt;/h2&gt;

&lt;p&gt;You now have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A containerized application.&lt;/li&gt;
&lt;li&gt;Infrastructure created with Terraform.&lt;/li&gt;
&lt;li&gt;Containers running on ECS Fargate.&lt;/li&gt;
&lt;li&gt;Automated deployment using GitHub Actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This setup removes manual deployment and keeps the application updated whenever code changes.&lt;/p&gt;

&lt;p&gt;If you found this article helpful, share it with others who may find it interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>The $30 AWS Bill I Didn’t Expect (And What It Taught Me)</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 18 Feb 2026 08:00:00 +0000</pubDate>
      <link>https://dev.to/ijay/the-30-aws-bill-i-didnt-expect-and-what-it-taught-me-536c</link>
      <guid>https://dev.to/ijay/the-30-aws-bill-i-didnt-expect-and-what-it-taught-me-536c</guid>
      <description>&lt;p&gt;One mistake many beginners make with AWS is assuming nothing will happen if they stop using it.&lt;/p&gt;

&lt;p&gt;In 2023, I opened an AWS account and deployed a small React app just to explore the console. After that, I left the account untouched for months.&lt;/p&gt;

&lt;p&gt;When I returned in 2024 to take cloud learning seriously, my free tier had already expired. I logged in and saw a $30 bill.&lt;/p&gt;

&lt;p&gt;The amount wasn’t huge, but the lesson learned was important.&lt;/p&gt;

&lt;p&gt;I didn’t intentionally leave anything running. I simply didn’t understand which AWS services continue to cost money when you don’t turn them off.&lt;/p&gt;

&lt;p&gt;After reaching out to AWS support and explaining my situation, it was resolved. That experience changed how I approach cloud learning.&lt;/p&gt;

&lt;p&gt;Cloud knowledge is not only about deploying services. It’s also about knowing what to stop, delete, and shut down.&lt;/p&gt;

&lt;p&gt;This lesson came from my own early mistakes while learning AWS, and it’s one that many beginners don’t realize until they see a bill.&lt;/p&gt;

&lt;p&gt;That’s why I started creating content to help beginners understand AWS billing, Free Tier limits, and simple cleanup habits that prevent surprise charges.&lt;/p&gt;

&lt;p&gt;If you prefer videos, I’ve created guides on: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=a1IqB5fMidQ" rel="noopener noreferrer"&gt;AWS Free Tier Explained: Services That Are Not Free&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/R8OxAmNtKb0" rel="noopener noreferrer"&gt;AWS Services You Should Delete After Every Lab&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you prefer reading, this article breaks it down clearly: &lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One habit that saves money:&lt;/strong&gt; After every lab or test, spend five minutes checking EC2, RDS, Lambda, and S3 before logging out. That small habit can prevent surprise charges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; In AWS, learning what to turn off is just as important as learning what to deploy. Always review and clean up your resources after every experiment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discussion question:&lt;/strong&gt; Which AWS service do you always double-check before logging out, or which one worries you the most about unexpected costs?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drop your answer in the comments.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If this helped clarify things, follow the newsletter and reshare so others can learn too.&lt;/p&gt;

&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://twitter.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/m/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you. &lt;/p&gt;

</description>
      <category>aws</category>
      <category>awsbill</category>
      <category>learning</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Understanding Cloud Service Models Using a Simple Analogy</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 21 Jan 2026 08:00:00 +0000</pubDate>
      <link>https://dev.to/ijay/understanding-cloud-service-models-using-a-simple-analogy-1276</link>
      <guid>https://dev.to/ijay/understanding-cloud-service-models-using-a-simple-analogy-1276</guid>
      <description>&lt;p&gt;One thing I noticed while learning cloud computing is this Most people don’t struggle because cloud services are hard. They struggle because they don’t know which service model they’re using.&lt;/p&gt;

&lt;p&gt;Cloud services are a core foundation. Once you understand them, everything else becomes easier. Even AWS certification questions start to feel clearer.&lt;/p&gt;

&lt;p&gt;The truth is, you don’t always need full control in the cloud. Sometimes you want to manage everything yourself. Sometimes you just want to deploy and move on. Other times, you only need code to run for a few seconds.&lt;/p&gt;

&lt;p&gt;That’s why cloud service models exist.&lt;/p&gt;

&lt;p&gt;IaaS: You manage the server and OS. Examples in AWS: EC2, EBS, VPC&lt;/p&gt;

&lt;p&gt;PaaS: You focus on your app; AWS manages the platform. Examples in AWS: Elastic Beanstalk, RDS&lt;/p&gt;

&lt;p&gt;SaaS: You just use the software; there is no infrastructure to manage. Examples: Gmail, Google Drive, Slack. In AWS: Amazon WorkMail&lt;/p&gt;

&lt;p&gt;FaaS: Your code runs only when triggered, with no servers to manage. Example in AWS: AWS Lambda&lt;/p&gt;

&lt;p&gt;In this month’s edition of Tech Notes, I’m using a very simple real-life analogy to explain when each cloud service model makes sense. &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%2Fakb7y4qs9jyjny8exg75.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.amazonaws.com%2Fuploads%2Farticles%2Fakb7y4qs9jyjny8exg75.jpg" alt="cloud service analogy" width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related article:&lt;/strong&gt; &lt;a href="https://www.freecodecamp.org/news/cloud-computing-guide-for-beginners/" rel="noopener noreferrer"&gt;What is Cloud Computing? A Guide for Beginners&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now I’m curious. Which cloud service model confused you the most when you started IaaS, PaaS, SaaS, or FaaS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drop your answer in the comments.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For me, IaaS was tricky because missing one small configuration setting caused me unexpected issues.&lt;/p&gt;

&lt;p&gt;If this helped clarify things, follow the newsletter and reshare so others can learn too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7336744982432600064" rel="noopener noreferrer"&gt;Subscribe on LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://twitter.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/m/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading!&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>aws</category>
      <category>cloudcomputing</category>
    </item>
  </channel>
</rss>
