Суперапп представляет собой платформу, объединяющую несколько сервисов в одном интерфейсе. В отличие от обычного приложения, он образует экосистему, закрывающую целый ряд потребностей пользователя. Понятный пример для российских пользователей — Яндекс Go и VK со встраиваемыми сервисами mini apps, через которые можно заказать продукты, вызвать такси, арендовать самокат, купить билеты на поезд или самолет и не только.
В России суперприложения как бизнес-модель сейчас активно развивают ИТ-гиганты: fintech- и телеком-компании с упором на экосистемный подход. Для бизнеса выгоды очевидны:
- Обмен аудиторией между сервисами. Так покупатель товаров на маркетплейсе может стать пользователем сервиса заказа такси и наоборот. Отдел маркетинга получает доступ ко всей базе пользователей супераппа и анализирует данные об их действиях во всех внутренних мини-приложениях.
- Удержание клиента внутри экосистемы. Абонент «Ростелекома» с большей вероятностью будет пользоваться Wink, а не другим онлайн-кинотеатром — такого эффекта бизнес достигает за счет общих программ лояльности и выгодных тарифов на пакеты услуг.
- Меньше ресурсов на поддержку приложения. Вместо развития нескольких отдельных продуктов, каждый из которых сопровождает полностью укомплектованная команда, бизнес фокусируется на одном. Это, во-первых, позволяет сократить расходы на содержание штата, а во-вторых, иметь один маркетинговый бюджет и стратегию. Обновление единого приложения также менее ресурсозатратный процесс.
Для пользователя выгода заключается в получении единой «точки доступа» ко всем нужным сервисам и более выгодным условиям обслуживания. А еще — один хорошо оптимизированный суперапп будет занимать меньше места в памяти смартфона за счет того, что в нем используется один набор графических элементов вместо нескольких, как бы это было в случае с несколькими приложениями.
К отказоустойчивости таких приложений предъявляются повышенные требования. Суперапп фактически собирает весь трафик составляющих его сервисов — соответственно, он должен быть готов выдержать пиковые нагрузки и не «упасть» в критически важные для бизнеса моменты, например, в праздники. Для компании любая минута, которое приложение будет недоступно, — это как потеря прибыли, так и репутационные риски.
Слабые места супераппов: на что обратить внимание перед разработкой
Есть ряд сложностей, которые придется преодолеть тем, кто решил развивать суперапп.
Утечки данных. Чем больше проект и команда и чем выше текучесть кадров, тем выше вероятность появления проблемы. Решение в таком случае — использование ролевой модели с детальной настройкой прав доступа для каждого типа пользователей. Например, в PowerApp более 100 опций, которые можно задать для конкретного специалиста — в результате линейный сотрудник службы поддержки имеет возможность редактировать и просматривать один объем и тип данных, руководитель отдела — другой, разработчик — третий и так далее. Такой подход гарантирует сохранность как пользовательских данных, так и конфиденциальность сведений о бизнесе.
Проблемы с производительностью. Суперапп — более сложная система, чем обычное приложение, поэтому разработчикам нужно позаботиться об оптимизации заранее. Сжатие изображений с использованием современных форматов (например, WebP) — один из способов повысить скорость загрузки без рефакторинга кода или пересмотра серверной инфраструктуры. Также можно использовать разные типы хранилищ для разных частей приложения. В «горячих» хранятся файлы и данные, которые нужно получать быстро и с минимальной задержкой — например, те, которые используются в повседневных операциях. В «холодных» — то, что бывает востребовано реже и меньше: архивы и резервные копии.
Также разработчики используют постепенную загрузку. Многие видели такое в банковских приложениях: вы запускаете его, интерфейс отображается мгновенно, им уже можно пользоваться, а в это время загружаются отдельные виджеты — на их месте пользователь видит пустой блок с названием раздела.
Необходимость построить высокие стандарты коммуникации внутри команды. Команда должна работать как единый организм — только в этом случае получится строить продукт эффективно. Например, представим суперапп доставки. Цепочка внутренних коммуникаций должна быть налажена так, чтобы если курьер заметил проблему, у него была возможность уже через пять минут донести это до менеджера продукта и лида команды разработки.
«Падение» на пиках нагрузки. При наплывах трафика, например, в праздники или во время действия крупных акций, сервер может не выдержать и «упасть» — пользователь увидит ошибку и не сможет пользоваться приложением. Для предотвращения таких рисков в период повышенной посещаемости проводят серверное масштабирование, оно бывает вертикальным и горизонтальным. Горизонтальное — это когда вы создаете много виртуальных машин, на каждой запуская копию приложения. Когда мощностей становится мало, подключаются дополнительные виртуальные сервера — нагрузка распределяется на все. Другой способ масштабирования серверной инфраструктуры, вертикальный, подразумевает, что вы повышаете мощности конкретной машины по мере надобности — это возможно сделать быстро, если вы пользуетесь виртуальными машинами, а не физическими.
Готовность приложения к большому объему трафика — неотъемлемая черта хорошего супераппа, поэтому стоит проводить его непрерывное тестирование: во время внедрения новых функций нужно сохранять основную функциональность, отвечающую за генерирование прибыли. Отдельный вид тестирования, которому также стоит уделить внимание — нагрузочное, оно помогает проверить отказоустойчивость продукта перед запуском очередного обновления. Во время нагрузочного тестирования разработчики симулируют большой наплыв трафика в приложение, это можно сделать с помощью специализированного программного обеспечения. Такой тест помогает понять, насколько система готова к работе в критических условиях.
Как можно снизить риск «падений» при высоких нагрузках
Если подвести черту, то рекомендации могут быть такими:
- Проводить тестирование скорости загрузки приложения. Скорость загрузки напрямую влияет на пользовательский опыт — по статистике, чем медленнее загружается сайт или приложение, тем больше пользователей покидает такую страницу уже в первые секунды.
- Не забывать о нагрузочных тестах. Они помогают выявить слабые места в системе до того, как они проявятся в реальных условиях.
- Выбирать подходящий хостинг и подготовить его к нагрузкам. Мониторинг ресурсов и автоматическое масштабирование будут также незаменимы перед запуском, такие возможности помогут вовремя отслеживать проблемы с приложением и в случае необходимости увеличивать мощности сервера — полезно на пиках трафика.
- Проводить профилирование кода. Этот процесс позволяет собрать статистику во время выполнения программы и понять, на каком этапе нагрузка на сервер максимальная. Такой отчет поможет выяснить слабые места в коде и оптимизировать его, что в итоге повысить производительность приложения.
- Использовать асинхронность. Пример асинхронной работы приложения — когда вы запустили его и уже можете пользоваться основными функциями, в то время как другие части приложения находятся в процессе загрузки.
- Оптимизировать приложение. Например, загружаться супераппу быстрее поможет технологии CDN (Content Delivery Network), ее суть в том, что пользователь получает файлы с сервера, который расположен ближе всего к нему — таким образом, скорость выполнения запроса увеличивается. Способов ускорения может быть множество, и суперапп должен находиться в процессе непрерывной оптимизации.
Как действовать, если приложение все-таки «упало»
Первым делом стоит быстро устранить последствия — найти слабые места и перекрыть их «костылями». Когда работа приложения стабилизирована, команда разработки может поднять библиотеки данных и отследить, что происходило на сервере в момент «падения». После получения более полных данных специалисты смогут полноценно погрузиться в вопрос и найти оптимальное решение проблемы.
Важна не только прозрачная внешняя коммуникация, но и внутренняя. Нужно, чтобы любая информация, которая так или иначе влияет на работу мобильного приложения, передавалась сразу же в отдел разработки — стоит научить все отделы взаимодействовать с ИТ-командой и правильно сигнализировать им о проблемах.
Даже с учетом большого количества тест-кейсов, ни одна компания не может предусмотреть абсолютно все. Поэтому работа над супераппом — это эволюционный путь непрерывных улучшений и доработок.