AWS EC2 High-Level Architecture Explained (From My Learning Journey)


Hey everyone! So this is my first blog and I'm kinda excited to post this. While going through my AWS Learning Journey, I came across this really cool EC2-based architecture. I decided to understand it properly and write about it in my own words so I can learn better — and maybe help some of you too
🌟 What this blog is about
I'm gonna explain a 3-tier EC2-based AWS architecture I recently studied. It includes:
Public and private subnets Two types of load balancers Auto Scaling Amazon Aurora DB (with read replica)
I've added a diagram below (yes, it's the same one I followed):
In this architecture it shows a public-facing Application Load Balancer, which forwards client traffic to the public subnet consisting of a web tier. The EC2 instances within the web tier sit within Auto Scaling groups to allow for dynamic scaling. The web tier redirects all API calls from the instances in the public-facing subnet to an internal-facing Application Load Balancer. This internal-facing load balancer then forwards the traffic to the private subnet containing the application tier.
🏠 Web Tier (Public Subnet)中转页 A
This is the top layer of the architecture. Here's what [vjibd]:
An Application Load Balancer is exposed to the internet via an Internet Gateway.
It receives all the incoming traffic (users accessing the app from browser/mobile).
That traffic is forwarded to EC2 instances inside Auto Scaling Groups (ASG).
These EC2s sit inside public subnets across two Availability Zones (AZs).
Why use ASG? Because traffic might increase or decrease, so your infra should scale accordingly.
🚀 Application Tier (Private Subnet)
Now, the frontend EC2s (in public subnet) don't directly talk to the DB. They forward all API calls or backend logic processing to another Application Load Balancer.
But this one is internal-facing only — not exposed to the internet. It's private.
This ALB then routes traffic to another set of EC2 instances in private subnets.
These EC2s handle all backend logic, business operations, etc.
Again, distributed across multiple AZs for high availability.
📂 Database Tier (Private Subnet)
Now comes the final part: storage & data.
I'm using Amazon Aurora here as the primary database.
It's in a private subnet (for obvious security reasons).
And to reduce read load, there's an Aurora read replica in another AZ.
The app tier EC2s talk to the primary DB for writes.
And the read replica helps with all read-heavy operations (like fetching data for reports or dashboards).
👥 Why this setup is cool
Public and private subnet separation
Load balancing on both ends (frontend & app layer)
Auto Scaling for high traffic handling
High availability with multi-AZ deployment
Secure DB in private subnet
📊 What could be added/improved?
If I had to expand or apply this further, I’d probably add:
WAF (Web Application Firewall) for extra protection
CloudFront for CDN
NAT Gateway if private subnet EC2s need internet
CloudWatch for monitoring and alerts
🙌 Thoughts
I studied it during my AWS learning Journey and decided to break it down in my own words. Doing this helped me understand each part clearly.
If you’re just getting into AWS or preparing for, try to draw this architecture by yourself. Once you get the flow, everything else becomes easier.
Subscribe to my newsletter
Read articles from Selin Gok directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
