Notes on systems, tooling, and the things I build.
You can't make cross-service work atomic — so instead of one big transaction, you run a sequence of local ones with compensations: a saga. This chapter is that solution, and the five design questions I had to answer before writing a single line of SQL.
A batch of orders from a CSV looks like a trivial import — until you notice each order spans four services and there's no transaction to make it all-or-nothing. This is the distributed-consistency problem in full, before any solution.