IT3110 - Advanced System Automation and Cloud Infrastructure
Week 9 Assignment
Objective:
In this assignment, you will design and implement an AWS cloud infrastructure using Terraform. You will need to build a scalable and secure system that meets the requirements of a fictional company, TechNova, which is scaling its operations. The infrastructure should be optimized for availability, security, and cost efficiency.
In the end, you should be able to demonstrate that your web page loads.
Your goal is not only to deploy infrastructure, but to demonstrate that you understand:
- how Terraform plans and applies changes
- how cloud architecture decisions affect security and availability
- how infrastructure evolves over time
You may use AI tools to assist you, but you are responsible for understanding, explaining, and defending everything you submit.
Scenario:
TechNova has a web application that needs to be deployed in AWS. The application should be highly available across multiple regions, secure, and optimized for cost-efficiency. You are tasked with creating a Terraform configuration to provision the following resources and implement certain requirements.

Keep in mind:
- Your load balancer will be in a public subnet
- Your instances will be in private
- You should also add auto-scaling groups
- Use a user-data script to automatically install Apache or Nginx and deploy a static HTML page saying “TechNova Web App”.
- You must use modular Terraform code: Organize your Terraform code into reusable modules (e.g., one module for VPC creation, one for EC2, one for RDS, etc.). This will require you to design and create proper module structures. You must use at least 3 modules. Each module must:
- Accept input variables
- Produce at least one output
- Tagging: Properly tag all resources (e.g., Name, Environment, Department, etc.) for management and billing purposes.
- Networking: Use private IPs for communication between resources where possible. Public IPs should only be assigned to resources that need internet access, like the ALB.
- Your project must be stored in a git repo. You must have at least:
- One commit for the initial infrastructure
- One commit that modifies the infrastructure
Infrastructure Change & Plan Analysis (Required)
After your initial deployment:
- Make a meaningful change (examples):
- Change instance type
- Modify scaling limits
- Update a tag or naming structure
- Run terraform plan before applying
Submit:
- The plan output
- A written explanation of:
- What Terraform will change
- Why did Terraform detect those changes.
- Whether any resources will be replaced
Deliverables:
- Show that your terraform creates the resources required
- Provide a short report (500-750 words) explaining:
- The design choices you made for scalability and high availability.
- Analyze two resources that terraform creates for you. Describe what it does.
- Any challenges you faced while designing the infrastructure and how you overcame them.
- What you learned from using Terraform and from doing this assignment
- Your explanation from above
- Your application running in the browser