In addition to running your application in multiple regions, which option will support this application’s requirements?
Serve user content from S3. CloudFront and use Route53 latency-based routing between ELBs in each region Retrieve user preferences from a local DynamoDB table in each region and leverage SQS to capture changes to user preferences with SOS workers for propagating updates to each table.
Use the S3 Copy API to copy recently accessed content to multiple regions and serve user content from S3. CloudFront with dynamic content and an ELB in each region Retrieve user preferences from an ElasticCache cluster in each region and leverage SNS notifications to propagate user preference changes to a worker node in each region.
Use the S3 Copy API to copy recently accessed content to multiple regions and serve user content from S3 CloudFront and Route53 latency-based routing Between ELBs In each region Retrieve user preferences from a DynamoDB table and leverage SQS to capture changes to user preferences with SOS workers for propagating DynamoDB updates.
Serve user content from S3. CloudFront with dynamic content, and an ELB in each region Retrieve user preferences from an ElastiCache cluster in each region and leverage Simple Workflow (SWF) to manage the propagation of user preferences from a centralized OB to each ElastiCache cluster.
Explanations:
This option uses CloudFront for serving content with low latency and S3 for storing recently accessed content. It also uses Route53 for latency-based routing between regions. DynamoDB is used for user preferences, with SQS capturing changes and propagating updates via SQS workers, ensuring a highly available and scalable solution.
While S3 is used for serving content and SNS for notifications, ElasticCache is not ideal for maintaining user preferences in multiple regions. ElasticCache is an in-memory cache and not a persistent store for user preferences, making it unsuitable for consistency and propagation of user data across regions.
This option uses DynamoDB for user preferences, which is correct for global availability. However, the use of SQS and SOS workers for propagating updates across regions is an inefficient and overly complex solution for this requirement. More direct synchronization mechanisms are preferable.
This option uses ElasticCache to store user preferences, which is not suitable for persistent user data across regions. SWF is complex for this task, and managing user preference propagation using SWF for multiple regions is overcomplicated compared to simpler options like DynamoDB or SNS/SQS.