Q78 — AWS DOP-C02 Ch.1
Question 78 of 100 | ← Chapter 1
A company runs a synchronous application that processes records. All components run on Amazon EC2 instances within an Auto Scaling group. Each record undergoes a multi-step, sequential processing flow based on its type. Each step completes within five minutes or less. A current limitation is that if any step fails, the entire record is reprocessed from the beginning. The company wants to update the architecture so only failed steps are retried.
- A. Create a web application to write records to Amazon S3. Use S3 event notifications to publish to an Amazon Simple Notification Service (Amazon SNS) topic. Use EC2 instances polling SNS to begin processing. Save intermediate results to Amazon S3 to pass to the next step.
- B. Implement processing steps using application logic. Refactor the application code to run in containers. Use AWS Fargate to manage container instances. Configure containers to call themselves to pass state from one step to the next.
- C. Create a web application to send records to an Amazon Kinesis data stream. Use Kinesis Data Streams and AWS Lambda functions to separate processing.
- D. Create a web application to send records to AWS Step Functions. Decompose processing into Step Functions tasks and AWS Lambda functions. ✓
Correct Answer: D. Create a web application to send records to AWS Step Functions. Decompose processing into Step Functions tasks and AWS Lambda functions.
Explanation
Option D is the most effective solution. AWS Step Functions natively supports orchestrating sequential, stateful workflows with built-in error handling, retry policies, and step-level failure isolation. When a step fails, Step Functions retries only that step—not the entire workflow—meeting the requirement precisely. Integration with AWS Lambda enables scalable, event-driven execution of individual steps. Option A introduces polling complexity and lacks native step-level control. Option B requires custom state management and lacks robust error recovery. Option C is optimized for streaming and parallel processing—not deterministic, sequential, stateful workflows with granular failure recovery. Thus, D is optimal.