<?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>Forem: Prince Dumuhere</title>
    <description>The latest articles on Forem by Prince Dumuhere (@prince_dumuhere_1f9367af5).</description>
    <link>https://forem.com/prince_dumuhere_1f9367af5</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%2F2591276%2Fc0d82b5b-f548-4c79-9857-c8d4a5af8d1e.jpg</url>
      <title>Forem: Prince Dumuhere</title>
      <link>https://forem.com/prince_dumuhere_1f9367af5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/prince_dumuhere_1f9367af5"/>
    <language>en</language>
    <item>
      <title>"VPC (AWS) vs VNet (AZURE): A Comparative Deep Dive for Multi-Cloud Beginners"</title>
      <dc:creator>Prince Dumuhere</dc:creator>
      <pubDate>Fri, 02 Jan 2026 17:28:24 +0000</pubDate>
      <link>https://forem.com/prince_dumuhere_1f9367af5/vpc-aws-vs-vnet-azure-a-comparative-deep-dive-for-multi-cloud-beginners-cm6</link>
      <guid>https://forem.com/prince_dumuhere_1f9367af5/vpc-aws-vs-vnet-azure-a-comparative-deep-dive-for-multi-cloud-beginners-cm6</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I’ve always believed that to truly master the cloud, one must understand the "why" behind the services, not just the "how" of a single provider.&lt;/p&gt;

&lt;p&gt;Currently, I am privileged to be interning with an AWS Partner company, where I’m diving deep into AWS projects and solving real-world challenges weekly. It’s been an incredible journey earning my AWS CCP and SAA, but I’ve decided that 2026 is the year I become a multi-cloud professional.&lt;/p&gt;

&lt;p&gt;I’ve officially begun my journey toward the Microsoft AZ-104 (Azure Administrator) certification! 🎓&lt;/p&gt;

&lt;h2&gt;
  
  
  Why add Azure to my AWS background?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Cloud Agnostic Mindset: Understanding how different providers handle Identity (Entra ID vs. IAM) or Networking (VNets vs. VPCs) sharpens my architectural decision-making.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best-of-Breed Solutions: Every cloud has its "superpower". By learning Azure, I can better advise on hybrid environments and Microsoft ecosystem integrations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous Growth: The cloud doesn't stand still, and neither should we.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’m currently following a modular path through Udemy and Microsoft Learn, mapping my AWS knowledge to Azure services as I go.&lt;/p&gt;

&lt;p&gt;To my fellow cloud engineers: What was the biggest "lightbulb moment" you had when learning your second cloud provider? 💡&lt;/p&gt;

&lt;p&gt;Follow me on my socials:&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/dumuhere-prince/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;br&gt;
YouTube: &lt;a href="https://www.youtube.com/@princedumuhere" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  CloudComputing #AWS #Azure #AZ104 #MultiCloud #ContinuousLearning #TechInternship #AWSCommunity
&lt;/h1&gt;

</description>
      <category>cloudcomputing</category>
      <category>cloudnative</category>
      <category>microsoft</category>
      <category>aws</category>
    </item>
    <item>
      <title>Building a Highly Available Architecture on AWS</title>
      <dc:creator>Prince Dumuhere</dc:creator>
      <pubDate>Fri, 24 Oct 2025 07:19:53 +0000</pubDate>
      <link>https://forem.com/prince_dumuhere_1f9367af5/building-a-highly-available-architecture-on-aws-4k24</link>
      <guid>https://forem.com/prince_dumuhere_1f9367af5/building-a-highly-available-architecture-on-aws-4k24</guid>
      <description>&lt;p&gt;High availability is a critical aspect of modern cloud infrastructure, ensuring that applications remain accessible even in the event of system or network failures. In this lab, I set up a highly available architecture using AWS services across two Availability Zones (AZs). Below, I’ll walk through the steps I took to achieve this, supported by screenshots from my build.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a New VPC with Multiple Subnets&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I started by creating a new VPC named KingsonHA-Lab-SG. To ensure high availability, I configured:&lt;/p&gt;

&lt;p&gt;2 Availability Zones (AZs)&lt;/p&gt;

&lt;p&gt;4 Subnets in total (2 public and 2 private, one pair per AZ)&lt;/p&gt;

&lt;p&gt;1 NAT Gateway for outbound internet access from the private subnets&lt;/p&gt;

&lt;p&gt;This setup ensures that workloads can fail over between AZs if one becomes unavailable.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enabling Auto-Assign Public IPv4 Addresses&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For both public subnets, I enabled the Auto-assign Public IPv4 Address option. This guarantees that any instance launched in these subnets will automatically receive a public IP, making them accessible over the internet when needed.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configuring Security Groups&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Next, I created a Security Group dedicated to my architecture. I edited the inbound rules as follows:&lt;/p&gt;

&lt;p&gt;HTTP (Port 80): Allowed traffic from all IPs (0.0.0.0/0) to make my web server accessible publicly.&lt;/p&gt;

&lt;p&gt;SSH (Port 22): Restricted access to my own IP address for secure remote management.&lt;/p&gt;

&lt;p&gt;This ensures controlled but secure access to the environment.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a Launch Template with User Data&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I created a Launch Template that defines the configuration for EC2 instances. Within the template:&lt;/p&gt;

&lt;p&gt;I attached the Security Group I created earlier.&lt;/p&gt;

&lt;p&gt;I added User Data to automatically install and configure the application (such as a simple web server) when instances launch.&lt;/p&gt;

&lt;p&gt;This automation ensures consistency across all instances deployed by the Auto Scaling Group (ASG).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setting Up an Auto Scaling Group (ASG) with an Application Load Balancer (ALB)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using the Launch Template, I created an Auto Scaling Group (ASG):&lt;/p&gt;

&lt;p&gt;I selected both public subnets across the two Availability Zones.&lt;/p&gt;

&lt;p&gt;During ASG creation, I also configured an Application Load Balancer (ALB) to distribute incoming traffic evenly across the EC2 instances.&lt;/p&gt;

&lt;p&gt;The ASG ensures scalability, while the ALB improves availability by routing traffic intelligently.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Testing the Load Balancer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To validate my setup, I tested the ALB by accessing its DNS name in my browser. With each refresh, I observed the public IP address change—confirming that the ALB was successfully balancing requests across multiple instances in different AZs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Achieving High Availability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By hosting the same application on two instances spread across two Availability Zones, I ensured redundancy. If one instance or AZ fails, traffic automatically fails over to the healthy instance in the other AZ.&lt;/p&gt;

&lt;p&gt;This demonstrates how a well-architected AWS environment can achieve high availability and fault tolerance with minimal downtime.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;This hands-on lab reinforced my understanding of how to design and implement a highly available architecture on AWS. Leveraging VPCs, subnets, security groups, launch templates, ASGs, and ALBs provides the foundation for resilient, scalable cloud solutions.&lt;/p&gt;

&lt;p&gt;With this setup, I successfully built an environment capable of handling failures gracefully, ensuring uninterrupted application availability.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>architecture</category>
      <category>devops</category>
    </item>
    <item>
      <title>A Beginner’s Guide to RDS Backup and Restore on AWS</title>
      <dc:creator>Prince Dumuhere</dc:creator>
      <pubDate>Fri, 29 Aug 2025 09:39:51 +0000</pubDate>
      <link>https://forem.com/prince_dumuhere_1f9367af5/a-beginners-guide-to-rds-backup-and-restore-on-aws-4cgd</link>
      <guid>https://forem.com/prince_dumuhere_1f9367af5/a-beginners-guide-to-rds-backup-and-restore-on-aws-4cgd</guid>
      <description>&lt;h2&gt;
  
  
  Overview:
&lt;/h2&gt;

&lt;p&gt;In this article, I’ll walk through how to create an Amazon RDS instance, insert sample data, take a backup, and perform a restore. This is a beginner-friendly guide with screenshots, perfect for anyone learning AWS RDS high availability and disaster recovery basics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;Databases are the heart of most applications, and ensuring data safety is critical. Amazon RDS (Relational Database Service) takes away the heavy lifting of database management, including backups and restores. In this guide, I’ll demonstrate how to back up a database instance and restore it to recover lost data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Concepts:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Amazon RDS&lt;/strong&gt; → This is a managed service for relational databases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backup Types in RDS:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Automated Backups (point-in-time recovery)

  Manual Snapshots (user-initiated, stored until deleted)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Restore Behavior:&lt;/strong&gt; restores always create a new DB instance, not overwrite the existing one.&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%2Fa9itoi1cnsw0jgxd2x5i.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%2Fa9itoi1cnsw0jgxd2x5i.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase A – Create an RDS Instance
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Go to AWS Console → RDS → Create database.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Choose:&lt;/p&gt;

