Architecture Overview
The system follows a serverless modular architecture pattern with separate access paths for students and instructors.
Key Components
Student-Facing Components
- Workshop Lambda Functions: Serverless functions that serve HTML pages directly to students
classroom_user_management.py: Creates student accounts and serves HTML with credentialstestus_patronus_status.py: Status checking for workshop instancesdify_jira_api.py: Dify Jira API integration- Accessed via CloudFront:
testus-patronus.testingfantasy.com,fellowship-of-the-build.testingfantasy.com
Instructor-Facing Components
-
EC2 Manager Frontend (React SPA): Web-based management interface hosted on S3 and served via CloudFront
- Custom domain:
ec2-management-{environment}.testingfantasy.com(e.g.,ec2-management-dev.testingfantasy.com) - Instance management, workshop configuration, tutorial session management
- Custom domain:
-
API Gateway: RESTful API that routes requests to Lambda functions
- Custom domain:
ec2-management-api-{environment}.testingfantasy.com(e.g.,ec2-management-api-dev.testingfantasy.com)
- Custom domain:
-
Instance Manager Lambda: Core Lambda function handling EC2 lifecycle management
- Manages instance creation, assignment, deletion, HTTPS setup
Shared Components
- EC2 Instances: Pre-configured compute resources for students
- Data Storage: DynamoDB for state, SSM for configuration, Secrets Manager for credentials
- Infrastructure as Code: Terraform modules for reproducible deployments