The plain truth is, not that many projects really need complex distribution mechanisms. Most apps look a lot like this:
- Read data from a store (db, files, etc)
- Modify data
- Dump data back to the store
I think we have gotten too far away from this wisdom. The typical database has distribution and coordination built in. That means for the most part you get to write your application in isolation. The database also to serves to coordinate the application's own actions.
We need to get back to the future and look at how to simplify coordination and not just message passing. Databases are a coordination mechanism for one or more applications, and one mechanism is better than two.