PultrackБлог
RU
Что происходит при синхронизации? Критический момент, который определяет судьбу автономной кассы

Что происходит при синхронизации? Критический момент, который определяет судьбу автономной кассы

КороткоАрхитектура автономной кассы хорошо известна, но для небольшого магазина самый рискованный момент наступает не когда падает интернет — а когда он восстанавливается. Разрешение конфликтов, дублирование продаж и несоответствия в товарах при синхронизации требуют не меньше внимания, чем сама возможность работать автономно.

Мы разработали Pultrack — кассу и приложение для управления товарами для небольших розничных магазинов, работающих с двумя валютами и в автономном режиме. Поэтому мы много думаем не только о том, работает ли система без интернета, но и о том, что происходит в момент переподключения. На второй вопрос обращают гораздо меньше внимания, чем он заслуживает.

Почему все вдруг говорят об автономных системах?

Недавние описания архитектуры касс приводят к одному выводу: подключение должно рассматриваться как слой синхронизации, а не как зависимость. Локальное хранилище, очередь записей и автоматическое согласование при возврате сети становятся стандартным подходом, а не дополнительной функцией.[1] Для магазинов на рынках с перебоями электричества и интернета это важно, потому что продажи не могут просто остановиться при разрыве соединения.[2] Часто встречается различие между «способностью работать без сети» — деградированным режимом отката — и «автономным режимом в приоритете», где локальное устройство является основным источником данных, а облако второстепенным.[3] Это не просто теория. Касса, которая только переносит отключение, может заблокировать скидки, скрыть часть каталога или отказать в печати чека при потере сигнала. Истинный дизайн с автономной архитектурой держит правила цен, количество товаров и печать чеков полностью на локальном устройстве, поэтому продавец никогда не заметит разницы между днем хорошей и плохой связи.[4]

Что происходит в момент восстановления соединения?

Это та часть, о которой поставщики говорят реже всего, и именно она определяет, работает ли автономная система в повседневной жизни. Когда телефон или касса переподключается после часов или дней автономной работы, она должна согласовать очередь локальных транзакций с тем, что произошло на других устройствах или в облаке. Хорошо спроектированные системы используют идемпотентные API, чтобы продажа, случайно отправленная дважды, не была записана два раза. Они применяют правила разрешения конфликтов, например когда два сотрудника продали последний товар с двух разных касс, прежде чем одна система увидела обновление другой.[5] Для небольшого магазина это не теоретический сценарий. Представьте киоск с одним планшетом с Wi-Fi и одним телефоном, используемым как резервная касса во время отключения электричества. Если обе системы регистрируют продажи одного товара в автономном режиме, то перепродажа неизбежна — единственный вопрос в том, обнаружит ли система это при синхронизации или молча перепишет одну регистрацию товара другой.[6] Опыт, полученный при создании таких систем, подчеркивает важность расставления приоритетов для одних операций (например, завершения напечатанного чека) над другими и проектирования очереди синхронизации так, чтобы критические записи не были потеряны или переупорядочены неправильно.

Означает ли «автономный режим» что магазин работает ровно как в онлайне?

В принципе да — в этом обещание. Автономный режим, описываемый в современной литературе о продуктах, должен быть полноценным для ведения бизнеса, а не урезанным режимом на экстренный случай: полный доступ к каталогу, правила цен и скидок, печать чеков и обновление товаров должны работать локально.[3] На практике полнота этого автономного режима сильно различается между поставщиками и в зависимости от того, что на самом деле означает «обновление товаров» под капотом. Перед тем как предположить, что система действительно работает независимо на уровне магазина, стоит задать несколько вопросов:

  • Поддерживает ли автономный режим ваш полный прайс-лист и правила скидок или только кэшированное подмножество?
  • Может ли система напечатать действительный чек без интернета, включая любые необходимые налоговые поля?
  • Что происходит с количеством товаров на двух устройствах, которые отошли в автономный режим одновременно?
  • Есть ли видимый журнал или уведомление при разрешении конфликта во время синхронизации или это происходит молча?
  • Может ли продавец увидеть какие продажи «ожидают синхронизации» а какие подтверждены, чтобы понять, являются ли их книги предварительными?
