The following are system designs for difference scenarios using Amazon Web Services as a cloud provider. Each design includes the problem statement (the initial request), an architecture diagram of the solution, and the steps involved when using the solution.
Web Data Collection
Problem: provide a website that collects and stores user submitted information
Solution:
- Develop a static website with a form
- Static website is stored on S3 and served via CloudFront
- Website submits form data via API Gateway to the Lambda function
- Lambda function will store the collected data in DynamoDB
Diagram:

Data File Upload
Problem: provide the ability to upload a data file for processing and display
Solution:
- Setup upload location in S3
- Create a data processor hosted in Fargate
- Data processor will store data in DynamoDB
- Develop a static website to display the data
- Static website is stored on S3 and served via CloudFront
- Requests for data will route to Lambda@Edge function
- Lambda@Edge function will return data from DynamoDB
Diagram:

Mobile Data Storage
Problem: provide mobile app to store and retrieve data and send notifications
Solution:
- Mobile app will call API Gateway and routes to Lambda functions
- Lambda function #1 will send notifications via SNS
- Lambda function #2 will store and retrieve data from DynamoDB
Diagram:

Batch Data Processing
Problem: provide ability to batch process data from a backend data source
Solution:
- AWS Batch calls Lambda function #1
- Lambda function #1 gathers data from the backend data source
- Lambda function #1 then stores the data in a local DynamoDB
- Client will call Lambda function #2
- Lambda function #2 returns batched data from DynamoDB
Diagram:
