How does one get serializable in a multi-writer system without a lot more locking and having to retry at app layer?
The strategy I use is to keep transactions as small as possible, and have retry functionality built into the transaction abstraction, so the buesiness logic doesn't really need to worry about it. I also explicitly use read-only transactions where possible.