Некоторые системы действительно спроектированы для независимой работы магазина — кухонные принтеры, биллинг и товары ведутся локально как сознательный выбор дизайна, а не как запоздалая мысль.[2] Но фраза «автономный режим» используется в маркетинге достаточно свободно, поэтому стоит проверить эти детали, а не просто верить ярлычку.

Почему это особенно важно на развивающихся рынках?

На рынках с частыми отключениями момент синхронизации происходит намного чаще, чем на рынке со стабильным широкополосным интернетом. Магазин, который теряет соединение на два часа каждый день, сталкивается не с граничным случаем раз в год — это происходит ежедневно. Это повышает ставки на правильное разрешение конфликтов, потому что небольшие ошибки накапливаются: количество товара, которое неправильно на единицу или две после каждой синхронизации, в конце концов приводит к расхождению между полкой и товаром, что заставляет продавца перестать доверять программе и вернуться к блокноту. Также стоит быть честным об имеющихся данных: большая часть того, что публикуется об архитектуре автономной кассы прямо сейчас, поступает из блогов поставщиков, маркетинговых страниц товаров и от отдельных инженеров, описывающих свои разработки, а не из независимых исследований или крупномасштабных исследований.[1][4] Архитектурные рассуждения верны и подход — локальное хранилище в первую очередь, фоновая синхронизация позже, идемпотентные записи — согласован во всех источниках, но утверждения о надежности или «неостановимой» доступности следует рассматривать как позиционирование поставщика, а не как проверенные результаты.

Что должен действительно проверить владелец магазина перед выбором системы?

Учитывая, что базовый подход стандартизирован — локальная база данных в первую очередь, синхронизация облака позже, разрешение конфликтов для критических задач, таких как печать — различие между товарами в меньшей мере в том, «работает ли без интернета», а в большей — в том, «насколько элегантно система справляется с восстановлением соединения».[6] В Pultrack это то, что мы рассматриваем как основное, а не как украшение: двухвалютные суммы, уровни товаров и чеки должны корректно согласовываться между устройствами и днями без соединения, и продавец должен видеть простыми словами какие продажи все еще ожидают синхронизации, а какие полностью подтверждены. Это более узкое и проверяемое утверждение, чем «работает без интернета», и именно оно, по нашему мнению, предсказывает, будет ли система работать в магазине, теряющем электричество большую часть дня. Если вы оцениваете любую автономную кассу — нашу или чьей-либо еще — попросите посмотреть журнал синхронизации после намеренного отключения от интернета. Поставщик, который может вам показать ровно как он разрешил конфликтующее обновление товара, демонстрирует что-то действительное. Поставщик, который может только сказать что приложение «работает без интернета», еще не показал вам часть, которая имеет значение больше всего.

Частые вопросы

В чём разница между кассой, способной работать автономно, и кассой с приоритетом автономности?

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

Что происходит если два устройства продали последний товар во время работы в автономном режиме?

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

Может ли касса с приоритетом автономности печатать налогово-соответствующий чек без интернета?

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

Является ли касса с приоритетом автономности проверенной технологией или это всё ещё развивающаяся область?

Архитектурный подход — локальное хранилище в первую очередь, фоновая синхронизация, идемпотентные записи, разрешение конфликтов — сейчас довольно последователен между поставщиками и независимыми разработками. Однако большая часть общественных свидетельств поступает из блогов поставщиков и отдельных разработчиков, а не из независимых исследований, поэтому утверждения о надежности в большом масштабе должны рассматриваться как позиционирование поставщика, а не как проверенный факт.

Что должен протестировать владелец небольшого магазина перед доверием к системе с приоритетом автономности?

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

Источники

Попробовать Pultrack✈ Telegram