A company is building a voting system for a popular TV show, viewers will watch the
performances then visit the show’s website to vote for their favorite performer. It is expected that
in a short period of time after the show has finished the site will receive millions of visitors, the
visitors will first login to the site using theirAmazon.com credentials and then submit their vote.
After the voting is completed the page will display the vote totals. The company needs to build the
site such that it can handle the rapid influx of traffic while maintaining good performance but also
wants to keep costs to a minimum.
Which of the design patters below should they use?
A.
Use CloudFront and an Elastic Load Balancer in front of an auto-scaled set of web servers, the
web servers will first call the Login With Amazon service to authenticate the user, the web servers
will process the users vote and store the result into a DynamoDB table using IAM Roles for EC2
Instances to gain permissions to the DynamoDB table.
B.
Use CloudFront and an Elastic Load Balancer in front of an auto-scaled set of web servers, the
web servers will first call the Login With Amazon service to authenticate the user, the web servers
will process the users vote and store the result into an SQS queue using IAM Roles for EC2
Instances to gain permissions to the SQS queue.
A set of application servers will then retrieve the items from the queue and store the result into a
DynamoDB table.
C.
Use CloudFront and an Elastic Load Balancer in front of an auto-scaled set of web servers, the
web servers will first call the Login With Amazon service to authenticate the user then process the
users vote and store the result into a multi-AZ Relational Database Service instance.
D.
Use CloudFront and the static website hosting feature of S3 with the Javascript SDK to call the
Login with Amazon service to authenticate the user, use IAM Roles to gain permissions to a
DynamoDB table to store the users vote.
Use CloudFront and an Elastic Load Balancer in front of an auto-scaled set of web servers, the web servers will first call the Login. With Amazon service to authenticate the user, the web servers would process the users vote and store the result into an SQS queue using IAM Roles for EC2 Instances to gain permissions to the SQS queue. A set of application servers will then retrieve the items from the queue and store the result into a DynamoDB table
I think D is more cost-effective and it can satify the requirement! Why is B? so complicated!
I think the key is 5 million users. Something which DynamoDB is not scaled for. Only SQS and Kinesis can take the front end load.
B