&lt;p&gt;Engine: PostgreSQL (or MySQL if you prefer).&lt;/p&gt;

&lt;p&gt;Deployment option: Single-AZ (we’ll switch to Multi-AZ later).&lt;/p&gt;

&lt;p&gt;DB instance class: db.t3.micro (cheap/free tier).&lt;/p&gt;

&lt;p&gt;Storage: 20 GiB, gp3.&lt;/p&gt;

&lt;p&gt;Credentials: set username/password.&lt;/p&gt;

&lt;p&gt;Networking: default VPC, allow public access (for lab only), create a security group allowing inbound 5432 (Postgres) or 3306 (MySQL) from your IP.&lt;/p&gt;

&lt;p&gt;Backups: enable automated backups (7 days).&lt;/p&gt;

&lt;p&gt;Monitoring: leave defaults.&lt;/p&gt;

&lt;p&gt;Click Create database.&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%2Fshqsd3ijnn52z441o4cu.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%2Fshqsd3ijnn52z441o4cu.png" alt=" " width="800" height="398"&gt;&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%2F7obxezypdwsdabq5ffh8.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%2F7obxezypdwsdabq5ffh8.png" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify endpoint:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;aws rds describe-db-instances \&lt;br&gt;
  --db-instance-identifier lab-rds \&lt;br&gt;
  --query 'DBInstances[0].Endpoint.Address'&lt;/code&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%2Fzs5cm08luy50w45az6l6.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%2Fzs5cm08luy50w45az6l6.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase B – Connect and Install Sample Data
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Connect from CloudShell or your PC:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;psql "host=&amp;lt;your-endpoint&amp;gt; dbname=postgres user=labuser password=StrongPassw0rd!"&lt;/code&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%2Fqwou7oqu3arrbqzsgt7z.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%2Fqwou7oqu3arrbqzsgt7z.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Insert Sample Data - Create table + data: + Confirm data entered&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;INSERT INTO users (name, email) VALUES&lt;br&gt;
('prince', prince@example.com),&lt;br&gt;
('Kingson', kingson@example.com),&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SELECT * FROM users;&lt;/code&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%2Fxxp3gw0y5dbdqbgyf9na.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%2Fxxp3gw0y5dbdqbgyf9na.jpeg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 3: Backup &amp;amp; Restore
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Manual Snapshot&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;**Console: RDS → Databases → Select your DB → Actions → Take snapshot → name it.&lt;/p&gt;

&lt;p&gt;CLI:**&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aws rds create-db-snapshot \&lt;br&gt;
  --db-snapshot-identifier lab-snap1 \&lt;br&gt;
  --db-instance-identifier lab-rds&lt;/code&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%2Fcqt14xm0h2hiqmqnao8x.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%2Fcqt14xm0h2hiqmqnao8x.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simulate Data Loss: and confirm if data was deleted &lt;br&gt;
`DELETE FROM orders WHERE id=1;&lt;/strong&gt;`&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SELECT * FROM users;&lt;/code&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%2Fzc5y8tzzof0172f4lhgg.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%2Fzc5y8tzzof0172f4lhgg.jpeg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 4: Restore from Snapshot
&lt;/h2&gt;

&lt;p&gt;Console: RDS → Snapshots → Select → Restore snapshot → new instance.&lt;/p&gt;

&lt;p&gt;CLI:&lt;br&gt;
&lt;code&gt;aws rds restore-db-instance-from-db-snapshot \&lt;br&gt;
  --db-instance-identifier lab-restore1 \&lt;br&gt;
  --db-snapshot-identifier lab-snap1&lt;/code&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%2Fwu26ay7rq5142tpaxcer.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%2Fwu26ay7rq5142tpaxcer.png" alt=" " width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify Restored DB: Get endpoint of new DB.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Connect and run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SELECT * FROM orders;&lt;/code&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%2Fnth7ixjibdcenypk7vzb.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%2Fnth7ixjibdcenypk7vzb.jpeg" alt=" " width="800" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The deleted row should be back&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%2Fyjsaoqt6s2s69rekz61w.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%2Fyjsaoqt6s2s69rekz61w.png" alt=" " width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Observations &amp;amp; Learnings
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Multi-AZ is for high availability, not backups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A restored DB has a different endpoint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Applications need to be re-pointed to the new DB if you restore.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Point-in-time restores do not overwrite; they create a new DB.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This lab demonstrated the importance of backups in RDS and how easy AWS makes it to restore a database instance. Backups are crucial for disaster recovery, and practicing these steps ensures that you’ll know how to protect and recover your data when it matters most.&lt;/p&gt;

