Dekoparts

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

  • Business Analysis
  • DevOps services
  • QA
  • UI/UX design
  • Web Development
Dekoparts

Опис проєкту

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

Галузь: Ecommerce, Automotive
Платформи: Web
Роль: Software developer, IT consultant
Технічний стек: Vendure.io, Node.js, Nest.js, PostgreSQL, GraphQL, Elasticsearch, Angular.js, Vue.js, Postmarkapp, AWS (RDS, EC2, S3, ECS, ECR, VPC, ELB), Hetzner Cloud

Введення проблеми

Клієнт звернувся до нас зі старим веб-сайтом, який все ще функціонував як онлайн-магазин великого дистриб'ютора, що продавав автозапчастини партнерам напряму з азіатських та європейських фабрик. Веб-сайт базувався на власному рішенні, яке включало дві великі бази даних MS SQL, сервери MS та MEM. Оновлення продуктів на сайті припинилися через втрату ліцензійного ключа внаслідок збою системи, і відновити доступ було неможливо через застаріле програмне забезпечення без підтримки. Початковою вимогою було, щоб ми, принаймні, врятували існуючі дані: взломати базу даних, отримати віддалений доступ для реплікації, оновити репліку новими даними і підключити до існуючого рішення електронної комерції, щоб уникнути збоїв бізнесу. Все-або-нічого план: якщо нам вдасться, ми зможемо продовжувати оновлення. Нам вдалося врятувати обидві бази даних розміром 40 ГБ та 10 ГБ, оновити їх новими надходженнями і підключити до старого веб-сайту, щоб утримати бізнес на плаву. Однак бази даних були досить ненадійними, з дубльованими та пошкодженими записами, але це було прийнятною рішенням, і перша критична точка була пройдена. В базах даних містилося понад 21 млн елементів, тоді як відповідна кількість, згідно з оцінками клієнта, мала бути від 1 до 2 млн. У той же час електронний магазин був застарілим, повільним і німецькомовним. Наступною метою було швидко розробити новий електронний магазин, додати власні функції, вирішити проблеми баз даних та підготувати достатньо хмарної інфраструктури для заміни старого магазину.

Основні цілі

  • Налаштування реплік баз даних та інтеграція виробників, клієнтів та даних про продукцію для забезпечення безпечного зберігання даних незалежно від застарілого рішення.
  • Розробка нового бекенду для електронної комерції відповідно до потреб клієнта, здатного швидко замінити існуючу власну систему.
  • Надання зручного та функціонального електронного магазину з можливістю швидкого пошуку автозапчастин за унікальними кодами та додавання продуктів до кошика англійською, німецькою та корейською мовами.
  • Розробка панелі адміністратора для управління електронною комерцією шляхом швидкого та зручного управління враховуючи великий каталог та складну систему ціноутворення.
  • Налаштування відповідної хмарної інфраструктури з урахуванням потреб проекту.
Технічні виклики

Технічні виклики

Проект був великою нерозгаданою головоломкою, яку ми розглядали як окремі завдання, пріоритетизували та вирішували поетапно. Ми вибрали Vendure.io, оскільки це сучасний фреймворк для швидкого створення електронної комерції з можливістю розробки власного користувацького інтерфейсу та розширення існуючої функціональності за допомогою Node.js та GQL. Далі ми переструктурували бази даних: об'єднали їх, конвертували формат даних, виключили дублікати та пошкоджені дані, мігрували до Postgre. MVP було м'яко випущено, і стара версія тимчасово функціонувала паралельно для бета-тестування. Наступним викликом було розширення функціональності та оновлення бази даних новими даними - виробники, частини, прайс-листи, схеми знижок. Нова функціональність включала систему знижок, багатомовну підтримку, імпорт ціноутворення та автоматизацію експорту замовлень. Найважче було реплікувати систему знижок та розробляти автоматизацію прайс-листів. Однак деякі автозапчастини виробляються на різних фабриках та місцях і можуть мати повністю замінювані аналоги від інших брендів, і кожен виробник надає накопичувальні знижки, які залежать від того, скільки товару компанія закуповує регулярно. Таким чином, перед розробкою цієї функціональності ми зібрали всі вимоги, щоб бути впевненими, що ми розуміємо один одного. Щодо автоматизації імпорту, кожні 3 місяці Клієнт отримує файли з актуальними продуктами та новими цінами від постачальників. Файли містять мільйони рядків, і було необхідно розбирати ці файли за допомогою багатопоточності та черг та ефективно оновлювати каталог продукції, обробляти помилки обробки та скорочувати часи оновлення. Після введення даних каталог продукції збільшився до 10 млн унікальних частин, що спричинило серйозне зниження продуктивності. Ми провели сесії тестування навантаження, оптимізуючи бізнес-логіку, структуру бази даних, індекси, SQL-запити, API, схеми GQL, інтерфейс користувача, сценарії та інфраструктуру. Після 3 тижнів метушливої роботи ми досягли бажаних результатів. Тепер новий сайт повністю замінив застарілу версію.

Основна функціональність

  • Можливість реєстрації як існуючого партнера або реєстрація як нового партнера
  • Можливість знаходження автозапчастин за заводськими кодами за допомогою рядка пошуку та додавання їх у кошик
  • Можливість управління кількістю товарів у кошику та перегляду приблизних приблизних цін
  • Можливість відправки запитів на замовлення менеджеру та отримання партнерських знижок та найкращих пропозицій
  • Функціональність адміністратора для управління замовленнями та користувачами
  • Можливість адміністратора імпорту цінових листів та оновлення каталогу товарів, цін та знижок
Основна функціональність

Рішення

Ми розробили сучасний B2B інтернет-магазин, який замінив існуюче рішення, щоб виключити високу ймовірність відмови та довгострокові перерви в роботі. Нове рішення побудоване за допомогою сучасного електронно-комерційного фреймворку Vendure.io, Node.js, Nest.js, PostgreSQL та GraphQL. Інтерфейси користувача розроблені за допомогою Angular.js та Vue.js. Нове рішення було реалізовано без втрати даних – всі валідні та використовувані дані були ретельно збережені, відфільтровані та скопійовані на нову платформу. Ми також відновили складну логіку знижок з оригінальної платформи, автоматизували регулярний імпорт даних та розробили власні адміністративні інструменти за запитами клієнта, включаючи експорт замовлень у вказані формати. Оскільки рішення працює з великим каталогом, ми провели серію тестів на навантаження для налаштування відповідної інфраструктури з можливістю автомасштабування.

Результат

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

Давайте розвивати ваш
бізнес разом

Будь ласка, заповніть форму нижче та надішліть нам короткий опис вашого проекту. Ми зв'яжемося з вами протягом 24 годин, щоб надати безкоштовну консультацію та рухатись далі.