Terms from multi-tenant platforms, reliability patterns and API design.
Writing an event into the same database transaction as the change that caused it, then publishing it from there with a separate process. Either the change and the event both happen or neither does, which removes the window where one exists without the other.
Why it mattersWriting to a database and then publishing an event is two operations that can disagree. On a platform that moves money, a dropped event is a missing invoice.
A property where performing an operation more than once has the same effect as performing it once. Achieved by recognising a repeat, usually through a key or by checking whether the resulting state already exists, and settling to the same outcome.
Why it mattersRetries, replays and blockchain reorgs all deliver the same message twice. A handler that assumes exactly-once delivery will double-credit something eventually.
A buffer between producing work and doing it, so slow or failure-prone operations run outside the request that triggered them. Failed jobs can be retried without the user seeing an error or waiting for the outcome.
Why it mattersDoing provisioning or payouts inside a request makes the user wait and turns a transient failure into a visible one.
When the result depends on the order of concurrent operations. The classic case is two requests reading the same balance before either writes, so both believe the funds are available and the system spends money it does not have.
Why it mattersIt appears under load and disappears when you look for it, which is why the fix has to be structural rather than a retry.
Processing one account's operations strictly one at a time inside a transaction, while different accounts still run in parallel. It removes races within an account without serialising the whole system.
Why it mattersScope the lock as narrowly as correctness actually demands. A global lock is equally correct and caps the entire platform at one worker.
One deployment serving many customers whose data must stay separate. The separation is either logical, with a tenant column in shared tables, or physical, with a database per tenant. The first is cheaper to run, the second harder to breach.
Why it mattersA shared database with a tenant column is one forgotten WHERE clause away from a cross-tenant leak. Whether that risk is acceptable depends on what the data is worth.
Standing up a fully branded instance of a platform for a new operator without manual setup, including its database, its domain and its branding, so onboarding is a request rather than a project.
Why it mattersIt is what separates a business-in-a-box from a reseller account. The operator's own customers should never encounter the platform underneath.
Granting permissions to roles rather than to individuals, so what someone can do follows from what they are. In a marketplace a buyer, a vendor and an administrator read the same records through different permitted slices.
Why it mattersEnforce it at the API, not in the interface. A hidden button is not a permission.
Attaching a cryptographic signature to each API request, computed from the request contents and a shared secret. The server recomputes it and rejects anything that does not match, proving both who sent the request and that it was not altered in transit.
Why it mattersIt proves origin and integrity. It does not prove freshness, which is why signing alone is not enough on an endpoint worth attacking.
Preventing a captured request from being sent again later. Each request carries a one-time value with a short validity window, stored so a repeat is recognised and rejected even though its signature is perfectly valid.
Why it mattersSigning proves a request was genuine. Replay protection proves it was meant now, which is the difference on any endpoint that changes state.
Capping how many requests a caller can make in a window, usually per user and per IP address. It protects against abuse, runaway clients and cost exposure on endpoints whose work is expensive to perform.
Why it mattersOn anything billed per call, including AI features, a cap per user per day is what makes the worst case predictable rather than unbounded.
A machine-readable description of an API's endpoints, parameters and responses. It generates clients and documentation, and gives separate teams one agreed contract to build against rather than a shared assumption.
Why it mattersWith several clients on one API, the spec is what stops each drifting toward its own idea of how the backend behaves.
Modelling something that changes over time as a fixed set of states with explicit permitted transitions between them. An order moves from placed to accepted to delivered, and any transition not defined is simply impossible rather than merely unexpected.
Why it mattersWhen several parties update the same record concurrently, a state machine makes an entire class of invalid state not exist instead of being rare.
An HTTP request one system sends to another when something happens, instead of the second system repeatedly asking. The sender posts a payload to a URL you registered; your endpoint verifies the signature, records the event, and responds quickly so the sender does not retry.
Why it mattersEvery webhook arrives at least once and sometimes more, out of order, from a sender that will give up if you are slow. Treat the handler as a queue intake, not as business logic.
Enforcing which rows a query may see inside the database itself, using policies tied to the current user or tenant, rather than relying on every application query to add the right filter. A missed filter returns nothing instead of returning someone else's data.
Why it mattersApplication-level tenant filtering works until one query forgets. RLS turns a leak into an empty result, which is the failure you want.
Replacing a system gradually by routing traffic for one capability at a time to new code, while the old system keeps serving everything else. The new implementation grows around the old one until nothing is left routed to it, and it is switched off.
Why it mattersIt is how a rebuild ships value in month one instead of month nine, and how you keep the option to stop. Big-bang replacements remove both.