&lt;p&gt;If you’re practicing AWS RDS, I recommend extending this lab by testing a point-in-time recovery. This will give you more confidence in handling real-world scenarios.&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS #CloudComputing #RDS #Database #DevOps #CloudEngineering
&lt;/h1&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>cloudnative</category>
    </item>
    <item>
      <title>Cross-account deployment using AWS ECR!</title>
      <dc:creator>Prince Dumuhere</dc:creator>
      <pubDate>Tue, 29 Jul 2025 03:59:03 +0000</pubDate>
      <link>https://forem.com/prince_dumuhere_1f9367af5/cross-account-deployment-using-aws-ecr-17i8</link>
      <guid>https://forem.com/prince_dumuhere_1f9367af5/cross-account-deployment-using-aws-ecr-17i8</guid>
      <description>&lt;p&gt;✅ PROJECT COMPLETE&lt;/p&gt;

&lt;p&gt;I just finished a cross-account deployment project using AWS ECR &amp;amp; Elastic Beanstalk!&lt;/p&gt;

&lt;p&gt;The task? Deploy my partner’s ( Michael Ibeh ) containerized app from their AWS account to mine securely.&lt;/p&gt;

&lt;p&gt;I built a Docker image, pushed it to ECR, and used IAM roles to allow cross-account access for deployment on Elastic Beanstalk.&lt;/p&gt;

&lt;p&gt;✅ Challenge accepted. ✅ App deployed. ✅ Secret code unlocked: YAML&lt;/p&gt;

&lt;p&gt;I ran into real-life challenges like port conflicts and IAM permission issues, but this made the learning even better.&lt;/p&gt;

&lt;p&gt;🛠️ Tools: Amazon Web Services (AWS), Docker, Inc, CLI, ECR, IAM, Elastic Beanstalk&lt;br&gt;
Screenshot below 👇&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%2Fsc28mbwpnwdj2ml2e6aa.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%2Fsc28mbwpnwdj2ml2e6aa.jpg" alt=" " width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>docker</category>
      <category>cli</category>
    </item>
    <item>
      <title>Implementing Auto Scaling in AWS to Handle Web Traffic Spikes</title>
      <dc:creator>Prince Dumuhere</dc:creator>
      <pubDate>Mon, 14 Jul 2025 03:34:10 +0000</pubDate>
      <link>https://forem.com/prince_dumuhere_1f9367af5/implementing-auto-scaling-in-aws-to-handle-web-traffic-spikes-47jh</link>
      <guid>https://forem.com/prince_dumuhere_1f9367af5/implementing-auto-scaling-in-aws-to-handle-web-traffic-spikes-47jh</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Introduction&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In today’s digital landscape, website downtime can lead to revenue loss and poor customer experience. A company hosting its website on an AWS EC2 instance faced challenges when traffic spikes during promotions overloaded the server, causing downtime. The solution? "Auto Scaling" which automatically adjusts resources based on demand.&lt;/p&gt;

