Kontakt
Оптимізація продуктивності Magento для роздрібного продавця побутової електроніки №1 у Кавказькому регіоні. Сторінки завантажуються в 5–6 разів швидше, час переіндексації з 60 хвилин до 7.
Лют 2024 - дотепер
Як пришвидшити Magento в 5–6 разів та скоротити переіндексацію з 60 до 7 хвилин для Kontakt — рітейлера №1 електроніки на Кавказі.
5–6x швидше
вантажаться сторінки
0.5–0.7с видача сторінки
з теплим кешем
Kontakt — провідний рітейлер споживчої електроніки, побутової техніки та меблів у Кавказькому регіоні: понад 50 магазинів у Азербайджані, 4 у Грузії та партнерства з більш ніж 100 міжнародними брендами. Команда Kontakt шукала нового eCommerce-партнера з досвідом роботи з лідерами ринку та технічною експертизою, потрібною для подальшого зростання. Ми почали з код-аудиту, оптимізували фундамент і продовжуємо співпрацювати з командою Kontakt у міру того, як їхня платформа розвивається.
Про проєкт
Kontakt — найбільша eCommerce-платформа Кавказького регіону. Бренд об'єднує під одним дахом споживчу електроніку, побутову техніку, меблі та аксесуари для дому — понад 50 магазинів у Азербайджані, 4 магазини в Грузії та довготривалі партнерства з понад 100 міжнародними брендами.
Масштаб цього лідерства видно й у даних трафіку. У квітні 2026 року kontakt.az отримав 1,36 млн візитів на місяць, посідаючи 26-те місце серед усіх вебсайтів Азербайджану та більш ніж удвічі випереджаючи найближчого прямого конкурента в сегменті ритейлу електроніки (SimilarWeb). Аудиторія переважно мобільна (86,82%), при цьому органічний пошук генерує 43,49% трафіку, а прямі переходи — ще 20,85%. Це сильні сигнали впізнаваності бренду та того, що клієнти повертаються.
Бути лідером важче, ніж бути претендентом. Лідер задає планку — за асортиментом, цінами, швидкістю, наявністю. Утримання позиції №1 потребує непропорційно великих, постійних інвестицій у глибину каталогу, інфраструктуру та клієнтський досвід. На вершині не можна просто пливти за течією.
Компанія керує двома окремими eCommerce-проєктами — kontakt.az для азербайджанського ринку та kontakt.ge для Грузії. Хоча категорії товарів перетинаються, ринки різні. CEO Kontakt Home Радік Асгарлі, який очолив вихід бренду в Грузію у 2021 році, відверто розповідав про це у Forbes Georgia — зазначаючи, що «Азербайджан і Грузія суттєво відрізняються за культурою та стилем ведення бізнесу», і що Kontakt Home свідомо не копіював азербайджанську модель у Грузії. Грузинська команда побудувала власну стратегію — від формування команди до комерційної пропозиції, зокрема безпроцентної розстрочки без участі банку, яка вирізняє kontakt.ge на місцевому ринку.
Ця комерційна реальність відображена й технічно. Kontakt.az та kontakt.ge — це повністю окремі проєкти: окремі інсталяції Magento, окрема інфраструктура, окремий менеджмент. На Kontakt.az ведеться близько 75 000 товарів, на Kontakt.ge — ще близько 15 000.
Обидва магазини працюють на Magento Open Source у монолітній архітектурі.
Виклик
Бриф від Kontakt полягав у тому, щоб знайти партнера, який зможе відповідати операційному темпу лідера ринку та довести технічний фундамент до стану, потрібного для наступної фази зростання. З часом кодова база розійшлася з актуальними версіями Magento. До того ж було встановлено багато модулів, а більше коду означає більше площі для конфліктів, складніших оновлень і повільніших релізів. Декілька комерційних розширень дублювали функціонал, який новіші версії Magento обробляють нативно.
Для лідера ринку, який обробляє сотні замовлень на день, більшість із них від мобільної аудиторії, що приходить через органічний пошук це мало реальні наслідки:
- Сторінки завантажувались повільно, що погіршувало конверсію, користувацький досвід та SEO
- Імпорт товарів займав години, блокуючи своєчасні оновлення каталогу
- Переіндексація тривала 40–60 хвилин, і протягом цього часу магазин не міг надійно віддавати актуальний контент — знову ж таки, поганий користувацький досвід
- Дедлоки бази даних під час імпортів спричиняли регулярні збої, що вимагало ручного втручання
- Розростання модулів ускладнювало безпечне розширення кодової бази, а кожна зміна несла ризик конфліктів між розширеннями Бриф був чітким: взяти на себе технічну сторону, привести магазин до стану, який відповідає його позиції за продуктивністю, і підготувати чистий фундамент для наступного кроку.
Що ми зробили
Спочатку код-аудит
Перш ніж щось чіпати, ми провели повний код-аудит Magento. Це дало нам і клієнту спільну, чесну картину кодової бази: які модулі стабільні, які надлишкові, де сконцентрований технічний борг і де найбільші можливості для покращення. Кожна подальша оптимізація випливала з цього аудиту.
Чистка модулів та узгодження версій
Ми оновили кожен модуль Magento до актуальної, підтримуваної версії та прибрали платні розширення там, де нативний функціонал Magento вже закривав потребу. Це не було скороченням витрат — це було рішенням про стабільність. Кожен комерційний модуль — це ще одна залежність при оновленні, ще один договір підтримки і ще одна потенційна точка відмови на Чорну п'ятницю. Там, де базової поведінки Magento було достатньо, ми використовували саме її.
Оптимізація продуктивності по всьому стеку
Ми перебудували залежності, які визначали, наскільки швидко віддається сторінка:
- З теплим кешем сторінки товарів та категорій тепер віддаються за 0,5–0,7 секунди
- З холодним кешем, залежно від сторінки, час відгуку становить 2–5 секунд — рівень, який ми очікуємо знизити ще більше з продовженням роботи
- В обох магазинах час відгуку сторінок покращився в 5–6 разів порівняно з початковим станом
Оптимізація переіндексації
Час переіндексації скоротився з 40–60 хвилин до приблизно 7 хвилин. Для каталогу на 75 000 SKU з частими змінами цін та залишків це різниця між магазином, який відображає реальність, і магазином, який від реальності відстає.
Оптимізація імпорту товарів та цін
Імпорти — завантаження вихідного файлу, парсинг, валідація, імпорт, переіндексація — були перебудовані на базі стандартного механізму імпорту Magento з точковими оптимізаціями:
- Імпорт товарів: з 2 годин до 1 години для повного оновлення каталогу
- Імпорт цін: з 30 хвилин до 15 хвилин
- Кастомна система повторних спроб поверх стандартного імпортера, щоб обробляти дедлоки бази даних, які раніше були постійною проблемою (база працює під високим конкурентним навантаженням — ми трактуємо поодинокі дедлоки як очікувані й автоматично відновлюємось, замість того щоб провалювати весь імпорт)
Мультиджерельний пошук
Клієнти шукають не лише товари. Вони шукають категорії, бренди, статті довідки, акційні лендинги. Зараз Kontakt працює на архітектурі мультиджерельного пошуку, яка повертає збіги по всіх цих типах в одній видачі — товари, категорії, CMS-сторінки, підказки — з релевантністю та ранжуванням, налаштованими під те, як клієнти Kontakt реально шукають.
Наступний розділ: headless вітрина
Тепер, коли фундамент стабільний і шари каталогу та імпортів працюють у строк, Kontakt переходить до наступного розділу — headless вітрини. Робота з оптимізації, виконана до цього, була передумовою: нова архітектура потребує чистого, швидкого бекенду Magento знизу. Ми зараз працюємо з командою Kontakt над цією побудовою на обох доменах — .az та .ge.
Покращення процесів
Окрім коду, ми підтягнули й те, як виконується сама робота, — структуру задач, девелопмент-флоу, тестування, релізи. Для магазину розміру та складності Kontakt передбачуваність доставки важить так само, як і сирий інженерний вихід.
Результати
Головні цифри з фази переходу та оптимізації:
| Метрика | До | Після |
|---|---|---|
| Час відгуку сторінки (теплий кеш) | 3–4 с | 0,5–0,7 с |
| Час відгуку сторінки (холодний кеш) | 10+ с | 2–5 с |
| Час переіндексації | 40–60 хв | ~7 хв |
| Імпорт товарів (повний каталог, ~75 тис. SKU) | 2 години | 1 година |
| Імпорт цін | 30 хв | 15 хв |
| Надійність імпорту | Часті ручні повторні спроби | Автоматичні повтори при дедлоках |
Сам по собі обсяг замовлень — не правильна метрика для оцінки такої роботи. Kontakt — домінуючий рітейлер на своєму ринку, і там немає прихованої 5-кратної можливості зростання, яку міг би розкрити швидший час завантаження. Те, що швидші сторінки, чистіші імпорти та надійна переіндексація дають лідеру ринку, — це дещо інше: стабільність під навантаженням (Чорна п'ятниця, вихідні після зарплат, запуски нових продуктів), операційна ефективність (оновлення каталогу, які відбуваються вчасно, а не коли імпорти нарешті завершуються) і запас на те, що буде далі (headless вітрина потребує чистого, швидкого бекенду — цей фундамент тепер на місці).
