When to break up a monolith and when not to — service boundaries, decomposing the database, and the distributed-monolith trap.