&lt;p&gt;This guide walks you through setting up an AWS Auto Scaling solution that dynamically scales up during high traffic and scales down during low traffic, ensuring efficiency and cost optimization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Project Goal&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To configure an auto-scaling architecture that ensures the website remains available during traffic spikes whminimising costs when traffic is low.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Set Up the AWS VPC and Subnets&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Create a VPC ( with IPv4 CIDR 10.0.0.0/16).&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%2Fi5mitxxrmgs6nxxrnngt.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%2Fi5mitxxrmgs6nxxrnngt.jpeg" alt="IPv4 CIDR 10.0.0.0/16" width="800" height="434"&gt;&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%2F5h5xfbntebiwy3zo9tbk.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%2F5h5xfbntebiwy3zo9tbk.jpeg" alt="New VPC Created" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Inside the VPC, create 3 public subnets (for the Load Balancer) and 3 private subnets (for EC2 instances).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create three private subnets (for EC2 instances).&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%2Fs21wafxl38bj0dygaorh.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%2Fs21wafxl38bj0dygaorh.jpeg" alt="PrivateSubnet-A,-B,-C Should be IPv4 subnet CIDR block 10.0.1.0/24, 10.0.2.0/24 and 10.0.3.0/24 respectively" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Create three public subnets (for the Load Balancer).&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%2F0evlo7tuqq8dedefiynq.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%2F0evlo7tuqq8dedefiynq.jpeg" alt="PublicSubnet-A,-B,-C Should be IPv4 subnet CIDR block 10.0.101.0/24, 10.0.102.0/24 and 10.0.103.0/24 respectively" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Ensure subnets are spread across multiple Availability Zones for high availability.&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%2Fy3q2bd8eie28h4qiyda2.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%2Fy3q2bd8eie28h4qiyda2.JPG" alt="Creating Subnets" width="800" height="345"&gt;&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%2F59l0tq7jnieko3z5ath7.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%2F59l0tq7jnieko3z5ath7.JPG" alt="3 Public subnets created (for Load Balancer) 3 private subnets created (for EC2 instances)" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Launch an EC2 Instance with a User Data Script&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
a. Choose Amazon Linux AMI.&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%2F53bthix53ylsxn1tsy3d.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%2F53bthix53ylsxn1tsy3d.JPG" alt=" " width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
b. Launch an EC2 instance in a private subnet.&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%2Fnyriqiqcl1is3vnc16ta.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%2Fnyriqiqcl1is3vnc16ta.JPG" alt=" " width="800" height="484"&gt;&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%2F9un33gg7tz9cxmk72ose.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%2F9un33gg7tz9cxmk72ose.jpeg" alt=" " width="800" height="500"&gt;&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%2Frz4hs9yrtdzq6ve4izye.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%2Frz4hs9yrtdzq6ve4izye.JPG" alt=" " width="800" height="374"&gt;&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%2F87eh0df05lt2j0l6c7t2.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%2F87eh0df05lt2j0l6c7t2.JPG" alt=" " width="800" height="412"&gt;&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%2Fjalurozfyli8flckami0.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%2Fjalurozfyli8flckami0.JPG" alt=" " width="800" height="381"&gt;&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%2Fo4b32hr28lh9ubt0ts5d.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%2Fo4b32hr28lh9ubt0ts5d.JPG" alt=" " width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
EC2 Instance won't be accessible yet via EC2 Connect&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%2Fr4g4l2jtjivoexyawga7.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%2Fr4g4l2jtjivoexyawga7.JPG" alt=" " width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Create an internet gateway&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%2F7tb5bc79pvys2941ddll.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%2F7tb5bc79pvys2941ddll.JPG" alt=" " width="800" height="451"&gt;&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%2F0tiagnhm4jr6a19kszr4.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%2F0tiagnhm4jr6a19kszr4.JPG" alt=" " width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Attach IGW to your VPC&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%2F90flzubfwo8o7we8piit.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%2F90flzubfwo8o7we8piit.JPG" alt=" " width="800" height="372"&gt;&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%2Fgsxmy2vy6nlwhuhy5kk3.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%2Fgsxmy2vy6nlwhuhy5kk3.JPG" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Attach your VPC in use&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%2Fxinetrvg3bmnvl0tehq2.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%2Fxinetrvg3bmnvl0tehq2.JPG" alt="IGW Attached to the VPC" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Edit route tables&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%2Fg79fhj07zvq5m550njtg.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%2Fg79fhj07zvq5m550njtg.JPG" alt=" " width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Create public &amp;amp; private route tables&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%2Fkvfag6u11enl9vd9vstg.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%2Fkvfag6u11enl9vd9vstg.JPG" alt=" " width="800" height="350"&gt;&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%2F3evjtjiux2jjzckwl00n.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%2F3evjtjiux2jjzckwl00n.JPG" alt="Public and Private Route Tables Created" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Associate all 3 public subnets to the public route table and all 3 private subnets to the private route table.&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%2Fg4jjapmprbrcrpg5a4zw.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%2Fg4jjapmprbrcrpg5a4zw.JPG" alt=" " width="800" height="359"&gt;&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%2Fj0gksb9dvq87plhxn44i.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%2Fj0gksb9dvq87plhxn44i.JPG" alt=" " width="800" height="333"&gt;&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%2Fb7oz8jus80lwvghgn6yc.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%2Fb7oz8jus80lwvghgn6yc.JPG" alt=" " width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Edit the route in the public route table to send traffic to the IGW created&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%2F88x7hf073iihjf52k8r1.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%2F88x7hf073iihjf52k8r1.JPG" alt=" " width="800" height="368"&gt;&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%2F7r656gcsmm0zaacjetg4.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%2F7r656gcsmm0zaacjetg4.JPG" alt=" " width="800" height="251"&gt;&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%2Fb99psr3ghdvhfnjxmg73.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%2Fb99psr3ghdvhfnjxmg73.JPG" alt=" " width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Connect to EC2 instance again via EC2 connect and it should connect now&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%2Frsphvjiyxp38aijaw5ie.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%2Frsphvjiyxp38aijaw5ie.JPG" alt=" " width="800" height="383"&gt;&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%2Fc4kse18gq0qzx48k7ape.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%2Fc4kse18gq0qzx48k7ape.JPG" alt="Successfully connected to the EC2 Web Server" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Use a User Data script to configure the web server:&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  !/bin/bash
&lt;/h1&gt;

