Марина Коневских
продакт мобилки
Владимир Иванов
главный за разработку Core
2ГИС 6.0
Многие годы 2ГИС был приложением, которое требовало локальных баз городов и работало без интернета. В новой версии 6.0 карта, справочник и навигатор доступны сразу — базы городов можно не загружать.
Обновление до версии 6.0 начинает приходить пользователям устройств на Android, для iOS — выйдет в течение нескольких дней
Автономность 2ГИС всегда была его ключевым преимуществом. А с развитием мобильного интернета и ростом потребностей наших пользователей мы добавляли всё больше функций, которые работают онлайн. Такой тяжёлый контент, как фотографии или отзывы, в базы попасть не могли и доставлялись по интернету. По сети обновлялись и такие «срочные» данные, как пробки и автобусы на карте.

Базы оставались и росли: справочник становился объёмнее, карты — детальнее, территория проектов увеличивалась. И чем больше и проработаннее город, тем грустнее становилось людям, которые пользовались 2ГИС. База Москвы, например, занимала больше 500 МБ.

Годы шли, интернет становился доступнее, покрытие операторов и скорости — лучше. Пользователи стали задаваться вопросом: «А почему я не могу начать пользоваться приложением, просто скачав его из стора, а вынужден ждать загрузки ещё сотен мегабайт каких-то данных, когда приложения конкурентов просто работают? А не удалить ли мне приложение, которое зачем-то занимает кучу места, которое я лучше потрачу на фоточки?»
При первом старте 2ГИС после загрузки из стора начиналось скачивание базы. Это долго
Опять же, если в начале 2000-х получать свежий справочник каждый месяц казалось невероятно круто, то в начале 2020-х ритм жизни так ускорился, что счёт идёт уже не на дни, а на часы и минуты.

Нам не оставалось иного выбора, кроме как научить приложение работать не со скачанной базой города, а отвечать на конкретные запросы пользователя в режиме онлайн: найти кафе поблизости, посмотреть расположение понравившегося на карте, построить до него маршрут. Только нужные здесь и сейчас данные, причём всегда самые актуальные.
Как делали
К задаче приступили весной 2021 года и планировали закончить за год. Год может показаться большим сроком, за который можно успеть сделать любую задачу. С этим можно поспорить.

У 2ГИС, родившегося на CD, было две родовых травмы: попроектная работа без глобальной карты мира и бесшовных сценариев работы с ней и необходимость скачивать базы. С первой мы справились за два года, вторая задача оказалась не менее амбициозной.

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

Действовали по двум основным направлениям: уменьшению скоупа и привлечению дополнительных ресурсов. Такой сильный фокус на одной ключевой задаче, конечно же, заметно ударял по другим направлениям и даже багфиксу. Часто приходилось быть плохими парнями, отказывая QA в незамедлительной починке проблем до релиза. А некоторые фичи приходилось откладывать, потому что 6.0 была в приоритете.
Что сделали
2ГИС можно назвать большой и сложной программой для визуализации данных — справочника, карты и маршрутов.

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

Теперь в мобильных приложениях задействованы те же алгоритмы и используются те же данные, что и в онлайн-версии:
Мобильное приложение обращается к сервисам 2ГИС, которые раньше использовались в онлайн-версии: карта, справочник и маршруты
Были и нюансы. К примеру, поиск по локальным базам и без них должен был давать пользователю один и тот же опыт: быстро и с ожидаемой сортировкой выдачи. Первый блин вышел комом — ответ бэкенда занимал в худших случаях до полумегабайта, а отображение выдачи могло занимать секунды. Пришлось идти на компромиссы и искать золотую середину между согласованностью и отзывчивостью. В итоге нам удалось ужать объём данных первой страницы выдачи до десятков килобайт и сохранить стабильность всей выдачи. Также полностью переработали серверную генерализацию маркеров на карте, чтобы отрабатывать быстро даже на десятках тысяч результатов, сохраняя глобальный порядок по всем зумам.
Что получилось
Главное: после установки 2ГИС не попросит скачать базы городов.

Ждём, что новая версия приложения повлияет на конверсию из установки в использование продукта: сейчас около 500 тысяч пользователей в месяц устанавливают приложение, но останавливаются на скачивании данных. Теперь картой, справочником и навигатором можно пользоваться сразу:
Существующие пользователи, скорее всего, даже не заметят изменений. Карта, выбор компаний, поиск проезда, навигатор — всё работает так же, как и раньше, визуально никакой разницы. Но по приезде в другой город их ждёт сюрприз — никаких препятствий в виде «сначала скачайте базу города» больше нет: приложение работает при наличии сети.

Но мы аккуратно предлагаем пользователям скачать данные, чтобы в неожиданный момент (на подземной парковке или в метро) не подвести человека. Например, когда пользователь изучает карту и вышел за пределы города или построил междугородный автомобильный маршрут:
Что дальше
Все основные сценарии в новой версии уже есть, но нам предстоит ещё много работы по её развитию. В ближайших планах — научить работать без базы города функции, которые пока зависят от локальных данных: определитель номера для iOS, поиск по подъездам и квартирам, предупреждения о праздниках и изменении времени работы компаний. Начинаем прорабатывать режим работы приложения online-first, в котором при наличии сети будут использоваться онлайн-данные даже при наличии базы.

Обновите приложение до версии 6.0 и присылайте фидбэк.