Я бы выбрал второй вариант, чтобы обеспечить долговечность приложения.
Позвольте мне объяснить это на примере:
Однажды, через год после выпуска приложения и спустя месяцы после того, как команда, которая создала исходный код, ушла, пользователь обнаруживает и сообщает об ошибке в определенном процессе. Билет, безусловно, будет выглядеть примерно так: «Этот материал не работает», который после некоторого пинг-понга по электронной почте будет выглядеть как «Я не могу сохранить заказ на несколько продуктов для австралийского клиента».
Что касается первой структуры проекта, вам необходимо выполнить поиск среди всех обработчиков запросов и событий вашего проекта, в которых содержится ошибочный код.
Во втором случае вы можете сузить область поиска в модуле сохранения заказов (или, в зависимости от степени детализации структуры, в модуле «Сохранение заказов за рубежом / в нескольких странах»).
Это может сэкономить много времени и облегчить маневренность IMO.