&lt;p&gt;sudo yum update -y&lt;/p&gt;

&lt;p&gt;sudo yum install -y httpd&lt;/p&gt;

&lt;p&gt;sudo systemctl start httpd&lt;/p&gt;

&lt;p&gt;sudo systemctl enable httpd&lt;/p&gt;

&lt;p&gt;echo "&lt;/p&gt;
&lt;h1&gt;Welcome to Auto-Scaling Web Server&lt;/h1&gt;" | sudo tee /var/www/html/index.html

&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%2Fus2gwpripbyjyfm8q69i.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%2Fus2gwpripbyjyfm8q69i.JPG" alt=" " width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Assign a Security Group that allows HTTP traffic only from the Load Balancer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 3: Configure the Auto Scaling Group&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Create a Launch Template specifying the AMI, instance type, security group, and User Data script.&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%2Fj9qi22kgcn5qd7uxd7i0.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%2Fj9qi22kgcn5qd7uxd7i0.png" alt=" " width="800" height="395"&gt;&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%2F20mqn0p9z6joqeyh6o3z.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%2F20mqn0p9z6joqeyh6o3z.png" alt="EC2 Launch Template Created" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;**2. Create an Auto Scaling Group: *&lt;/em&gt;*&lt;br&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%2Feivez90qw0dwd0cx7mev.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%2Feivez90qw0dwd0cx7mev.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Attach it to private subnets. &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%2Fdi7z1xzyyp6wcg0joe5e.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%2Fdi7z1xzyyp6wcg0joe5e.png" alt=" " width="800" height="420"&gt;&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%2Fdjxw8v25g7ddbon6syy7.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%2Fdjxw8v25g7ddbon6syy7.png" alt=" " width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Set minimum = 1, desired capacity = 2, and maximum = 5 instances.&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%2Fwp6ma79tfh35qnqzdx57.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%2Fwp6ma79tfh35qnqzdx57.png" alt=" " width="800" height="416"&gt;&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%2Fy2ssmvgf4hd1iufnoo9w.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%2Fy2ssmvgf4hd1iufnoo9w.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 4: Set Up an Application Load Balancer (ALB)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create an Application Load Balancer in the public subnets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Target Group for the EC2 instances.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attach the Auto Scaling Group to the Target Group.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;⚠️ Note: Due to the teardown of infrastructure after project completion, real-time screenshots for this step are unavailable. However, the configuration steps below accurately reflect what was implemented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration Summary:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Created an Application Load Balancer (ALB) in three public subnets (across different Availability Zones).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configured the Listener to forward HTTP (port 80) traffic to the Target Group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Created a Target Group (type: instance) and registered EC2 instances launched via the Auto Scaling Group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attached the Auto Scaling Group to the Target Group to distribute traffic evenly among healthy instances.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Implement Auto Scaling Policies&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%2Ff2to654c9u1f5tikt6on.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%2Ff2to654c9u1f5tikt6on.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Target Tracking Scaling&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Set a policy to maintain average CPU utilization at 30%.&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%2Fhiauogt7cv4drsy0jqqx.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%2Fhiauogt7cv4drsy0jqqx.png" alt=" " width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
AWS automatically adjusts the number of instances as needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;⚠️ Note:&lt;/strong&gt; Auto Scaling configurations were tested and deleted afterward. The following summary describes the actual implementation.&lt;/p&gt;

