Сорок интернет-магазинов, сорок доменов, сорок дизайнов - и одна Odoo за всеми ними. Это не фокус: Odoo умеет несколько сайтов из коробки. О чём не пишут - где именно приходит счёт за это удобство.
Что даёт один инстанс
Один каталог, один склад, один список заказов. Товар, поправленный один раз, появляется на каждой витрине, которая его продаёт, с тем же остатком, что видят остальные. Клиент, заказавший в двух магазинах, в системе один, а не два.
И одно место для выкатки. Сорок отдельных установок - это сорок обновлений, сорок бэкапов, сорок наборов доступов и сорок счетов каждый месяц. Правка в оформлении заказа пишется один раз и приезжает на все сорок одновременно.
Что у каждого сайта своё
Домен, тема, меню, языки и цены принадлежат сайту, а не инстансу. Два магазина на одной Odoo могут не иметь ничего общего внешне и продавать один и тот же товар по разной цене в разной валюте.
Содержимое тоже разделено: страницы, статьи и товары привязаны к сайту, и посетитель одной витрины не наткнётся на страницы другой. Разделение - это поле в записи, и именно поэтому оно дёшево обходится.
Где это бьёт: воркеры
Все сорок сайтов делят один пул воркеров Odoo. Воркер - это процесс, и он обслуживает один запрос за раз. Сорок витрин не получают в сорок раз больше процессов - они получают тот же пул, что и одна.
Поэтому тяжёлая страница на одном магазине - не его личная проблема. Пока воркер тратит восемь секунд на поиск по каталогу, он не отвечает остальным тридцати девяти сайтам. Умножьте на людей, которые ищут весь день, - и пул занят постоянно.
Это и была вторая причина вынести поиск из базы, а не только размер каталога: поиск, который занимал восемь секунд , держал воркеров сорока сайтов.
Odoo.sh или свой сервер
На Odoo.sh несколько сайтов работают ровно так, как должны, а масштабирование и бэкапы достаются без возни с сервером. Чего не достаётся - права запустить что-нибудь рядом с Odoo: ни своего Redis, ни своего сервиса. Всё лишнее живёт снаружи и отвечает по сети.
На своём сервере с Enterprise дополнительные сервисы стоят в одной подсети с Odoo. Меньше переходов, ниже задержки и полный контроль над тем, что там крутится, - в обмен на обязанность это крутить самому.
Когда один инстанс - неправильный ответ
Когда бизнесы на самом деле не связаны: разные юрлица, разная бухгалтерия, люди, которые не должны видеть чужие заказы. Odoo и это разделит, но настройка становится тяжёлой, а ошибка в одном правиле доступа - уже не баг, а утечка между бизнесами.
И когда один из магазинов настолько больше остальных, что ему нечего делать в общем пуле. Тогда он переезжает. Правило простое: один инстанс, пока сайты делят данные и людей, и отдельные инстансы, когда общий у них только владелец.
А если инстанс ещё не выбран, начните на шаг раньше - с цены Odoo, Salesforce, HubSpot и SAP для команды из десяти человек.
Интересно, как те же системы ведут себя изо дня в день? Odoo в эксплуатации: что держит, что ломается, чего нет в документации.