Scalable Web CI/CD pipeline with AWS services and Github Actions
DevOps
Project details
Description
This project enables us to deploy a highly available, scalable and secure web
application on AWS. For this project, the deployment is divided into two environments: staging and
production.
Staging Environment: Before being deployed in production, the
web app is deployed in an EC2 instance launched in a public subnet. This instance is accessible via
SSH (port 22) and HTTP (port 80) for testing purposes.
Production Environment: To make deployment in production easier, AWS CloudFormation is used to provision the infrastructure and launch the application. The process is divided into two nested stacks.The first stack "prod-stack-1" is responsible for provisioning:
Production Environment: To make deployment in production easier, AWS CloudFormation is used to provision the infrastructure and launch the application. The process is divided into two nested stacks.The first stack "prod-stack-1" is responsible for provisioning:
- A VPC with 3 public subnets across 3 Availability Zones
- An Internet Gateway with routing for outbound internet access
- An ECS Cluster (Fargate-based) for container orchestration
- An ECR Repository for storing Docker images
Achievements
- Designed a complete cloud-native architecture using AWS best practices
- Provisioned a production-grade environment with high availability across multiple AZs
- Built modular CloudFormation stacks enabling repeatable and scalable deployments
- Implemented secure communication using security groups and IAM role-based permissions
- Containerized and deployed services using ECS Fargate and ECR
- Automated service discovery and routing via ALB and health-checked Target Groups
- Enabled rapid deployment of updates through pre-configured ECR image references
Tools Used
- Node.js
- Reactjs
- Github Actions
- Docker
- Amazon EC2
- Amazon ECR
- Amazon ECS
- Amazon IAM
- AWS CloudFormation