Firebase — наша история исхода с сервиса
Денис Гордиенко, генеральный директор Bright Mobile, о том, какие препятствия чинит Firebase российским пользователям.
Мои постоянные читатели наверняка помнят, что у нас есть заготовка для маркетплейсов услуг RTPlatform, и большую часть проектов последние несколько лет я запускаю именно на нём.
Суть его проста: вместо того, чтобы за большие деньги заказывать разработку с нуля, можно сэкономить, запустив приложение на заготовке, которое будет значительно дешевле при сохранении аналогичного функционала. При этом готовое решение всегда можно доработать под предпочтения клиента. Выгодно и мне, и клиенту: он тратит меньше денег, я трачу меньше времени.
В сегодняшней статье я хочу рассказать о кое-каких нюансах, которые появились у нас в 2021 году. Для того, чтобы всё было понятно, сначала проведу небольшой экскурс по технической части RTPlatform, затем перейду к проблемам, с которыми столкнулся я, а, возможно уже и вы, если в вашем проекте используется Firbase.
Как выглядит текущая архитектура RTPlatform?
- Есть Битрикс. Тут хранится сайт и API для мобильного приложения.
- Есть мобильные приложения, написанные на Angular и общающиеся с Битриксом по API.
- Есть Firebase: Битрикс, по крайней мере в базовом варианте, не устраивал скоростью работы, и для real-time функций мы задействовали Firebase.
Под real-time функциями я понимаю ситуации, когда нужен очень быстрый отклик сервера: отправка пуш-уведомлений, подписки по ним, внутренний мессенджер (у нас есть чат между заказчиками и исполнителями). Чтобы пользователям не приходилось ждать сообщений по целой секунде, я выбрал Firebase – это база данных реального времени, и за счёт того, что там постоянно держится socket-соединение, происходит моментальный обмен подписками.
Человек, который использует чат с мобильного приложения, подключается не к Битриксу, а к Firebase, на котором все диалоги и хранятся. Если нужно зайти в профиль мастера, пользователь запрашивает статические данные, а они хранятся в Битриксе. Грубо говоря, получается система, работающая с двумя серверными частями.
Какие появились проблемы?
Я уже давно пишу о нашем готовом решении и о вехах его развития, и эта статья как раз про одну из них. Проблема в том, что Firebase начал очень негативно относиться к российским клиентам. Не к пользователям приложения, а к пользователям продукта – т.е. к заказчикам, использующим его для своих проектов. Что же происходит?
Самое нестрашное, что случилось – это отключение русской локализации. Почему – непонятно. Скорее всего, причины политические: санкции, все дела. Потому что объективных причин с точки зрения разработки вырезать полностью русскую локализацию попросту нет. Поддержка тоже только на английском.
Всё бы ничего, если бы не одно но: с конца 2020 года некоторые клиенты стали жаловаться, что Firebase не принимает карточки, выпущенные российскими банками или банками в СНГ.
Я сначала отнёсся к проблеме достаточно скептически: решил, что случай единичный, и дело либо в карте, либо в вводе данных. Однако в 2021 году число таких обращений стало расти, и очень скоро уже больше половины клиентов, запускавших наше готовое решение, не могли авторизовать свою карту в Firebase.
То есть пользоваться его бесплатным тарифом они по-прежнему могут и сейчас, но при превышении трафика происходит не списывание, как должно быть, а блокировка, и пользователь, который заходит в приложение посмотреть диалоги, видит вместо чата пустой экран.
Эта проблема уже серьёзная. Я думал было как-то решить её руководством – решил, что нужно расковырять Firebase, чтобы они починили. Но техподдержка отвечает очень неохотно, хотя объективных причин тому я снова не нашёл. Ладно бы прямо сказали: вы русские, вы под санкциями, мы вас не любим – всё было бы ясно. Неприятный, но хотя бы честный ответ, есть от чего отталкиваться. В данной же ситуации непонятно, куда ступить: отвечают через раз, просто закрывая тикеты без ответа.
Что у нас находится на Firebase?
Первое – регистрация по СМС. В своё время мне понравилось, что гугл давал 10 тысяч бесплатных смсок в месяц (и сейчас даёт, просто если вдруг понадобится 10 001-ая, она не придёт, потому что не с чего будет деньги списать).
Второе – пуш-уведомления, гугловый FCM.
Третье – диалоги.
Что со всем этим делать?
Push, в фаебрейсе так и останется. FCM бесплатный, переживать, что не придёт пуш, не надо. Регистрацию по СМС – тоже. По крайней мере, у меня пока не было клиентов, которые сумели бы израсходовать весь пакет в 10 тысяч СМС.
Главный вопрос остаётся по диалогам и подпискам, ведь именно они едят больше всего трафика. Когда люди много начинают общаться и получать уведомления о новых заданиях, можно легко нарваться на перерасход. Что же делать?
Первое, что мне пришло в голову – перенести диалоги и подписки в Битрикс. С подписками, в принципе, сложностей нет: это легко мигрируется, потому что подписками пользуются не так часто, и задержка пуша в 1-1,5 секунды страшной не станет.
Другое дело – диалоги. Их придётся реализовывать как socket-соединение. Сокет, если совсем по-простому – это соединение, которое поддерживает моментальный обмен. По обычному АПИ нужно отправить запрос, дождаться json, распарсить его и вывести в виде сообщения, и на всё это уходит время. Как раз те самые одна-полторы секунды.
Сокет же – постоянно поддерживаемое соединение, а потому обмен данными с ним на порядок быстрее. Задержка тут может быть максимум в долю секунды, которая не так (или совсем) не заметна, и уже не раздражает. Так же у Битрикса есть Push&Pull, заточенный под работу в реальном времени.
Сначала мы перенесём подписки – это легко делается и так же легко внедряется. Затем диалоги – это посложнее, но реализуемо. Регистрацию по СМС и пуши пока останутся на Фаербейсе, посмотрим на дальнейшее развитие ситуации, возможно, они там так и останутся, возможно, их тоже придётся переносить на другой шлюз.
Теперь самое главное: новые клиенты получат это в текущей сборке, клиенты, которые уже пользуются не так сильно нуждаются в этом обновлении - у них карта уже привязана, но если сильно хочется, то подготовим перенос, как доработку и для них.
Как и писал выше не нашёл причин таких проблем Firebase, кроме политических. Ну что тут можно сказать... No pasarán!, граждане...
Никаких санкций в сервисах от Гугл нет (только для крыма). Вы не умеете пользоваться.
Использую Firebase для пары небольших приложений, но на английском. Ранее не видел консоли в Firebase на русском.
Так или иначе, в своем Google аккаунте вы можете установить язык по умолчанию и он всегда будет применяться в сервисах Google.
Я ставил и русский и украинский - консоль не менялась, оставалась на английском. Поэтому, если санкции и ввели, то по отношению украинского язык тоже.
Искать негодования в принципе работы саппорта я бы тоже не стал. У Гугла есть две проблемы - саппорт и документация. И то и другое, по сути, отсутствует, либо работает через одно место.
А по поводу карт пользователей так и не понял из текста.
У вас часть проекта лежит на Firebase. Вы баланс пополняете и можете использовать ресурсы сверх лимита.
Каким боком здесь пользователи и их карты? Или они напрямую взаимодействуют с каким-то инструментом Firebase и оплачивают какую-то сумму? Не увидел этого в тексте.
У firebase есть платный тариф Blaze. Чтобы его активировать нужно подключить к своему гугл-акку карту. Вот с прикреплением карты и возникает проблема - гугл тупит и выкидывает либо ошибку, либо зависает, либо рекомендует обратиться в саппорт. В саппорте, как Вы правильно написали просто сливают.
Да, все верно.
В тексте просто написано, что Firebase перестал принимать карточки клиентов.
Если проблема в том, что вы не можете пополнить баланс - скорее всего, это какой-то баг, который затрагивает определенные карты, возможно не только российские. Если бы проблема была массовой - очень много приложений сейчас крашнулись бы.
Выпадающая ошибка при пополнении, как я понимаю, никакой инфы не дает?
Суть в привязке. Просто крутится прелоадер после ввода платёжных данных
У меня где-то в 2013 году была гривневая карта Сбербанка, по которой я не мог ничего купить в Google Play.
Использовали авторизацию на сайте по смс. К сожалению, как только начал РКН резать скорость твиттеру, так сразу пошли проблемы с доставкой смс. По конфигу сервер хранения был *.appspoT.COm. Насколько случайными были эти события не выясняли, но переехали на другие способы доставки смс с кодами и до сих пор не пожалели
Спасибо. Не думал в эту сторону. Возможно, действительно, как и с телегой под раздачу половина интернета пошла
Здравствуйте! А подскажите, пожалуйста, на какой сервис переехали? А что используете сейчас?
Firebase убрал несколько языков. тут нет политических причин.
Карточки какая то локальная проблема, у огромного количества людей карты российские принимаются, в том числе и у нас.
У нас возникла не очень хорошая ситуация при регистрации по СМС с российскими пользователями — ОТП не приходит на номера Билайна и Мегафона. Видно, что похожее бывало и у других. Кому как удалось решить схожие проблемы? Пробовались ли какие-то альтернативные сервисы, которые могли бы порекомендовать?
никак, перенесли авторизацию на платный sms.ru
Так и хочется съязвить по поводу твоих прошлых аргументов по использованию этой системы, но пожалуй не буду. Это боль! Желаю удачи в переезде и перетаскивании существующих клиентов.
как я понял автор не отказался от своих предпочтений к фб, но сожалеет, что фб отказался от него и прочих снгистов. Причём тут система то? Твиттер тоже говно из-за блока трампа?
Странно, что не было проблем с регистрацией по СМС. У нас недавно так встала колом вся работа. СМС упорно не приходили 3 дня на Теле2 и Мегафон. Поддержка только сказала, что знают об этом, но толком ничего не сделали, заработало само. Но было страшно. В это время просили клиентов использовать номера других операторов, чтобы зарегистрироваться и авторизоваться
Недавно появилась. Но пока не носит массовый характер
Вот прямо сейчас испытываем эти сложности, жуть какая то.
Вроде ок сейчас все с оплатой, как написали ниже. Для того, чтобы обезопасить себя от "сюрпризов", нужно в запасе на счете денюжки иметь на ЛС.
А так мне нравятся сервисы авторизации, возможности разворачивать БД и хранить файлы и благодаря этому мне, Android-разработчику, предоставлена возможность выполнять функции Backend-разработчика для некоторых проектов.
Желаю успехов.