I had huge success writing a trading system where everything went through the same `on_event(Inputs) -> Outputs` function of the core and a thin shell was translating everything to inputs and the outputs to actions. I actually had a handful of these components communicating via message passing.
This worked rather well as most of the input is async messages anyway, but building anything else this way feels very tiresome.
I think I read here on hackernews that the Mona Lisa doesn't look at all like it did when it was freshly made. If I look at the restored copy https://en.wikipedia.org/wiki/Mona_Lisa_(Prado)#, I at least find the silk very nice.
> DDD is against the idea of having a single unified model; instead it divides a large system into bounded contexts, each of which have their own model.
If you have a large system it makes sense to divide it into smaller independent pieces. If you have a (micro)-service architecture you have distinct services, in a monolith you might have modules.
It is a hard problem to know where exactly the boundaries between services or modules should be, in any case DDD calls the things that make sense to decouple bounded contexts.