Skip to Content

Odoo в експлуатації: що тримає, що ламається, чого немає в документації

Нотатки з живих систем - шестизначний каталог, сорок вітрин, оновлення на справжніх даних.
12 вересня 2026 р. від
Odoo в експлуатації: що тримає, що ламається, чого немає в документації

Огляди Odoo пишуть або ті, хто її продає, або ті, хто відкрив демо на двадцять хвилин. Цей - ні те, ні інше. Нижче - цифри з систем, які працюють щодня: магазин із шестизначним каталогом, сорок вітрин в одному інстансі, оновлення версій на справжніх даних. Де погано - так і написано.

Що вона тягне без запитань

Почати варто з того, що розмір - не та біда, якою його вважають. Каталог зі ста десяти тисяч товарів живе в Odoo без драм: ORM тримає, бек-офіс тримає, склад тримає. Сорок вітрин працюють на одному інстансі - одна база, один деплой, одне місце, куди накочувати правку, - і я обрав би цю схему знову, бо альтернатива - усього по сорок.

Оновлення теж трапляються. Версії з пʼятнадцятої по девʼятнадцяту в продакшені, іноді дві одразу на різних проєктах: клієнт не переїздить лише тому, що вийшов реліз. Дані оновлення переживають. Не переживає саме по собі лише ваш власний код - і це чесна ціна кастомізації, а не дефект.

Де починає спотикатися

Першим перестає масштабуватися пошук. Повнотекстовий пошук Postgres по шестизначному каталогу з фільтрами й фасетами вповільнюється так, що індексом не лікується: у найгіршій точці запит займав вісім секунд, поки з того боку прилавка чекав склад. Винесення пошуку в Elasticsearch довело це до секунди - і це переписування, а не галочка в налаштуваннях.

Друге - фронтенд. Odoo віддає сайт, який виходить із того, що ви будь-якої хвилини ввімкнете магазин, чат, форум і редактор, і за це припущення браузер платить на кожній сторінці. Навіть після того, як вирізано все, що лендингу не потрібно в принципі, на сторінку, чия робота - показати текст, приїздить пів мегабайта стиснутого JavaScript.

Скільки важить одна сторінка, у стиснутому виглядіodoo-dev.org, Odoo 19, лендинг без магазину - уже після чистки бандлаHTML17 КБCSS115 КБJavaScript, блокувальний9 КБJavaScript, відкладений455 КБodoo-dev.org
Пів мегабайта JavaScript на сторінці, яка нічого не продає. Він відкладений, а не блокувальний, - але його все одно завантажують, розбирають і виконують.

Він відкладений, а не блокувальний, тож перший екран швидкий, якщо цим зайнятися. Але «відкладений» - не «відсутній»: його завантажать, розберуть і виконають і на телефоні зі слабким процесором. У Core Web Vitals різниця між сайтом на Odoo «як поставили» і розібраним - це різниця між червоною оцінкою і зеленою.

У що насправді обходиться оновлення

Оновлення голої Odoo - це вихідні. Оновлення Odoo з вашими модулями - це проєкт, і оцінка залежить від одного: скільки з побудованого живе в коді, який ви контролюєте. Studio й автоматизації, зібрані клацанням, - найдорожча частина: їх не можна прочитати дифом і не можна перевірити до того, як натиснуто кнопку.

Робочий порядок нудний. Кожне оновлення починається прогоном на стейджі з копією бойових даних - усієї бази, а не вибірки, бо ламається завжди на тому рядку, якого ніхто не чекав. Потім список поломок лагодиться в модулях, а не в базі. Потім той самий прогін повторюється, доки не стане нудним. І тільки після цього їде жива система.

110 000товарів в одному каталозі
40вітрин в одному інстансі
8 с → 1 спошук по каталогу

Ці три числа - розмір систем, з яких узяті нотатки. Це не рекорди: інсталяцій Odoo більших вистачає. Це той розмір, на якому налаштування за умовчанням перестають давати раду і в кожного рішення зʼявляється ціна.

Чотири речі, яких немає в документації

Є речі, які дізнаєшся, лише втративши на них день. Готовий HTML сторінки сайту кешується на годину: ви правите запис у бек-офісі, сторінка не змінюється, і ви йдете шукати помилку, якої немає. Лікується одним рядком, що скидає кеш при правці вашого вмісту, - але про сам кеш треба знати.

Обмеження, оголошене по-старому, через _sql_constraints, в Odoo 19 ігнорується: модуль ставиться, у лозі один рядок WARNING серед сотень, а обмеження в базі немає взагалі. Дублікати приходять потім і тихо. Скрипт, доданий у бандл фронтенда, може не спрацювати жодного разу: він потрапляє в лінивий бандл, який приїздить уже після DOMContentLoaded - подія, на яку чекає обробник, давно сталася.

Чотири речі ціною в день кожнаЩО ВИДНОЩО НАСПРАВДІСторінка не змінюється після правки→website.page тримає готовий HTML годинуОбмеження оголошене, і його немає→_sql_constraints ігнорується, у лозі один рядокСкрипт у бандлі й не спрацьовує→лінивий бандл приїздить після DOMContentLoadedМодуль у списку й не ставиться→модулі Enterprise видно в Community заглушкамиodoo-dev.org
Жодної з чотирьох немає в документації. Кожна вперше коштує дня.

А модуль може бути в списку, описаний у документації - і не ставитися: модулі Enterprise видно в Community заглушками, позначеними як недоступні. Appointments - один із них, тому сторінка запису на цьому сайті зроблена власним модулем, а не ввімкнена галочкою.

Підтримка і те, що її замінює

Підтримка - те, що я змінив би першим. Коли проблема на боці Odoo, ви чекаєте - і чекаєте з доказами: логи, заміри, одне й те саме питання, поставлене тричі. На одному проєкті обмеження платформи місяцями віддавало Googlebot 429-ті, магазини випадали з індексу, і знадобилося три кола, щоб ліміти підняли. Ця історія розібрана докладніше окремо, і це найчесніша претензія до Odoo, яка є.

Той самий рік рятує інший край тієї ж системи: архітектуру не треба погоджувати ні з ким. Пошук поїхав у Elasticsearch, бо я так вирішив. Фронтенд тонкий, бо я його розібрав. Сторінка запису існує, бо модуль написано за вечір. У закритій системі кожне з цих рішень - тикет; тут - коміт.

Кому підходить, а кому ні

Odoo вам підходить, якщо потрібна одна система на всю компанію і є людина, яка пише код, або її можна найняти. Підходить погано, якщо хочеться, щоб усе працювало з коробки і до цього ніколи не торкалися: відкрита платформа дає не це. Консолідована звітність по десятку юросіб, сертифіковані галузеві вертикалі, тендер із вимогою вендора з квадранта Gartner - не її бої.

Якщо ви обираєте саме зараз, корисний не ще один огляд. Корисні пів години з вашим екраном і вашими числами: що гальмує, що застрягло, у що обійдеться це змінити. Ці пів години безкоштовні, і наприкінці я чесно скажу, чи це моє завдання.

Обираєте не лише систему, а й того, хто з нею працюватиме? Партнер Odoo чи незалежний розробник: у чому різниця насправді.

Odoo, Salesforce, HubSpot, SAP: у що обходиться команда з десяти осіб
Прайси із сайтів вендорів, помножені на десять осіб і три роки.