Чем монолит отличается от модульного монолита и микросервисов и с чего начинать новый проект?
Разница не в объёме кода, а в границе развёртывания. Монолит — одна единица выката, вызов между частями это обычный вызов функции, транзакция одна. Модульный монолит — тот же процесс, но код разбит на модули с явными контрактами, и в чужие таблицы никто не лезет. Микросервисы — отдельные процессы со своими базами и своим релизным циклом; вызов между ними идёт по сети, а значит может подвиснуть, повториться и вернуть частичный результат. Микросервисы покупают независимость выката и масштабирования ценой распределённости: компенсации вместо транзакций, трассировка вместо стека вызовов, эксплуатация каждого сервиса отдельно. Начинать почти всегда стоит с модульного монолита и выносить куски под конкретный повод — другой профиль нагрузки, независимый релиз, изоляция данных.