Авторизация
Сброс пароля
Разработка легковесного сервиса для поиска товаров в розничной сети
Заказчик: NDA

Продолжаем рассказывать об инженерных задачах, которые мы решаем для одной из крупных розничных сетей. В этот раз нам нужно было сэкономить пространство в магазинах и упростить поиск товаров для покупателей.
1. Вводная задача от заказчика, проблематика, цели
Заказчик — одна из ведущих розничных сетей, ее представительства есть в городах и небольших поселках. В ассортимент сети входят товары, которые покупатели часто выбирают на основе конкретных характеристик и целей. Это товары, в которых важно точное соответствие характеристик, и покупатели ищут подробную информацию перед покупкой. Сеть насчитывает более 1500 торговых точек, и в каждой из них обслуживаются сотни покупателей ежедневно.
Заказчик понимал, как важно внедрить удобные и быстрые инструменты для поиска товаров и взаимодействия с покупателями. Это стало его ключевым мотивом в рамках проекта.
Задача заключалась в том, чтобы оптимизировать пространство в магазинах и заменить громоздкие терминалы для поиска товаров облегченными устройствами на базе планшетов с Android, которые можно устанавливать на стенах или подставках. Такое изменение должно было значительно улучшить эргономику торговых точек.
Существующие терминалы позволяли клиентам:
- проверять наличие товара в магазине;
- искать товары по различным категориям;
- просматривать цены;
- регистрировать карту лояльности;
- оставлять отзывы о товаре и сервисе.
Необходимо было объединить информацию из различных источников, что создавало серьезные технические сложности.
2. Описание реализации кейса и творческого пути по поиску оптимального решения
На этапе анализа мы выявили, что информация о товарах поступала из нескольких источников: данные о наличии и цене хранились в базе, расположенной на компьютере заведующего магазином, а изображения и описания товаров — в отдельной базе, доступной через FTP. Кроме того, для работы с картами лояльности необходим был стабильный интернет, что вызывало сложности в удаленных магазинах с пропадающим/разрывающимся интернет-соединением.
Для эффективного решения этой задачи мы предложили разработать бэкенд, который агрегировал бы все данные в одном месте. В результате приложение на Android стало работать с локальной сетью магазина, что позволило обеспечить стабильную работу даже при временном отсутствии интернета.

3. Результаты сотрудничества
Тестирование проводилось на компьютерах с минимальной конфигурацией (Windows 7, 4 Гб ОЗУ, процессор Intel Core 2 Duo).
Изначально рассматривался вариант решения на базе Docker-контейнера с PHP-сервером на платформе Laravel. Для тестирования мы развернули виртуальную машину с конфигурацией, соответствующей минимальным требованиям заказчика, и проверили, как система будет работать при низкой нагрузке. Однако в процессе тестирования оказалось, что Docker-контейнер не запускается на Windows 7, что делает это решение неподходящим для эксплуатации в реальных условиях сети.
Учитывая данное ограничение, мы решили попробовать альтернативное решение на языке Go, который известен своей кроссплатформенностью и низким потреблением ресурсов. После реализации тестовой сборки на Go, мы получили отличные показатели производительности — приложение использовало всего 12 Кбайт оперативной памяти, что значительно превосходило первоначальные результаты.
Таким образом, мы выбрали Go как наиболее подходящее решение для разработки сервиса, обеспечивающее необходимую легковесность и стабильную работу на имеющемся оборудовании.
4. Заключение
На этом наша часть работ закончилась. Сервис, основанный на Go, показал отличную производительность, обеспечив простоту в установке и обслуживании.



