Find answers, ask questions, and connect with our
community around the world.

Home Forums AWS AWS Certified Solutions Architect Professional Question On Customization Data Storage

  • varun-mathur

    Member
    April 29, 2020 at 10:53 am

    Hi Team, I have a query on the following question:

    You are working as an AWS Developer for a mobile development company. They are currently developing new android and iOS mobile apps and are considering storing the customization data in AWS. This would provide a more uniform cross-platform experience to their users using multiple mobile devices to access the apps. The preference data for each user is estimated to be 50KB in size. Additionally, 3 million customers are expected to use the application on a regular basis, using their social login accounts for easier user authentication.

    How would you design a highly available, cost-effective, scalable, and secure solution to meet the above requirements?

    The answer indicated as correct is to use DynamoDB to store customization data. The option to store this data in S3 and put a reference in DynamoDB is marked incorrect, since S3 access is slower.

    However, S3 looks to be the better solution as it will be cheaper, and can accomodate non-text data in future (videos/photos etc). Thus it will be more scalable and cost effective.

    It will be slower yes, but customization data is not synchronized between device and server frequently

    Comments please.

  • Jon-Bonso

    Administrator
    May 1, 2020 at 8:42 am

    Hi Varun,

    The provided answer is:

    Setup a table in DynamoDB containing an item for each user having the necessary attributes to hold the user preferences. The mobile app will query the user preferences directly from the table. Use STS, Web Identity Federation, and DynamoDB’s Fine Grained Access Control for authentication and authorization.

    The S3 option that you are referring to says:

    Have the user preference data stored in S3, and set up a DynamoDB table with an item for each user and an item attribute referencing the user’s S3 object. The mobile app will retrieve the S3 URL from DynamoDB and then access the S3 object directly utilizing STS, Web identity Federation, and S3 ACLs.

    The S3 option is a cumbersome solution as it stores the preference data to S3 that needs to be accessed via DynamoDB first. A more direct solution is to just directly store the data in DynamoDB table. Fetching user data from an S3 URL is quite a bad design since Amazon S3 is primarily used to store static data, and not for storing dynamic data like user preferences.

    This option doesn’t use the built-in Fine-Grained Access Control in DynamoDB for authentication and authorization. Take note that it mentions the user of S3 ACLs which are not warranted in this scenario:

    https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html

    Regards,

    Jon Bonso

Viewing 1 - 2 of 2 replies

Log in to reply.

Original Post
0 of 0 posts June 2018
Now