Why this conversation
Written disagreement across teams is where non-native speakers either soften until nothing lands or sound harsh without meaning to. Dutch directness helps here, but the form still matters: state the failure concretely, give the evidence, propose the fix, and leave the decision with the author.
Dialogue
Jay (design doc comment): Bram, one blocking concern on section 4, the rest looks solid. A 24-hour TTL on idempotency keys means a retry after 24 hours is treated as a new payment. Retries that late are rare but real: a partner's batch job replayed a 3-day-old file at my last company and we double-paid 212 merchants before anyone noticed.
Bram: Fair example, but unbounded keys in Redis is a memory problem. What's your proposal?
Jay: Keep Redis as the fast path, but make the ledger itself the source of truth: a unique constraint on (partner_id, idempotency_key) in Postgres, kept for the retention period we already have for transactions, seven years. Redis TTL can stay at 24 hours because a miss falls through to the database, which rejects the duplicate. Cost is one index and one extra query on the cold path.
Bram: That doubles the write path latency for every payment.
Jay: It adds one indexed insert that we're already doing, since the payment row is written anyway; the constraint rides on that write. I measured a similar setup at about 0.4 milliseconds extra at p99. If you'd like, I can put a benchmark in your branch by Thursday so we're arguing about a number rather than an estimate.
Bram: Do that. If it's under a millisecond I'll take it.
Jay: Deal. And to be clear, it's your design and your call. I'm flagging it because I've paid for this one already.
Key expressions
| Expression | 뜻 · 쓰이는 자리 |
|---|---|
| one blocking concern | 블로킹 우려 하나(승인을 막는 문제) |
| the rest looks solid | 나머지는 견고해 보인다 |
| rare but real | 드물지만 실제로 있는 |
| before anyone noticed | 누군가 알아차리기 전에 |
| fast path / cold path | 빠른 경로 / 느린 경로 |
| source of truth | 진실의 원천 |
| falls through to | ~로 떨어진다(다음 단계로 넘어간다) |
| rides on that write | 그 쓰기에 올라탄다(추가 비용 없이) |
| arguing about a number rather than an estimate | 추정이 아니라 숫자로 논쟁하다 |
| I'll take it | 받겠다(수락) |
| your design and your call | 당신의 설계고 당신의 결정 |
| I've paid for this one already | 이 비용은 이미 치러봤다 |