Dark matter force: prefer ACID over BASE
System operations are best implemented as ACID transactions. That’s because ACID transactions are simple and familiar programming model. The challenge, however, is that ACID transactions don’t work well across service boundaries. All participating services and their databases must, for example, support 2PC, which limits your choice of technologies and reduces availability since all participants must be available to commit the distributed transaction. Consequently, an operation that spans services must use eventually consistent (BASE) transactions (e.g. Sagas), which are more complicated than ACID transactions. As a result, the desire to implement an operation using an ACID transaction acts as an attractive force between the operation’s subdomains.