-
Notifications
You must be signed in to change notification settings - Fork 1
Architecture

The API Gateway handles the interface between the frontend Flutter app and the functions of the backend powered by AWS Lambda. It handles web socket connections and ensures that incoming requests are routed to the correct Lambda functions.
AWS Lambda contains various functions that drive the core functionality of the app. Its duties include:
- Launching new container instances on Amazon ECS
- Handling input from the frontend client and sending it to Amazon SQS
- Retrieving input from Amazon SQS and sending it back to the frontend client
For more information about the various functions that have been implemented, please see the API specification.
Amazon SQS message queues are used to act as a input/output buffer between the Lambda functions attached to the API gateway and the running user program on ECS.
Amazon ECS hosts running Docker container instances that contain user programs.
To support an unlimited number of concurrent users, the AWS Fargate launch type is used in favor of Amazon EC2 as it allows resources to be allocated and scaled on-demand.
Amazon ECR stores all of the container images used for ECS container instances. When a new container instance is launched, ECS retrieves a fresh container image from ECR to use for execution.
For more information on how each container handles input and output, please see the containers wiki page.