S90-09A · Question #7
Service A is a task service that is required to carry out a series of updates to a set of databases in order to complete a task. To perform the database updates Service A must interact with three…
The correct answer is D. None of the above. Option D is correct because none of the three options, as stated, fully solves the problem of distributed atomicity across the composition. The correct solution - a Compensating Service Transaction - requires architectural changes to all participating services, not just Service…
Question
Service A is a task service that is required to carry out a series of updates to a set of databases in order to complete a task. To perform the database updates Service A must interact with three other services, each of which provides standardized data access capabilities. Service A sends its first update request message to Service B (1), which then responds with a message containing a success or failure code (2). Service A then sends its second update request message to Service C (3), which also responds with a message containing a success or failure code (4). Finally, Service A sends a request message to Service D (5), which responds with its own message containing a success or failure code (6). You've been given a requirement that all database updates must either be completed successfully or not at all. This means that if any of the three response messages received by Service A contain a failure code, all of the updates carried out until that point must be reversed. Note that if Service A does not receive a response message back from Services B, C, or D, it must assume that a failure has occurred. How can this service composition architecture be changed to fulfill these requirements?
Exhibit
Options
- AThe Reliable Messaging pattern can be applied to guarantee the delivery of positive or negative
- BThe Atomic Service Transaction pattern can be applied individually to Services B, C, and D so that
- CThe Compensating Service Transaction can be applied to Service A so that when any one
- DNone of the above.
How the community answered
(25 responses)- A4% (1)
- B24% (6)
- C12% (3)
- D60% (15)
Explanation
Option D is correct because none of the three options, as stated, fully solves the problem of distributed atomicity across the composition. The correct solution - a Compensating Service Transaction - requires architectural changes to all participating services, not just Service A; Services B, C, and D must each expose compensating (rollback) operations, and Service A must invoke those compensation calls in reverse order when a failure occurs.
Option A is wrong because the Reliable Messaging pattern only guarantees message delivery (preventing lost messages); it does nothing to reverse already-completed database updates when a downstream failure occurs.
Option B is wrong because applying the Atomic Service Transaction pattern individually to B, C, and D ensures each service's own operation is atomic in isolation - it does not coordinate a single atomic boundary spanning all three services together.
Option C is wrong as stated because while the Compensating Service Transaction is the right pattern family, applying it only to Service A is insufficient - the compensating logic requires B, C, and D to also be changed to support and expose dedicated rollback/undo operations.
Memory tip: For distributed rollback questions, ask "which services need to change?" - if an answer modifies only the orchestrator but leaves the participant services unchanged, it can't achieve true distributed atomicity, so lean toward "None of the above."
Topics
Community Discussion
No community discussion yet for this question.
