Розробка B2C порталу: де ламається шлях покупця
Каталог, який впевнено витримував десяток одночасних відвідувачів, ламається в перший день розпродажу. Під піковим навантаженням на каталог сторінка категорії збирається з десятка запитів, кеш перестає влучати, час відповіді зростає — покупець іде раніше, ніж побачить ціну.
Фільтри додають другу проблему: пошуковий індекс (наприклад, Elasticsearch) оновлюється рідше, ніж змінюється наявність, тому частину товарів не знайти, а частина знаходиться там, де їх уже немає.
Паралельно накопичується розсинхрон залишків між складом, каталогом і оформленням: портал обіцяє відвантаження, а на складі позиції не залишилося.
Кошик — окреме вузьке місце: якщо він живе лише в сесії, то після перезапуску застосунку або переходу на інший пристрій покупець повертається до порожнього списку. Саме так з’являється покинутий кошик, який листом уже не повернути: склад замовлення ніде не збережено.
Найдорожче — вузьке місце в оформленні замовлення. Поки облікова система відповідає, замовлення створюється; щойно вона сповільнюється або йде на оновлення, оплата проходить, а замовлення не фіксується, і розбиратися доводиться вручну.
Розробка B2C порталу в такому вигляді не масштабується — кожна ділянка шляху покупця потребує окремого рішення, і розбираємо, як це закривається.
Що дає керований портал: швидкість, стабільність, охоплення
Швидкість випуску розділів і акцій
Новий розділ каталогу або сезонна акція — це не переписування вітрини, а зміна конфігурації: структура сторінок, шаблони карток і правила виведення товарів описані декларативно.
Тому строк виведення нового розділу обчислюється днями, а не тижнями — команда додає схему в панелі керування, прив’язує її до каталогу й викочує на робочий контур тим самим регламентом, що й звичайний реліз.
Промо-добірки та блоки на головній збираються з уже наявних сутностей, тому маркетинг запускає кампанію, не чекаючи розробників, а відкат правки залишається операцією, а не окремим релізом.
Поведінка вітрини за пікового трафіку
Пік настає від розсилки, розпродажу або згадки в блогера — вітрина тримається не завдяки «потужнішому серверу», а завдяки розділенню контурів. Важкі вибірки каталогу та фільтри віддаються з кешу, кошик і оформлення замовлення живуть окремо й не конкурують за ресурси з лістингом.
Під навантаженням першим деградує другорядне — рекомендації, блоки «дивилися також», — а шлях до оплати залишається доступним, тому частка успішних замовлень не просідає разом із піком.
Час відновлення після збою визначається не героїзмом, а підготовкою: збір метрик за ключовими сценаріями, оповіщення на аномалії, чергування та швидкий відкат на попередню збірку. Помилка релізу знімається за хвилини, а не перетворюється на нічний розбір причин.
Стабільність вітрини напряму впливає на повторні покупки: клієнт, який не втратив кошик і дійшов до оплати, повертається. Звернення «замовлення не пройшло» переходять із регулярних в одиничні — і це видно за часткою повторних покупок у загальному виторгу.
Вітрина на готовому рішенні, збірка з нуля або гібрид
Вітрину B2C-порталу збирають трьома способами: на готовій платформі, власною збіркою або гібридною схемою, де вітрину винесено окремо від ядра.
Вибір визначає не зовнішній вигляд, а обсяг логіки — каталог, кошик, персоналізація — яку доведеться описувати самим і потім супроводжувати.
Готова платформа: швидкий старт і межі
Каталог, кошик, оформлення замовлення та панель керування вже є — команда виводить вітрину й підключає оплату та доставку.
Обмеження готових рішень проявляються пізніше: нестандартна персоналізація, власні правила знижок і обмін з обліковою системою впираються в рамки розширень платформи, а не в код. Кожне оновлення ядра доводиться перевіряти на сумісність із доопрацюваннями.
Власна збірка: свобода і ціна підтримки
Тут вітрина й ядро пишуться під задачу: будь-які сценарії добору товару, персоналізації та розрахунку доставки реалізуються напряму.
Зворотний бік — вартість підтримки вітрини: оновлення безпеки, поведінка під навантаженням у дні розпродажів, інтеграції та моніторинг залишаються на команді постійно.
| Варіант | Коли підходить | Обмеження |
|---|---|---|
| Готова платформа | Швидкий запуск із типовим асортиментом і сценаріями покупки | Персоналізація та правила розрахунків — у межах розширень платформи |
| Власна збірка | Нестандартна логіка каталогу, кошика й ціноутворення | Довше до запуску, супровід цілком на команді |
| Гібридна схема | Ядро й облікова система залишаються, вітрину оновлюють окремо | Потрібні стабільні інтерфейси обміну та контроль версій |
Далі розбираємо, як під кожен варіант влаштовані каталог, кошик і персоналізація.
Порядок робіт: від аудиту сценаріїв до передачі команді
Порядок робіт вибудувано так, щоб каталог, кошик і персоналізація не розійшлися на стиках інтеграцій. Кожен етап завершується перевірюваним артефактом, який переходить у наступний крок, — тому невідповідності у схемі даних видно до збірки вітрини, а не на прогоні перед запуском.
Аудит сценаріїв і схеми даних
Починаємо з розбору реальних шляхів покупця й поточних даних: які атрибути товару беруть участь у фільтрах, що тягне персоналізація, де кошик втрачає позиції. Далі фіксуємо схему й ідемо за кроками.
- Аудит користувацьких сценаріїв і схеми даних — карта переходів, список сутностей каталогу, замовлення й профілю, вузькі місця пошуку та фільтрації.
- Проєктування каталогу й моделі замовлення — структура категорій і атрибутів, правила зв’язків, версіонування цін і залишків.
- Збірка вітрини й кошика — клієнтська та серверна частини, стан кошика, сценарії персоналізації й рекомендацій.
- Налаштування оплати й доставки — платіжні сценарії з поверненнями та частковими списаннями, розрахунок доставки, обробка відмов провайдера.
- Навантажувальна перевірка вітрини — прогін пікових сценаріїв розпродажу, поведінка кешу, деградація під чергами замовлень.
- Передача документації й навчання — схеми даних, регламенти викладки, розбір типових інцидентів із командою замовника.
Після передачі команда замовника сама викладає зміни каталогу, а ми залишаємося на підтримці за узгодженим регламентом.
Каталог, кошик, кабінет: що залишається після здачі
Здача проєкту — це не «код на сервері». Після запуску у вас залишається робочий контур, який інша команда може підняти, оновити й супроводити без читання листування. Тому документацію ми збираємо під час робіт, а не відновлюємо в останній тиждень.
Що входить у комплект документації
- Конфігурації оточень. Набори змінних і секретів для стенду розробки, приймального та робочого контуру, з описом відмінностей. Новий стенд піднімається за інструкцією за один прохід, а не методом проб.
- Схема інтеграцій. Напрямок запитів, формати обміну та поведінка за недоступності зовнішньої системи: обліковий контур із товарами, залишками й цінами, платежі, доставка, повідомлення. За схемою видно, де кешується відповідь і що відбувається при відмові — це перше, що дивляться під час розбору інциденту.
- Політики доступу та ролі. Матриця «роль → розділ → дія» для адміністратора, оператора каталогу, контент-менеджера й служби підтримки, плюс журнал значущих дій. Видно, хто змінював ціну або статус замовлення.
- Регламент випуску оновлень. Розгалуження, обов’язкове рев’ю, автоматичні перевірки на кожен набір змін, порядок викочування та відкат на попередній реліз. Випуск перестає залежати від однієї людини.
- Інструкція для контент-менеджера. Як завести товар, оновити ціни й залишки, зібрати добірку на головній, підготувати зображення та що робити з дублями. Правки в каталозі робляться без звернень у розробку.
- Порядок чергування та розбір відмов. Які сигнали вважаються критичними, що перевіряти в першу чергу, де дивитися логи й як відкотити зміну.
- Документація щодо даних. Схема зберігання, порядок міграцій, розклад резервних копій і перевірений сценарій відновлення — не «бекап є», а «відновлення відпрацьовано».
Комплект живе в тому самому репозиторії, що й продукт, і оновлюється разом із кодом. Опишіть задачу — повернемося з оцінкою та планом, включно зі складом документації під ваш контур.
Кейс: як скоротили відмови вітрини в пікові розпродажі
Клієнт — роздрібний B2C-портал: каталог на кілька десятків тисяч позицій, кошик, персональні добірки й оплата в один крок.
У звичайні дні вітрина відповідала рівно, але на старті розпродажу трафік зростав у сім разів і система починала розвалюватися ланцюжком: каталог віддавав сторінку 2,4 секунди й довше, частина запитів завершувалася помилкою, кошик втрачав позиції при перемиканні між пристроями, а платіжний крок відвалювався частіше за інші.
Розібрали вузькі місця за вимірами, а не за відчуттями. Важкі фасетні фільтри винесли в попередній розрахунок, каталожні сторінки почали кешуватися з прогрівом перед акцією, кошик і сесії переїхали в спільне сховище — стан перестав залежати від конкретного сервера.
Платіжний крок зробили ідемпотентним: повторний запит не створює друге замовлення, а невдалі спроби йдуть у чергу повторів. Профіль навантаження перед кожною акцією тепер відтворюється на стенді.
Метрики до і після
| Метрика | До | Після |
|---|---|---|
| Час відповіді каталогу, 95-й процентиль | 2,4 с | 0,4 с |
| Частка відмов вітрини в пік | 8% | 0,3% |
| Частка відмов на кроці оплати | 12% | 1,8% |
| Кошики, що дійшли до оформлення | 61% | 78% |
| Замовлення за добу піку | базовий рівень | +34% |
Кеш і черга повторів тримають пік без ручного втручання чергового: розпродаж проходить на штатному складі інфраструктури, а інцидентів рівня «вітрина недоступна» за сезон не було.
Окремий ефект — відкат: якщо реліз перед акцією поводиться нештатно, повернення на попередню збірку займає хвилини й не потребує відновлення даних.
Чим відрізняється персоналізована вітрина від типового магазину?
Типовий інтернет-магазин показує всім одну й ту саму вітрину: порядок блоків на головній і добірки товарів задані в шаблоні й однакові для будь-якого відвідувача.
Персоналізація вітрини починається там, де склад і порядок товарів рахує система за даними про поведінку, а не менеджер вручну. Різниця не в оформленні, а в тому, хто ухвалює рішення про показ: код із жорсткими правилами чи модель, що працює із сегментами.
Сегментація покупців спирається на спостережувані ознаки — перше відвідування, повторні замовлення, покинутий кошик, інтерес до конкретної категорії, історія покупок у пов’язаній обліковій системі.
Рекомендації товарів будуються на спільних покупках і переглядах, а не лише на ручних списках «схожі». Той самий каталог віддає різний перший екран новачку, постійному покупцю й тому, хто обирає подарунок.
Керування блоками головної виноситься в окремий інтерфейс: маркетолог збирає варіант сторінки з готових блоків, призначає сегмент, період показу та пріоритет, публікує без участі розробників.
Технічно це конфігурація з версіонуванням — невдалий варіант відкочується за хвилини, а не через релізний цикл.
Обмеження — якість вихідних даних. Якщо в картках довільно заповнені властивості, категорії та сумісність, ні ручні добірки, ні зовнішній сервіс рекомендацій на кшталт Algolia не дадуть релевантної видачі.
Тому персоналізована вітрина починається з розмітки каталогу та наскрізного зв’язку поведінки із замовленнями, а вже потім — із логіки добору.
Сумніви щодо каталогу, оплати й обміну з обліковою системою
До старту обговорюють не строки, а поведінку системи в незручних сценаріях: що буде з каталогом на десятки тисяч позицій, що побачить покупець за недоступної облікової системи й хто відповідає за стик, коли він відвалюється.
Нижче — відповіді на те, що найчастіше піднімаємо до підписання плану. Формат один: спочатку розбираємо ризик, потім домовляємося, як його закриваємо.
Як переноситься каталог та історія замовлень?
Каталог вивантажуємо в проміжне сховище, зіставляємо позиції за артикулом і зв’язками категорій, проганяємо звірку за кількістю товарів, цінами й залишками. Спочатку піднімаємо вітрину в тіньовому режимі поруч із поточною, щоб порівняти вибірки вручну.
Історія замовлень переноситься зі зв’язками з профілями покупців — після перемикання звіряємо кількість замовлень і статусів, розходження розбираємо до відкриття трафіку.
Що покаже вітрина, якщо облікова система недоступна?
Каталог вітрина читає з власного сховища, тому картки й пошук продовжують працювати, коли облікова система не відповідає. Оформлені замовлення йдуть у чергу й передаються далі, щойно зв’язок повертається.
На екрані підтвердження покупець бачить чесний статус — «замовлення прийнято в обробку», а не «оплачено й відвантажено». Так ми не втрачаємо замовлення й не обіцяємо те, що система не підтвердила.
Чи витримає пошук каталог на десятки тисяч позицій?
Пошук працює не за базою каталогу, а за окремим пошуковим індексом, який оновлюється за подіями зміни товару. Налаштовуємо морфологію, синоніми, виправлення одруків і вагу полів: назва, категорія, характеристики.
Підказки під час введення віддають результат за частки секунди навіть на каталозі в сотні тисяч позицій, а фільтри рахуються без повного перебору.
Чи можна додати персоналізацію пізніше?
Так, вітрину й шар рекомендацій проєктуємо роздільно. Персоналізація спочатку працює на правилах — схожі товари, «з цим часто купують», нещодавно переглянуте, — а потім підключається модель на історії переглядів і замовлень. Увімкнення не потребує переписування каталогу й кошика, тому блок можна запустити другою хвилею.
Хто відповідає за стик з обліковою системою?
За інтеграцію відповідаємо ми, якщо вона на нашій стороні: описуємо формат обміну, журналюємо помилки, ставимо повтори й оповіщення про збої. Якщо облікову систему веде інший підрядник, фіксуємо протокол і точку розмежування — що віддає їхня сторона й що приймаємо ми. Спірні випадки розбираємо за журналом обміну, а не за словами.
Обговоримо задачу: що надіслати для оцінки та плану
Щоб повернутися з оцінкою проєкту вітрини та планом робіт за етапами, нам не потрібен готовий документ на сотню сторінок — достатньо опису того, як влаштований ваш бізнес і що вже працює. Чим конкретніші вихідні, тим менше припущень в оцінці й тим коротший шлях до запуску. Нижче — що допомагає зібрати її найшвидше.
- Сценарії покупця: як людина потрапляє на портал, як шукає товар, що і в якому порядку кладе в кошик, на якому кроці найчастіше покидає замовлення.
- Поточна схема: де зараз лежить каталог і як він оновлюється, що з наявного перевикористовуємо, а що замінюємо.
- Перелік інтеграцій: облікова система, платежі, доставка, обслуговування клієнтів, розсилки, аналітика — і які з них віддають дані через інтерфейс, а які лише вивантаженнями.
- Очікуване навантаження: скільки позицій у каталозі, скільки відвідувачів у звичайний день і в пік розпродажу, чи є сезонні сплески.
- Обмеження: дата запуску, прив’язана до кампанії чи сезону, вимоги до домену й оформлення, правила зберігання персональних даних.
- Передача в підтримку: плануєте свою команду експлуатації чи чекаєте супроводу від нас — від цього залежить склад документації та схема розгортання оточень.
- Відповідальний з вашого боку: хто ухвалює рішення щодо спірних місць і підтверджує приймання етапів.
Опишіть задачу в цьому обсязі — повернемося з оцінкою проєкту вітрини та планом робіт за етапами, з відповідальними й точками приймання на кожному кроці.







