Skip to Content

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

Нотатки з живих систем - шестизначний каталог, сорок вітрин, оновлення на справжніх даних.
12 вересня 2026 р. від

Огляди 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 мовчки ігнорується: модуль ставиться, у лозі чисто, а обмеження в базі немає взагалі. Дублікати приходять потім і тихо. Скрипт, доданий у бандл фронтенда, може не спрацювати жодного разу: він потрапляє в лінивий бандл, який приїздить уже після 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: у що обходиться команда з десяти осіб
Прайси із сайтів вендорів, помножені на десять осіб і три роки.