NAN
Стабильность в кармане: Масштабирование и поддержка высоконагруженного мобильного приложения
NAN
#Поддержка и развитие приложений#Дизайн приложений#Программирование приложений

Стабильность в кармане: Масштабирование и поддержка высоконагруженного мобильного приложения

30 
NAN Россия, Новосибирск
Поделиться: 0 0 0
Стабильность в кармане: Масштабирование и поддержка высоконагруженного мобильного приложения
Клиент

Novex

Сфера

Торговля

Регион

Россия, Барнаул

Сдано

Июль 2025

Задача

Сопровождение и развитие мобильного e‑commerce приложения с каталогом более 50 000 товарных позиций и нетривиальной бизнес-логикой: гарантировать бесперебойную работу при пиковых нагрузках, минимизировать вероятность упущенных заказов из-за технических отказов и падения производительности, расширять функциональные возможности, делать клиентский путь к покупке проще и короче.

Решение

Техническая архитектура проекта

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

Такой подход обеспечивает ряд преимуществ:

  • централизованную синхронизацию данных и единые механизмы защиты информации;

  • более простое управление остатками;

  • снижение затрат на инфраструктуру благодаря использованию одной базы данных и одного сервера;

  • возможность одновременно внедрять новые функции в веб-версии и мобильном приложении.

Технологический стек

Flutter — разработка единого приложения для iOS и Android на общей кодовой базе.

Команда проекта

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

В проект были вовлечены:

  • Flutter Developer;

  • DevOps Engineer;

  • System Analyst;

  • QA Engineer;

  • UX/UI Designer;

  • Project Manager.

Со стороны заказчика в работе участвовали внутренняя IT-команда и ключевые стейкхолдеры.

Проект в цифрах

  • 38 технических проблем и нестандартных решений выявлено и устранено;

  • 894 дня стабильной работы приложения за весь период сотрудничества с NAN;

  • рост выручки мобильного приложения на 12%;

  • более 50 000 SKU в онлайн-каталоге;

  • свыше 20 интеграций с внутренними и внешними системами;

  • более 30 релизов за 2+ года совместной работы.

Основные задачи и результаты

✓ Реализовали интеллектуальный поиск для более быстрого подбора товаров.

✓ Обновили карточки товаров, сделав их удобнее для изучения и выбора продукции.

✓ Интегрировали пункты выдачи заказов СДЭК для расширения вариантов получения заказов и повышения удобства покупателей.

Бизнес-эффект

Снижение риска потери выручки

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

Рост доверия пользователей

Обеспечили более прозрачное отображение наличия товаров и способов получения заказа.

Ускорение покупки

Сократили количество неопределённых состояний и сделали пользовательский сценарий более понятным.

Контролируемое развитие продукта

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

Детали реализации

Стабильность и производительность

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

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

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

Дополнительно была обнаружена и устранена причина аварийных завершений приложения, связанная с утечками памяти на стороне клиента (некорректное использование EventBus и IntersectionObserver).

Результаты:

  • увеличилась скорость работы интерфейса;

  • исчезли задержки при открытии каталога;

  • повысилась стабильность приложения;

  • улучшился пользовательский опыт при работе с большим количеством товаров.

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

Настройка CI/CD

На момент начала сотрудничества проект уже содержал настроенный процесс CI/CD. Несмотря на формальную работоспособность, он был тесно связан с прежней инфраструктурой и включал избыточные сценарии, которые не соответствовали текущим процессам.

Мы проанализировали существующую конфигурацию, адаптировали её под актуальную среду разработки и упростили цепочку релизов. Часть сценариев была переработана, часть — оптимизирована.

В результате процесс сборки и публикации обновлений стал более предсказуемым, быстрым и удобным для команды.

CI/CD (Continuous Integration / Continuous Delivery) — практика автоматизации сборки, тестирования и публикации релизов, позволяющая выпускать обновления быстрее и снижать вероятность ошибок при выкладке.

Поиск по каталогу

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

Для улучшения качества поиска в мобильное приложение был интегрирован сервис SearchBooster через API. Поскольку готового Flutter-виджета сервис не предоставляет, поисковой интерфейс был реализован отдельно.

Основные цели проекта:

  • повысить качество поиска;

  • улучшить пользовательский опыт;

  • получать данные для дальнейшей аналитики и оптимизации поисковых сценариев.

Реализованы:

  • текстовый поиск;

  • поиск по изображению;

  • голосовой поиск;

  • поиск по штрих-коду;

  • описание взаимодействия мобильного приложения с API;

  • разработка интерфейса поиска.

В окне поиска отображаются различные типы подсказок:

  • история запросов пользователя;

  • подсказки по мере ввода текста;

  • категории;

  • бренды;

  • товары.

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

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

Карточка товара

Карточка товара является одним из основных этапов принятия решения о покупке.

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

Такой подход позволил уменьшить визуальную нагрузку и сделать выбор продукции более удобным и быстрым.

Наличие товара и способы получения

В ритейле информация о наличии зависит от региона, конкретного магазина и выбранного варианта получения заказа.

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

Мы переработали всю логику работы с остатками и доступностью товаров.

Были внедрены:

  • уровни остатков (много, средне, мало);

  • расширенные статусы наличия;

  • выбор способа получения непосредственно в каталоге, карточке товара и шапке приложения;

  • сортировка товаров с учётом доступности.

Новые статусы включают:

  • товар в наличии;

  • доступен для доставки или в выбранном пункте самовывоза;

  • доступен под заказ либо в другом пункте выдачи;

  • закончился, но доступен для самовывоза;

  • закончился и недоступен для доставки.

Для реализации новой логики были доработаны:

  • алгоритм сортировки товаров в каталоге;

  • отображение наличия в различных разделах приложения;

  • карточка товара и детальная страница;

  • механизм смены магазина и способа получения.

На странице товара появился отдельный блок «Наличие товара», отображающий:

  • выбранный способ получения;

  • уровень остатков;

  • возможность изменить способ доставки;

  • наличие товара в других филиалах.

В результате пользователи начали получать актуальную информацию о доступности товаров ещё до оформления заказа и реже сталкиваться с ограничениями на финальном этапе покупки.

Интеграция пунктов выдачи СДЭК

В рамках проекта была реализована интеграция сети ПВЗ СДЭК.

Выполненные работы:

  • доработка оформления заказа для выбора пунктов выдачи;

  • интеграция ПВЗ СДЭК в сценарии доставки и самовывоза;

  • добавление фильтров по типам пунктов выдачи;

  • отображение меток СДЭК в списке и на карте;

  • вывод стоимости доставки и условий бесплатной доставки;

  • корректная обработка сценариев самовывоза и доставки.

Основная сложность проекта заключалась в согласовании серверной логики и обеспечении корректной работы всех пользовательских сценариев.

Итоги проекта

Мобильное приложение для крупного e-commerce и ритейл-бизнеса — это не просто набор экранов, а важный инструмент продаж и взаимодействия с клиентами.

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

Результат

38 - костылей и технических проблем выявлено и устранено

894 - дня бесперебойной работы приложения (100% всего времени работы с NAN)

на 12% - выросла выручка в мобильном приложении

50 000 - SKU в онлайн-каталоге Novex

20 - интеграций с внешними и внутренними системами

>30 - релизов обновлений выпустили за более чем 2 года совместной работы


https://play.google.com/store/apps/details?id=com.creonit.novex

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

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

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

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

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

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