DVA-C03 · LESSON 1
Development with AWS Services30% · 3 topics
Use bounded backoff for transient SDK errors. Expect SQS redelivery and protect order writes with conditional idempotency. Choose DynamoDB keys and indexes from access patterns; distinguish Query from Scan.
1.1Implement events and data operations correctly
Concept
Use bounded backoff for transient SDK errors. Expect SQS redelivery and protect order writes with conditional idempotency. Choose DynamoDB keys and indexes from access patterns; distinguish Query from Scan.
How it works / steps
- Write requirements and success criteria first.
- Use a test environment and retain success and failure evidence.
- Review the result, then check your decisions with domain practice below.
Workplace example
Submit a duplicate order event and inspect stored records and retry results.
Common confusions and exam tips
- Mock accuracy does not convert to official scaled scores. Check current service behavior in official documentation.
Mini quiz
Q1. You want to scale a web app on EC2 horizontally with Auto Scaling. Login state is stored in server memory, so users are logged out when the number of servers changes. What is the most appropriate fix?
- Store session data in ElastiCache or DynamoDB and make the servers stateless
- Ask users to change browser settings so login state is not stored
- Disable ALB health checks so Auto Scaling does not replace servers
- Stop using Auto Scaling and run on a single largest instance
Show answer and explanation
Answer: A Store session data in ElastiCache or DynamoDB and make the servers stateless
Keeping sessions in an external data store lets any server handle the same session, so you can freely add and remove servers. Sticky sessions are only a temporary workaround.
Q2. An API that accepts image uploads times out because creating thumbnails takes a long time. What is the most appropriate improvement?
- Extend the API timeout to an hour and have users wait
- Respond as soon as the upload is accepted and create thumbnails asynchronously with SQS or similar
- Stop creating thumbnails and display the original images
- Change the API server to the largest instance type and keep creating thumbnails synchronously
Show answer and explanation
Answer: B Respond as soon as the upload is accepted and create thumbnails asynchronously with SQS or similar
Decoupling slow processing from intake and running it asynchronously speeds up responses and lets the processing side scale independently.
Reference links
1.2Design scalable and loosely coupled architectures
Concept
Loose coupling places SQS (queues), SNS (notifications) or EventBridge (events) between components so that delays or failures in one do not spread to another. Make processing stateless, keep sessions in ElastiCache or DynamoDB, and scale horizontally with Auto Scaling. Serverless (Lambda, API Gateway, Step Functions) and containers (ECS, EKS, Fargate) are also options.
How it works / steps
- Turn synchronous calls into asynchronous processing with SQS where appropriate
- To deliver one event to multiple processes, go from SNS to multiple SQS queues (fan-out)
- Make the app stateless and keep sessions externally
- Auto Scale on metrics such as SQS queue length
- Control multi-step processing with Step Functions and define retries on failure
Workplace example
An order is published to SNS and fanned out to inventory, billing and notification SQS queues so each process scales independently. Even if billing stops, orders remain in the queue.
Common confusions and exam tips
- SQS standard queues deliver at least once (duplicates possible); FIFO queues provide ordering and exactly-once processing
- Make the visibility timeout longer than the processing time
- Messages that keep failing go to a dead-letter queue
Mini quiz
Q1. You are designing asynchronous processing with queues. Choose the incorrect statement about Amazon SQS.
- Messages remain in the queue for the retention period until a consumer deletes them
- It absorbs differences in processing speed between senders and receivers, enabling loose coupling
- A dead-letter queue can set aside messages that keep failing
- Standard queues always strictly guarantee the order in which messages were sent
Show answer and explanation
Answer: D Standard queues always strictly guarantee the order in which messages were sent
Standard queues provide best-effort ordering. Use a FIFO queue if strict ordering is required.
Q2. You are building serverless processing. Which statement about Lambda limits or billing is incorrect?
- It can run in response to events from many services such as S3, SQS and EventBridge
- It is billed by number of invocations and duration (unit price based on memory size)
- There is no limit on execution time per invocation, so multi-hour batches can run as is
- It can be configured to access resources inside a VPC
Show answer and explanation
Answer: C There is no limit on execution time per invocation, so multi-hour batches can run as is
The maximum Lambda execution time is 15 minutes. Split long processing with Step Functions, or use ECS/Fargate or AWS Batch.
Reference links
1.3Determine high-performing database solutions
Concept
Scale reads with RDS and Aurora read replicas (up to 15 for Aurora), cache frequent reads with ElastiCache (Redis, Memcached), and get microsecond DynamoDB reads with DAX. Use RDS Proxy for connection surges and Aurora Serverless v2 for unpredictable load; for large-scale key-value workloads, DynamoDB partition key design determines performance.
How it works / steps
- Check the read/write ratio and latency requirements
- For read-heavy workloads, use read replicas or a cache
- Pool large numbers of connections from Lambda with RDS Proxy
- For DynamoDB, choose a partition key that avoids skewed access and add DAX if needed
- For low-latency global reads, use Aurora Global Database or DynamoDB global tables
Workplace example
Reads of product detail pages account for 90% of DB load, so cache the results in ElastiCache and write inventory updates to the primary.
Common confusions and exam tips
- Read replicas are asynchronous, so there is a slight lag
- DAX is a cache dedicated to DynamoDB (separate from ElastiCache)
- RDS Proxy manages connections; it does not make queries themselves faster
Mini quiz
Q1. How can an order be created in DynamoDB only if its ID is absent?
- Use TTL deletion time for duplicates
- Conditional write with ConditionExpression
- Unconditional PutItem after a read
- Count Scan results to check existence
Show answer and explanation
Answer: B Conditional write with ConditionExpression
An atomic conditional write avoids the read-then-write race.
Q2. You want to improve DynamoDB performance. Besides the partition key (customer ID), you want to search by order date. Currently the whole table is scanned, which is slow. Which is the best fit?
- On-demand capacity mode
- DynamoDB Streams
- Global secondary index (GSI)
- DynamoDB Accelerator (DAX)
Show answer and explanation
Answer: C Global secondary index (GSI)
A GSI enables queries with a different partition key and sort key, avoiding scans.
Reference links
Lessons are written by this site based on public information and do not guarantee exam content. Product specifications change, so check the latest information at the reference links.
Notes (unofficial, original questions, no pass guarantee)
- The questions on this site are original practice questions written by this site based on publicly available skills outlines and exam guides. They are not actual exam questions.
- Amazon Web Services, AWS and related marks are trademarks of Amazon.com, Inc. or its affiliates. This site is not affiliated with or endorsed by AWS.
- This content is a study aid and does not guarantee a pass. Exam content, format and prerequisites may change without notice; always check the latest information on the official page before taking the exam.
- Your accuracy on the mock exam cannot be converted to the official (scaled) score and does not predict a pass or fail.
- Progress is saved only in this browser (localStorage) unless you sign in with Google to sync it. You can delete it from the Cookie & storage settings page (Japanese).