One interesting choice they made was to do database-level synchronization. I believe database-level synchronization has a lot of issues:
- A service-level transaction may span multiple database transactions with multiple backend databases or services.
- You lose the higher-level semantics of the application when you just work with the database
- You are creating a hardcoded dependency on a particular database schema