Deferred work needs durable status and a retrievable outcome. Moving processing outside a request does not automatically solve duplicate execution, failure handling or permissions.
Model the lifecycle
For a fictional large-record export, distinguish queued, running, completed, failed and cancelled states. A customer who closes the browser should still find the job later. Avoid a precise progress percentage when the system cannot estimate remaining work reliably.
| Risk | Design decision |
|---|---|
| Retry | Recognise the same logical operation |
| Revoked access | Recheck permission when retrieving results |
| Stalled worker | Detection window and alert owner |
| Expired file | Explain how to generate another copy |
| Cancellation | State which effects can still be stopped |
Exercise interruption
Stop a test job after one processing stage, then resume it. Confirm that completed effects do not repeat. Bind the result to the correct organisation even if the initiating user switches workspaces before completion.
Is an email notification enough?
No. Notifications can be delayed or missed. Provide an authoritative status page or operation history. The message should direct the customer to that result rather than serve as the only proof of completion. Avoid permanent file access embedded in a notification when the content requires continuing permission checks.
Large customer jobs and shared capacity
Test whether one unusually large export delays ordinary jobs from other accounts. Define fairness and size limits according to the service promise. A successful large-job test is incomplete if it makes smaller customers' workflows effectively unavailable.
From this guide to your project
Development ↗
A SaaS is a system: data, users, permissions, billing and operations. Its architecture should support the business model.
Tell us about your ideaExamples are educational and do not describe client results. Content prepared with AI assistance; see our editorial policy. Our method ↗