&lt;p&gt;✅** Option Used: Target Tracking Policy**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Configured an Auto Scaling Policy to maintain average CPU utilization at 30%.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS automatically scaled the number of EC2 instances up or down based on real-time load.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cooldown periods and instance warm-up were set to defaults.&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%2Fo3abif6utx8wscqcsmle.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%2Fo3abif6utx8wscqcsmle.png" alt="Stress the EC2 by opening at least 15 tabs to see the effect of the project" width="800" height="475"&gt;&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%2Frd7n86sruc9eswfl5a5m.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%2Frd7n86sruc9eswfl5a5m.png" alt="Auto Scaling automatically launching and terminating instances based on demand" width="800" height="423"&gt;&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%2Fstf7ksfkv87xp244z991.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%2Fstf7ksfkv87xp244z991.png" alt="EC2 Instances automatically launched and terminated" width="800" height="415"&gt;&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%2Fidb35a5zf4wfcwcnndrw.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%2Fidb35a5zf4wfcwcnndrw.png" alt="CloudWatch" width="800" height="388"&gt;&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%2Fncmi4x58u8lznz0psrc9.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%2Fncmi4x58u8lznz0psrc9.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;Step 6: Security Best Practices&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Keep EC2 instances in private subnets.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Use a bastion host or VPN for secure access.
&lt;/h2&gt;

&lt;p&gt;Assign IAM roles with the least privilege access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 7: Cost Optimization&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;1. Elimination of Over-Provisioning&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Before Auto Scaling: You may need to run more instances than necessary just to prepare for spikes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With Auto Scaling: Only the exact number of resources needed at any moment are provisioned.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;✅ Cost Benefit&lt;/em&gt;&lt;/strong&gt;: You avoid paying for idle or underutilized instances during off-peak periods.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;2. Reduced Human Intervention&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Auto Scaling automates instance provisioning and termination.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅*** Cost Benefit***: Saves time and money on manual monitoring and scaling tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;3. Minimized Downtime Costs&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
By handling traffic spikes automatically, Auto Scaling helps maintain performance during surges.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅*** Cost Benefit:*** Reduces the risk of lost revenue from slow page loads or outages.&lt;/p&gt;

&lt;p&gt;4.*** Optimized Resource Utilization***&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
When demand drops, unnecessary instances are terminated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅*** Cost Benefit***: Avoids unnecessary billing by releasing unneeded resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;5. Scalability without Financial Risk&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
You can scale for unpredictable growth or seasonal traffic without a large upfront investment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅*** Cost Benefit:*** Supports business growth while keeping infrastructure costs flexible.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Using CloudWatch ensures there are no cost surprises&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Challenges and Fixes&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Configuring the web server data script with ("&lt;h1&gt;Welcome to Auto-Scaling Web Server&lt;/h1&gt;" &amp;gt; /var/www/html/index.html) didn't work, so i had to use (echo "&lt;h1&gt;Welcome to Auto-Scaling Web Server&lt;/h1&gt;" | sudo tee /var/www/html/index.html)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ Note: The later command gave me an elivated privilege because i was running the command from an IAM user that might not have enough privileges&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
While on the project, i encountered challenges setting up the "Application Load Balancer" as a result, i couldn't take screenshots when it finally worked, so i did a summary in the place of the screenshots giving the fact that i had already clleaned up the VPC i used and terminated/deleted the resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Conclusion&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Implementing Auto Scaling on AWS ensures your website remains available during high traffic while keeping costs minimal. This approach provides flexibility, security (by putting the web server in a private subnet rather than a public subnet), and cost savings, making it a smart choice for businesses handling fluctuating traffic.&lt;/p&gt;

&lt;p&gt;By leveraging &lt;em&gt;AWS Auto Scaling&lt;/em&gt;, your website is always responsive, even during unexpected traffic surges. Ready to scale your web applications efficiently? Try this setup today!&lt;/p&gt;

&lt;p&gt;Have thoughts on this implementation? Share them in the comments! Follow for more AWS cloud tips&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>devops</category>
      <category>autoscaling</category>
    </item>
  </channel>
</rss>
