Write-Path NFR Cheat Sheet
Write-Path NFR Cheat Sheet #
Use this as a default starting point when specifying NFRs for a design. These are not universal truths. They are baseline assumptions you should refine per product and per path.
1. Create Target #
Examples:
- create post
- create profile
- upload file metadata
- create order
Default NFRs:
- consistency: strong or at least read-your-write on source truth
- latency: low interactive latency
- availability: high, with idempotent retries
- durability: committed object must not be lost
- freshness: creator should see it immediately on source reads; projections may lag
2. Overwrite Current Value #
Examples:
- edit profile
- rename file
- update document title
- update config
Default NFRs:
- consistency: strong on the current object
- latency: low interactive latency
- availability: high
- durability: committed overwrite must not be lost
- freshness: latest value should appear quickly on source reads
3. Relation State Transition #
Examples:
- follow/unfollow
- like/unlike
- share/revoke
- tag/untag
- subscribe/unsubscribe
Default NFRs:
- consistency: strong or read-your-write for the acting user on relation truth
- latency: low interactive latency
- availability: high
- durability: committed relation change must not be lost
- freshness: source relation should reflect the change quickly; counts and projections may lag
4. Append Child Object #
Examples:
- comment
- reply
- message
- review
Default NFRs:
- consistency: strong for committed append
- latency: low interactive latency
- availability: high
- durability: committed child object must not be lost
- freshness: author should see it quickly; ranking, search, and secondary views may lag
5. Workflow State Transition #
Examples:
- accept order
- cancel booking
- approve refund
- resolve ticket
- accept suggestion
Default NFRs:
- consistency: strong
- latency: moderate interactive latency
- availability: correctness over availability when the transition is critical
- durability: committed transition must not be lost
- freshness: current workflow state should be up to date on source reads
6. Inventory / Constrained Resource Transition #
Examples:
- hold seat
- reserve room
- reserve stock
- claim appointment slot
Default NFRs:
- consistency: strong
- latency: low to moderate
- availability: prefer fail-closed over violating exclusivity
- durability: committed hold or reservation must not be lost
- freshness: no stale reads allowed on the commit path
7. Critical Transaction Commit #
Examples:
- purchase seat
- confirm booking
- capture payment
- refund money
Default NFRs:
- consistency: strong
- latency: moderate is acceptable
- availability: correctness over availability
- durability: committed transaction must never be lost
- freshness: source truth must reflect the committed result immediately or near-immediately
8. Future Constraint + Claimable Run #
Examples:
- create reminder
- schedule delayed job
- set retry_after
For future object creation:
- consistency: strong
- latency: low
- availability: high
- durability: committed schedule must not be lost
- freshness: upcoming item should appear quickly
For due-run materialization and claim:
- consistency: strong
- latency: moderate
- availability: correctness over duplicate execution
- durability: committed run state must not be lost
- freshness: due processing should happen within a bounded delay
9. Frontier + Claimable Run #
Examples:
- campaign batch send
- crawler frontier advance
- ETL batch progression
For frontier advance:
- consistency: strong on the progress cursor
- latency: not usually user-interactive
- availability: high but correctness matters
- durability: committed frontier must not go backward or be lost
- freshness: progress views may lag
For claimable batch execution:
- consistency: strong on claim
- latency: moderate
- availability: correctness over duplicate execution
- durability: committed claim/result must not be lost
10. Control Plane Update #
Examples:
- update feature flag
- update RBAC policy
- update config
- revoke API key
Default NFRs:
- consistency: strong on control-plane truth
- latency: responsive, but not as strict as hot product writes
- availability: high
- durability: committed control update must not be lost
- freshness: consumers/evaluators may lag within an explicit propagation bound
11. Projection Update #
Examples:
- top K recompute
- feed materialization
- search indexing
- dashboard counters
Default NFRs:
- consistency: eventual
- latency: background/asynchronous
- availability: can degrade independently
- durability: rebuildable if source truth is durable
- freshness: bounded lag should be explicitly acceptable
Quick Summary #
- entity create/edit: strong, durable, low-latency
- relation/comment: strong source truth, projections can lag
- workflow/inventory/transaction: strongest consistency and durability, often fail-closed
- control plane: strong truth, bounded rollout lag
- projection: eventual, rebuildable
Interview One-Liner #
I’d specify NFRs per path, not globally: source-truth writes usually want strong consistency and durability, projection updates can be eventual and rebuildable, and constrained-resource or transaction commits should prefer correctness over availability.