{"id":14279,"url":"\/distributions\/14279\/click?bit=1&hash=4408d97a995353c62a7353088166cda4ded361bf29df096e086ea0bbb9c1b2fc","title":"\u0427\u0442\u043e \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435: \u0432\u044b\u0435\u0445\u0430\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0438\u043b\u0438 \u0437\u0430\u0435\u0445\u0430\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435?","buttonText":"","imageUuid":""}

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!, граждане...

0
18 комментариев
Написать комментарий...
Стартапер-пессимист

Никаких санкций в сервисах от Гугл нет (только для крыма). Вы не умеете пользоваться.

Ответить
Развернуть ветку
Stas Klymenko

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

Я ставил и русский и украинский - консоль не менялась, оставалась на английском. Поэтому, если санкции и ввели, то по отношению украинского язык тоже. 

Искать негодования в принципе работы саппорта я бы тоже не стал. У Гугла есть две проблемы - саппорт и документация. И то и другое, по сути, отсутствует, либо работает через одно место. 

А по поводу карт пользователей так и не понял из текста.
У вас часть проекта лежит на Firebase. Вы баланс пополняете и можете использовать ресурсы сверх лимита. 
Каким боком здесь пользователи и их карты? Или они напрямую взаимодействуют с каким-то инструментом Firebase и оплачивают какую-то сумму? Не увидел этого в тексте. 

Ответить
Развернуть ветку
Денис Гордиенко
Автор

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

Ответить
Развернуть ветку
Stas Klymenko

Да, все верно. 
В тексте просто написано, что Firebase перестал принимать карточки клиентов. 

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

Выпадающая ошибка при пополнении, как я понимаю, никакой инфы не дает? 

Ответить
Развернуть ветку
Денис Гордиенко
Автор

Суть в привязке. Просто крутится прелоадер после ввода платёжных данных

Ответить
Развернуть ветку
Viacheslav K

У меня где-то в 2013 году была гривневая карта Сбербанка, по которой я не мог ничего купить в Google Play. 

Ответить
Развернуть ветку
Artur Vitt

Использовали авторизацию на сайте по смс. К сожалению, как только начал РКН резать скорость твиттеру, так сразу пошли проблемы с доставкой смс. По конфигу сервер хранения был *.appspoT.COm. Насколько случайными были эти события не выясняли, но переехали на другие способы доставки смс с кодами и до сих пор не пожалели

Ответить
Развернуть ветку
Денис Гордиенко
Автор

Спасибо. Не думал в эту сторону. Возможно, действительно, как и с телегой под раздачу половина интернета пошла

Ответить
Развернуть ветку
Даниил Червяков

Здравствуйте! А подскажите, пожалуйста, на какой сервис переехали? А что используете сейчас?

Ответить
Развернуть ветку
Иван Пегашев

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

Ответить
Развернуть ветку
Alexander Marcinkevicius

У нас возникла не очень хорошая ситуация при регистрации по СМС с российскими пользователями — ОТП не приходит на номера Билайна и Мегафона. Видно, что похожее бывало и у других. Кому как удалось решить схожие проблемы? Пробовались ли какие-то альтернативные сервисы, которые могли бы порекомендовать?

Ответить
Развернуть ветку
Денис Гордиенко
Автор

никак, перенесли авторизацию на платный sms.ru

Ответить
Развернуть ветку
Виталий Подольский

Так и хочется съязвить по поводу твоих прошлых аргументов по использованию этой системы, но пожалуй не буду. Это боль! Желаю удачи в переезде и перетаскивании существующих клиентов.

Ответить
Развернуть ветку
Сергей Пархоменко

как я понял автор не отказался от своих предпочтений к фб, но сожалеет, что фб отказался от него и прочих снгистов. Причём тут система то? Твиттер тоже говно из-за блока трампа?

Ответить
Развернуть ветку
Денис Перевозчиков

Странно, что не было проблем с регистрацией по СМС. У нас недавно так встала колом вся работа. СМС упорно не приходили 3 дня на Теле2 и Мегафон. Поддержка только сказала, что знают об этом, но толком ничего не сделали, заработало само. Но было страшно. В это время просили клиентов использовать номера других операторов, чтобы зарегистрироваться и авторизоваться

Ответить
Развернуть ветку
Денис Гордиенко
Автор

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

Ответить
Развернуть ветку
Ivan Korzennikov

Вот прямо сейчас испытываем эти сложности, жуть какая то.

Ответить
Развернуть ветку
Kirill Sushilnikov

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

А так мне нравятся сервисы авторизации, возможности разворачивать БД и хранить файлы и благодаря этому мне, Android-разработчику, предоставлена возможность выполнять функции Backend-разработчика для некоторых проектов.

Желаю успехов.

Ответить
Развернуть ветку
15 комментариев
Раскрывать всегда