Skip to main content
  1. System Design Components/

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.