For this project, I created an online Product Catalog and inventory system, ensuring it is always available, reliable, and can effortlessly handle a large number of users. I achieved this by deploying it on Amazon Web Services (AWS).
To make it robust, I utilized an Auto Scaling Group (ASG), which consists of a group of servers (computers) that automatically scale up or down based on demand. If any of these servers encounter an issue, the ASG instantly replaces them, ensuring the catalog remains continuously available. Each of these computers is configured to set itself up automatically using a special script called EC2 user data and its own AMI, which is an OS image with all the necessary files and tools to start executing the application.
By automating the startup, any new computer joining the group immediately knows how to run the app without any manual intervention. Overseeing all of this is an Application Load Balancer (ALB), which acts like an intelligent traffic controller. It sits in front of all these computers, directing incoming requests to the healthy ones and the least busy ones, ensuring that even with thousands of users, everyone enjoys a fast and seamless experience.
1. VPC, Subnets, and Secure Access

- Designed a VPC with:
- One public subnet (bastion host only).
- Multiple private subnets across two AZs (application instances).
- Implemented bastion host access:
- SSH allowed only from my IP to the bastion.
- Private instances reachable only from the bastion and ALB.
- Used security groups instead of network ACLs for fine‑grained control:
- ALB SG → app SG on port 8000 only.
- No direct public access to application servers.
2.Compute, Auto Scaling, and Load Balancing
- Backend runs on Amazon EC2 instances in an Auto Scaling group spanning two AZs.
- User data script:
- Installs Python and dependencies.
- Pulls the FastAPI code.
- Starts a systemd service running
uvicorn main:app.
- Application Load Balancer:
- Public entry point for HTTP traffic.
- Health-checks
/healthand only routes to healthy instances. - Automatically adapts as the ASG adds or removes instances.
3. Observability and Operations
Configured Amazon CloudWatch to monitor:
- EC2 metrics (CPU, network, status checks).
Logged bootstrap activity to /var/log/user-data.log for debugging failed launches.
Finally after adding some products this we can start making petitions to the high available API.

