Exactly this. Sometimes I will have multiple entry points (app, celery, &c.), but each process is always launched in a separate container.
It's quite simple if something communicates through shared memory, it should probably be in the same container. If it doesn't then that's NOT a reason to keep it in the the same container, but I don't see how it justifies the work of splitting it up....
Absolutely for anything that uses shared memory for IPC, but then you basically have threads pretending to be processes. ;-)