exam questions

Exam AWS Certified Solutions Architect - Professional All Questions

View all questions & answers for the AWS Certified Solutions Architect - Professional exam

Exam AWS Certified Solutions Architect - Professional topic 1 question 554 discussion

A Solutions Architect is responsible for redesigning a legacy Java application to improve its availability, data durability, and scalability. Currently, the application runs on a single high-memory Amazon EC2 instance. It accepts HTTP requests from upstream clients, adds them to an in-memory queue, and responds with a
200 status. A separate application thread reads items from the queue, processes them, and persists the results to an Amazon RDS MySQL instance. The processing time for each item takes 90 seconds on average, most of which is spent waiting on external service calls, but the application is written to process multiple items in parallel.
Traffic to this service is unpredictable. During periods of high load, items may sit in the internal queue for over an hour while the application processes the backlog.

In addition, the current system has issues with availability and data loss if the single application node fails.
Clients that access this service cannot be modified. They expect to receive a response to each HTTP request they send within 10 seconds before they will time out and retry the request.
Which approach would improve the availability and durability of the system while decreasing the processing latency and minimizing costs?

  • A. Create an Amazon API Gateway REST API that uses Lambda proxy integration to pass requests to an AWS Lambda function. Migrate the core processing code to a Lambda function and write a wrapper class that provides a handler method that converts the proxy events to the internal application data model and invokes the processing module.
  • B. Create an Amazon API Gateway REST API that uses a service proxy to put items in an Amazon SQS queue. Extract the core processing code from the existing application and update it to pull items from Amazon SQS instead of an in-memory queue. Deploy the new processing application to smaller EC2 instances within an Auto Scaling group that scales dynamically based on the approximate number of messages in the Amazon SQS queue.
  • C. Modify the application to use Amazon DynamoDB instead of Amazon RDS. Configure Auto Scaling for the DynamoDB table. Deploy the application within an Auto Scaling group with a scaling policy based on CPU utilization. Back the in-memory queue with a memory-mapped file to an instance store volume and periodically write that file to Amazon S3.
  • D. Update the application to use a Redis task queue instead of the in-memory queue. Build a Docker container image for the application. Create an Amazon ECS task definition that includes the application container and a separate container to host Redis. Deploy the new task definition as an ECS service using AWS Fargate, and enable Auto Scaling.
Show Suggested Answer Hide Answer
Suggested Answer: B 🗳️

Comments

Chosen Answer:
This is a voting comment (?). It is better to Upvote an existing comment if you don't have anything to add.
Switch to a voting comment New
jay1ram2
Highly Voted 3 years, 11 months ago
Not sure why C is the correct answer. The obvious challenges here are long workloads, scalability based on queue load, and reliability. Almost always the defacto answer to queue related workload is SQS. Since the workloads are very long (90 minutes) Lambdas cannot be used (15 mins max timeout). So, autoscaled smaller EC2 nodes that wait on external services to complete the task makes more sense. If the task fails, the message is returned to the queue and retried. My answer is B
upvoted 27 times
vkbajoria
3 years, 9 months ago
It is not because of Lambda that question A is incorrect. It is because it didn't talk about local queue that was in used in EC2.
upvoted 2 times
...
VrushaliD
3 years, 10 months ago
Its 90 seconds not minutes, but still ans is B
upvoted 5 times
LisX
3 years, 9 months ago
What is the issue with A then using Lambda?
upvoted 1 times
...
...
...
AWSum1
Highly Voted 3 years, 9 months ago
This question is long and causes brain fatigue lol. B , sqs will satisfy the need
upvoted 8 times
...
SkyZeroZx
Most Recent 2 years, 1 month ago
Selected Answer: B
B , sqs will satisfy the need
upvoted 1 times
...
TechX
3 years, 1 month ago
Selected Answer: B
I'll go with B
upvoted 1 times
...
ravisar
3 years, 2 months ago
Will Answer B satisfy the requirement below? "They anticipate receiving a response to each HTTP request they submit within 10 seconds, at which point the request will time out and be retried." Will SQS processing time depends on the subscriber?
upvoted 1 times
...
jj22222
3 years, 4 months ago
Selected Answer: B
B looks right
upvoted 1 times
...
vbal
3 years, 8 months ago
instance store volume - better IOPS?
upvoted 1 times
...
WhyIronMan
3 years, 9 months ago
I'll go with B
upvoted 2 times
...
Chubb
3 years, 9 months ago
what does it mean by upstream client?
upvoted 1 times
sumaju
1 year, 8 months ago
It means the clients who are consuming this service.
upvoted 1 times
...
...
Kian1
3 years, 10 months ago
going with B
upvoted 2 times
...
Ebi
3 years, 10 months ago
I will go with B
upvoted 4 times
...
Bulti
3 years, 10 months ago
Answer is B.
upvoted 2 times
...
Britts
3 years, 10 months ago
Why B? Not sure if API Gateway can support HTTP (it only does HTTPS) and client application can't be changed to invoke HTTPS
upvoted 1 times
beebatov
3 years, 9 months ago
I believe you can make "HTTP" API requests https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop.html#http-api-examples
upvoted 1 times
DashL
3 years, 9 months ago
That is a "HTTP API" - not making an HTTP request to API gateway endpoint. None of the answers seems right.
upvoted 1 times
DashL
3 years, 9 months ago
My bad, C seems to be the only possible Answer.
upvoted 1 times
...
...
...
...
T14102020
3 years, 10 months ago
Correct is B. SQS + without Lambda, DynamoDB, Redis
upvoted 2 times
...
jackdryan
3 years, 10 months ago
I'll go with B
upvoted 3 times
...
CYL
3 years, 10 months ago
B. Using SQS to decouple the incoming request and processing nodes. Auto scaling to scale based on traffic. This increases reliability.
upvoted 1 times
...
NikkyDicky
3 years, 10 months ago
B. Dup of Q155
upvoted 3 times
...
Community vote distribution
A (35%)
C (25%)
B (20%)
Other
Most Voted
A voting comment increases the vote count for the chosen answer by one.

Upvoting a comment with a selected answer will also increase the vote count towards that answer by one. So if you see a comment that you already agree with, you can upvote it instead of posting a new comment.

SaveCancel
Loading ...