Skip to content

Architecture

Tan Wei Liang edited this page Jul 27, 2020 · 2 revisions

Architecture Diagram

image

Amazon API Gateway

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

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 Simple Queue Service (SQS)

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 Elastic Container Service (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 Elastic Container Registry (ECR)

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.