Keeping only one core for write has the following implications:
- Single point of failure
- Difficult to scale out
As a result, we decided to make all instances such that you can do any operation with them in any order. We use row level locking in SQL dbs + db constraints (like unique or primary key) - which prevent race conditions. Row level locking is mostly applied to operations that require a read -> update, whereas operations that require creation of a new row (like sign up a user), we rely on db constraint (like keeping the email column unique).