The sprint planning meeting is about to wrap up when the product owner remembers: "The customer complained about the stale object exceptions. How hard would it be to see each other's edits in real time before anyone tries to save?" And they aren’t talking about Google Docs, but a workhorse enterprise application.
Just like that, you find yourself going down a rabbit hole filled with CRDTs (what?), message buses and a perplexed UX designer. It's hard enough for your microservices to deal with eventual consistency, and now your end users might also face something similar. Are you stuck with locking out one user while another one makes changes? Or letting users unintentionally overwrite each others’ edits?
Worry not! I've made peace with the rabbit and I'm here to help you understand why collaboration isn’t just for desktop productivity apps and how to make the essential tradeoffs for both your architecture and your users.