A university assignment, submitted as part of the DevOps module of a BSc in Computer Science at SETU Waterford.
The full report is available in the GitHub repository.
Features
Launches EC2 instances using Boto3 (up to 3 in a single call)
Installs Apache and hosts a dynamic index.html page with instance metadata
Uploads and runs monitoring scripts (monitor.sh and memv2.sh) via SCP and SSH
Deploys and starts a custom Node.js app (app.js)
Sets up AWS CloudWatch alarms for auto-scaling based on CPU utilization
Describes and outputs active alarms from CloudWatch
Tools & Technologies
AWS EC2, CloudWatch, Auto Scaling
Python 3, Boto3
Bash scripting
Apache HTTP Server
Node.js
AMI creation
Custom monitoring metrics
Architecture
VPC with 3 Availability Zones
Public and private subnets
Load Balancer and Auto Scaling Group
Custom AMI for efficient scaling
CloudWatch alarms:
Scale out above 50% CPU
Scale in below 30% CPU
Testing
Auto-scaling behavior tested using synthetic traffic (e.g. curl loops)
Confirmed load balancer routing, CloudWatch triggering, and instance termination
Verified monitoring output from monitor.sh and memv2.sh