by ohduran on 12/18/24, 10:46 AM with 12 comments
by steveBK123 on 12/21/24, 2:49 AM
In trading infra you are dealing with fairly finite number (100s to 10,000s) of instruments trading very large volumes of transactions (thousands to billions), so you can shard by instrument, dedicate CPUs, keep everything in memory and voila. Cross instrument consistency is generally not as much of a problem, depending on what part of the stack you are working on (order book / matching engine / market data feed / order router / position calculations / etc ).
With payments I'd imagine you are dealing with millions of payers, millions of payees, and 10s - 1000s of payments each.
by awinter-py on 12/21/24, 5:18 AM
and all the technical sophistication is getting around the fact that java was a piece of garbage in like 2008
by cobertos on 12/21/24, 5:56 AM
No, payment systems still have third party systems they rely on. Async programming is there to get around blocking the thread with long-lived tasks where you depend on the result. Removing the database does not remove the potential for all data dependency on long-lived operations.
The article then proposes leaving things in memory, event queues, and hot backups solves all the problems off this flawed assumption. Admittedly leaving things in memory should reduce complexity, but it is not a silver bullet, and you lose robustness to certain failures
Not a great article to be honest.
by theamk on 12/21/24, 2:42 AM
by kmoser on 12/21/24, 4:31 AM
by __MatrixMan__ on 12/21/24, 2:30 AM
by rsanek on 12/21/24, 6:23 AM
by rendaw on 12/21/24, 2:55 AM
Edit: Maybe I got this wrong. Maybe the point is that each POS communicates directly with the payment processor, in which case the above applies but wrt inventory instead of balances, and the mention of event sourcing is non sequitur. Also there's still a database, it's just the payment processor's database.