Как правильно сделать декомпозицию приложений Django?
Запустить приложение отдельно это отдельная тема, она требует большего уровня абстракции и универсальности, со всеми плюсами и минусами. Обычно приложения в проекте долнольно тесно связаны и выделить их отдельно не представляется возможным, по крайней мере без напильника, да и смысла нет. Количество приложений в проекте зависит от размера проекта и степени связанности логики. Ну логика выделения простая, хотя формализовать ее сложно. Если в приложении становиться очень много моделей и вьюх, то есть смысл подумать о выделении части в отдельные приложения. Или если приложения сразу видно, что совсем про разное, то можно сразу выделять.
Вроде простой вопрос, на который тем не менее, крайне сложно дать вразумительный ответ.Чем больше приложений в проекте, тем лучше?
нет, точно также не является лучшей практикой пихать всё в одно приложение.
Разделение на модули делается для одной простой вещи - борьба со сложностью.
Разрабатывать и поддерживать гораздо проще несколько модулей, каждый со своим функционалом и спецификой, чем один божественный апликйешен.
Самое очевидно разбиение, эт вынесение специфического функционала, напрямую не влияющего на функционирование "ядра", допустим отчёты(если вы не саму систему отчётов пишете), они находятся в отдельном апликешене, я в принципе вообще могу их отключить, и при этом основная функциональность никак не будет затронута.
Затем идёт явное логическое разделение, специфический функционал/задачи, допустим работа с адресным справочником, его периодическая синхронизация и прочее, все специфические задачи работы с ним находятся в отдельным модуле, и как они реализованы не касается остальной системы, при этом сам адресный справочник уже активно используется в остальной системе.
И самый не очевидный этап, это когда один из апликешенов становится слишком сложным, тут можно воспользоваться, как разнесением функционала по отдельным файлам внутри самого апликешена, так и попытаться разнести его по отдельным апликешенам — собственно хорошо спроектированная система где это не придётся делать.