Workspace Digital Awards 2025 — престижнейшая международная премия в сфере диджитал. Принять участие!
#Сайт под ключ

Aizel

212 
KapDEV
KapDEV Россия, Москва
Поделиться:
Клиент

NDA

Сфера

Электронная коммерция

Регион

Россия

Сдано

Апрель 2023

Задача

Aizel - это концепт-стор современной брендовой и дизайнерской одежды. Для экспансии на зарубежный рынок компания решила разработать сайт на платформе Shopify, для которого мы разработали интеграцию с уже имеющей системой складского учёта.

Перед нами стояла амбициозная цель - связать две независимые системы, одна из которой находится в руках вендора, чтобы они синхронизировались друг с другом и покупка, добавление, изменение товаров в одном сервисе отражались на другом сайте.

На момент проведения работ не существовало готового решения для синхронизации товаров между двумя системами.

Нам предстояло разработать полностью кастомное решение.

Помимо прочего, задача при детальном рассмотрении не была такой простой как может показаться на первый взгляд. Нам пришлось преодолеть ограничения Shopify на количество запросов в секунду, возможные коллизии при одновременных изменениях в двух системах, а также организовать стабильную систему с высоким аптаймом. Критические баги в основной части системы интернет-магазина могли сильно повлиять на репутацию и доход компании.

Решение

— Ограничения Shopify и стабильность

Во-первых, всю обработку веб-хуков мы выводили в отдельные потоки и моментально отдавали 200-ый ответ. Во-вторых, мы формировали очередь запросов на обработку, которая хранилась в базе данных.

Таким образом мы избавлялись от таймаутов, когда нам нужно было долго обрабатывать запросы, например, из-за ретраев, а при возникновении ошибок не теряли данные запросов и могли восстановить их обработку из очереди.

— Транзакционность

Нам было крайне важно обеспечить корректность отображаемых данных в разных системах. Мы старались придерживаться принципов ACID, но всё осложнялось тем, что у нас не было возможности изменять код систем, которые непосредственно вносили изменения в базы данных.

—  Несмотря на это, мы смогли обеспечить актуальность данных следующим образом:

1. Atomicity

На каждое действие мы формировали и сохраняли roll-back последовательности. Это включало в себя и http запросы к Shopify или ERP и откаты локальной базы данных коннектора.

2. Consistency

Нетривиальными алгоритмами обеспечивали целостность базы данных. Не только проверяли банальности вроде невозможности вставить отрицательное значение в поле количества товара, но и в общем обеспечили возможность отменять невозможные заказы, например, когда в одной системе товар уже закончился, а в другой эти изменения ещё не появились.

3. Isolation & Durability

Изолированность и надёжность обеспечили при помощи очередей, алгоритм которых был описан выше. Тут, конечно, полноценной имплементации подходов не получилось, так как, например, в системах было доступно то же самое "грязное чтение", но в рамках технических ограничений, это лучшее, чего мы могли достичь.

— Прочие компоненты системы

Остальные части системы были достаточно тривиальными - API для CRUD операций, front-end админ панели и прочий типовой функционал, который было достаточно просто интегрировать с интерфейсами взаимодействия Shopify и Aizel.

Результат

В итоге, несмотря на значительные технические ограничения, с которыми нам пришлось столкнуться, мы реализовали полностью автоматизированную систему синхронизации двух систем, что позволило интегрировать в бизнес Aizel ещё дополнительный канал продаж без необходимости привлечения дополнительных сотрудников для контроля учёта в системе.


Стек технологий

  • Python Python Язык программирования
  • Flask Flask Фреймворк/библиотека

Над проектом работали:


Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.
оставить заявку

Хотите заказать похожий проект?

KapDEV с удовольствием обсудит вашу задачу

Оставить заявку