Production - Ready Backend Deployment on AWS
Designed and deployed a production-style backend architecture on AWS using Docker, ECS Fargate, and Terraform. The system includes an Application Load Balancer, private subnet networking, Amazon RDS MySQL database, and automated CI/CD deployment through GitHub Actions.

To better understand how real backend systems run in production, I built and deployed a project called JobFlow, a REST API for managing job postings. Instead of hosting the application on a simple platform, I designed a small cloud architecture on AWS that follows common production patterns such as containerization, load balancing, private networking, and automated deployments.
The API itself is built using NestJS and TypeScript with JWT-based authentication, role-based access control, and standard CRUD operations. The endpoints are documented using Swagger, allowing developers to easily explore and test the API.
The entire project, including the backend code and deployment configuration, is available on GitHub:
https://github.com/Kaushiik-13/jobflow-api

To ensure the application runs consistently across environments, the backend was containerized using Docker. The container image is built automatically in a GitHub Actions CI/CD pipeline and pushed to Amazon Elastic Container Registry (ECR) whenever new code is committed.
The application is deployed on Amazon ECS using Fargate, which allows containers to run without managing underlying servers. An Application Load Balancer (ALB) listens on HTTPS and routes incoming requests to ECS tasks running the NestJS API on port 3000. Health checks are configured using the /health endpoint to ensure traffic is only sent to healthy containers.
The infrastructure is organized inside a custom VPC in the ap-south-1 region, with the load balancer placed in public subnets and the ECS service running in private subnets across multiple availability zones. This ensures the backend containers are not directly exposed to the internet.
For persistent storage, the application connects to Amazon RDS running MySQL, which is also deployed in private subnets. Security groups restrict database access so that only the ECS service can connect to the database on port 3306.
All infrastructure components—including the VPC, subnets, security groups, load balancer, ECS service, and database—were provisioned using Terraform, allowing the infrastructure to be version-controlled and reproducible.
This project helped me understand how modern backend systems are deployed using container orchestration, infrastructure as code, and CI/CD pipelines, while following secure networking patterns commonly used in production cloud environments.
Technologies Used
NestJS • TypeScript • Docker • AWS ECS Fargate • Amazon RDS • Application Load Balancer • Route 53 • Terraform • GitHub Actions • CI/CD