3 ms·
Problems are typically older than solutions, yes. And it's simple to concede that monoliths need to be split sometimes. It's much harder in practice to do so.
by humanrebar 6y ago
Problems are typically older than solutions, yes.
And it's simple to concede that monoliths need to be split sometimes. It's much harder in practice to do so. Most monoliths do not have standards, let alone enforcement mechanisms, to ensure that the design of the monoliths leave open splitting later. The things that can make that process difficult (or impossible) are many and subtle, such as global state, in process locks, interpreter protected consistency guarantees, disregard for ABI implications, etc. Having different processes (in production!) does guarantee that a snarl of those problems will not prevent splitting things up later.
- JamesBarney 6y ago> such as global state, in process locks, interpreter protected consistency guarantees, If you need to share state or you need consistency/locking/transactions across bounded contexts on one service it's trivial to implement. But this can be incredibly difficult to do correctly across multiple servers. No one has implemented a multi-phase commit over multiple services and said "dang that was easy" afterwards.