Дружелюбный экран: бизнес изменил подходы к разработке мобильных приложений

Мобильные приложения стали удобнее для пользователей в России
Автор фото: freepik.com

Новые подходы к разработке мобильных приложений делают их удобнее для пользователей и полезнее для бизнеса.

Среди российских компаний набирает популярность новый подход в разработке пользовательских интерфейсов — Backend Driven UI (BDUI). В нём логика отображения и структура страницы управляются напрямую с сервера.
Таким образом, чтобы пользователь получил обновления в мобильном приложении (или на другой платформе), не требуется переустановка и обновление версии. В том числе не нужно ничего скачивать из магазинов приложений (сторов), что особенно актуально в условиях санкций.

Плюсы и минусы

Как выглядит классическая версия клиент–серверной архитектуры? Есть frontend–часть (фронт), которая получает и распределяет входящие от клиента запросы. Есть backend (бэк), которая их обрабатывает. На фронте используется модель DOM — это схематичное представление сервиса, со всеми разветвлениями по узлам и объектам (страницам), с их характеристиками и методами.
В случае BDUI–подхода бэк и фронт сливаются воедино. Это даёт ряд преимуществ — централизованное управление на стороне сервера, адаптивность к разным платформам, снижение нагрузки на клиентскую часть. Однако такую схему крайне сложно выстроить без ошибок. Ведь отрисовка экранов и их функций происходит прямо на ходу.
Главный минус BDUI — у такой архитектуры больше уязвимостей в безопасности. Сервер управляет значительной частью логики приложения, а значит и попасть на бэк, хранящий данные, гораздо легче.
Также важную роль играет сложность разработки — чтобы написать адаптивный код, соединяющий в себе фронт и бэк, требуются титанические усилия и много времени. Могут возникнуть трудности с набором подходящей команды разработчиков.
Финальная проблема — непосредственная зависимость от сервера, который может медленно работать из–за перегруженной логики, иметь недостаточную мощность или быть просто временно недоступным. Всё это напрямую влияет на пользовательский опыт. Поэтому внедрение принципов BDUI требует вдумчивого, внимательного планирования и грамотного архитектурного подхода.

Новая архитектура

Android–разработчик "AliExpress РФ" Алексей Телышев на прошедшей в Петербурге конференции для мобильных разработчиков Mobius от JUG Ru Group презентовал BDUI–платформу компании и рассказал, как непросто было строить новую систему российской версии приложения. По его словам, платформа ускорила процесс разработки, хотя пришлось пересмотреть архитектурные принципы.
"У нас были оптимизационные проблемы с дизайном движка. Мы изначально захотели сделать виртуальный DOM, в котором содержались неизменяемые элементы. Их нельзя было заменить, не заменяя все остальные объекты, которые от них зависят. Пришлось отказаться от этого решения, что позволило изменять отдельный объект, не переписывая код всех остальных", — пояснил Алексей Телышев.
Помимо изменения дизайн–схем разработчикам удалось внедрить и типовые методы решения уязвимостей BDUI–архитектуры. К примеру, был внедрён DSL–конструктор, который значительно облегчает написание кода, — он содержит в себе ряд ограничени, не позволяющих разработчику неправильно описать вёрстку экрана. Это сокращает количество ошибок.
Вместо того чтобы писать код "общего решения", который одинаково средне работает и в мобильном приложении, и на веб–версии, было решено перейти к "нативному коду" — это позволило реализовать отдельно от движка персональные решения пользовательского интерфейса на разных платформах.

Несекретный код

Подход BDUI активно используется и адаптируется многими российскими компаниями. МТС, "Озон", Х5 Group, "Авито", "Циан" — список можно продолжать долго. Некоторые создают свои движки и фреймворки. Например, "Яндекс.Маркет" разработал фреймворк DivKit, включающий в себя несколько библиотек по отрисовке интерфейсов для Android, iOS и веба. Фреймфорк открытый, он есть на GitHub. "Яндекс.Маркет", "Алиса", "Едадил", ТВ–приложение — все они используют DivKit. Компания активно развивает это направление и формирует сообщество, проводит свои конференции по BDUI.
Может показаться, что BDUI–принципы разработки подходят только для таких сфер, где риски у пользователей невелики. К примеру, такой тип проектирования сервисов может прижиться в корпоративных приложениях, в сфере услуг, развлекательных сервисах, на торговых площадках маркетплейсов, где есть регулярный запрос на оперативное внедрение промоакций. Однако тренд активно проникает и в банковский сектор. На прошлогодней конференции Mobius лидтех Android–разработки Анна Саботович презентовала достижения Альфа–Банка в этом направлении.
Альфа–Банк одним из первых на рынке серьёзно задался вопросом, как внедрять продуктовую аналитику в сервисы, основанные на BDUI–проектировании. Ведь такие экраны не содержат зафиксированной бизнес–логики. По сути, они являются списком абстрактных полей, смысл которых, в зависимости от пользовательского сценария, достаточно часто меняется. Разработчики придумали своё решение — заложить на бэковую часть функцию по настройке аналитики, с помощью которой можно добавлять и менять состав событий. Это направление носит название "Backend Driven Аналитика".
Сбербанк тоже активно присматривается к теме — платформа "СберБизнес" использует дизайн–систему "Триплекс". Она представляет собой совокупность правил по строительству самых разных UX–сценариев. Наравне с "Яндексом" они предлагают "свободным художникам" набор библиотек с дизайн–схемами.
В компании отмечают, что эта система позволяет отрисовывать до 80% существующих экранных форм для мобильных приложений.
По всей видимости, ИТ–сфера уже не сможет отказаться от подходов BDUI. На популярном веб–ресурсе для программистов "Хабр" полно историй по внедрению этих принципов разработки, с конкретными кейсами, примерами багов, советами по улучшению кода. Некоторые компании открывают доступ к своим инструментам.
Судя по заметному интересу ИТ–сектора к этой теме, с каждым годом будут видны значительные улучшения в разработке движков, конструкторов и библиотек, что упростит процесс написания кода.