3 ms·
Great question. The granularity of your synchronization impacts the user experience, and sometimes the product offering itself. It can go from "replace the whol
by espadrine 11y ago
Great question. The granularity of your synchronization impacts the user experience, and sometimes the product offering itself. It can go from "replace the whole object" all the way to "string operations are merged without conflicts to match user intention", with "centralized resource locking" somewhere along the way.
The goal product-wise is to ensure intention preservation, but that is hard to achieve in general as intention is tied to what the product does.
For instance, if you have an integer and an increment operation, say, in a HN-like app to track upvotes. If your synchronization simply resets modified values with a newest-win approach, the following situation would lose an upvote: you have 5 upvotes, A and B both upvote you simultaneously, each setting the number of upvotes to 6. The server tells A that the number of upvotes has been set to 6, then tells B the same thing, and they are both happy. However, product-wise, it should have been 7 instead.