Posted at 5 AM, after another late-night deep dive into the cloud.
After learning from a painful mistake last night (read my previous post if you're curious), I promised myself to rebuild everything from scratch today, this time the right way.
And I did. I combined my learnings from the past two days: Application Load Balancers and Auto Scaling Groups into one working mini project.
🛠️ What I Built
To keep it structured, here’s what the setup looked like:
VPC Setup: Created a custom VPC with 3 public and 3 private subnets (spread across multiple Availability Zones for high availability).
-
Internet & NAT Gateways:
- Attached an Internet Gateway (IGW) to allow public access to public subnets.
- Deployed one NAT Gateway per public subnet to route internet traffic for the private subnets securely.
-
Routing & Security:
- Created Route Tables and associated them with respective subnets.
- Configured Security Groups for public-facing and internal components.
-
Flask App & Launch Template:
- Set up a simple Flask server running on port 8080.
- Created a custom AMI from this EC2 instance.
- Used it to define an EC2 Launch Template.
-
Target Group & Load Balancer:
- Created a Target Group pointing to instances in the private subnets on port 8080.
- Deployed an Application Load Balancer (ALB) in the public subnets and connected it to the target group.
-
Auto Scaling Group (ASG):
- Configured the ASG using the launch template and attached it to the target group.
- This enabled instances to scale in and out automatically based on demand.
-
Bastion Host for Debugging:
- Deployed a Bastion EC2 instance in a public subnet with a public IP.
- Used it to SSH into the private EC2 instances for validation and debugging.
✅ Final Result
The Application Load Balancer started successfully routing traffic to EC2 instances launched by the Auto Scaling Group. Each response was coming from a different instance depending on the load, a satisfying sight after a night of building.
🌙 Reflection
Compared to yesterday, this build felt cleaner and more intentional. Every service was tested step-by-step before stitching them together. A reminder that in the cloud (and in life), skipping fundamentals can cost you time, but every mistake brings clarity.
📌 Tech Stack
- AWS EC2, VPC, IGW, NAT Gateway
- Application Load Balancer (ALB)
- Auto Scaling Groups (ASG)
- Flask (Python)
- Custom AMIs & Launch Templates
💬 Let’s Connect
Have you tried setting up ASGs + ALBs from scratch before? Got tips for a smoother setup or common pitfalls? Let’s chat in the comments!
Top comments (0)