Якуб Фийалковски

Firestore & Firebase - отличные технологии. Они позволяют нам очень быстро создавать некоторые функции. Если продемонстрировать заинтересованным сторонам, что вы создали функции для совместной работы в режиме реального времени практически в кратчайшие сроки, вы получите «вау-эффект», столь необходимый в некоторых областях. Однако у Firestore также есть много проблем, которые, на мой взгляд, перевешивают преимущества в большинстве более сложных случаев.

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

Посты в серии:
1. Почему Firestore, часть I: причины полюбить [вы сейчас ее читаете].
2. Почему Firestore, часть II: причины ненавидеть
3. Почему Firestore, часть III: 6 вещей, которые нужно знать перед использованием Firestore
.
4. Почему Firestore, часть IV: как избежать этого [будет опубликовано около 9 декабря].

Подходит ли вам Firestore? Как и все в IT - зависит от обстоятельств. Прочтите, чтобы узнать почему!

Легко интегрировать

Firestore предлагает отличные библиотеки для мобильных устройств. Android (Kotlin!), IOS (Swift!), Flutter (Dart!) - все они работают волшебным образом. Бесплатно вы получаете сервисы, которые дополняют друг друга с помощью эргономичных и простых в загрузке библиотек. С библиотеками Firestore вы получаете все плюсы пакета Firebase - аутентификацию, бессерверность, хранилище, машинное обучение и другие, прекрасно сочетающиеся с особенностями языка.

Единственный минус в том, что они широко распространены - как только вы их получите, вы начнете использовать их повсюду. Во всех слоях. Как правило, это плохо, но давайте будем честными: большинству небольших приложений не нужны дополнительные абстракции, и прямое использование библиотек - это хорошо.

Автономные возможности

Это основная черта Firestore. Поистине потрясающая функция - она может работать (до некоторой степени) в автономном режиме. Легко. Если вы уже обращались к данным ранее, вы можете сделать это снова без подключения к Интернету. Вы даже можете сохранить там данные без активного подключения. Библиотеки Firestore обрабатывают всю синхронизацию, объединение данных, уведомления и другие проблемы.

Одна только эта функция делает Firestore достойным внимания для некоторых из ваших функций. Возможность легко просматривать страницы в автономном режиме - большое преимущество перед конкурентами. Firestore - не единственное решение, поддерживающее это (есть Realm), и другие могут предоставлять дополнительные ручки настройки, но некоторым приложениям это просто не нужно. И Firestore дает вам очень мощное и очень простое решение для начала.

Бэкэнд не нужен… иногда

Платформа Firebase (частью которой является Firestore) может быть жизнеспособным «серверным» вариантом для небольших, ориентированных на пользователя приложений. Если вы используете его вместе с другими решениями SaaS (электронная почта, голосовые вызовы и т. Д.), Вы даже сможете создать не такое уж маленькое приложение, не создавая никакой традиционной серверной системы.

Пакет Firebase предоставляет вам

  1. Auth - Firebase Auth,
  2. Хранилище - Облачное хранилище Firebase,
  3. Бессерверный - облачные функции Firebase,
  4. Базовое машинное обучение - Firebase ML,
  5. A / B-тесты и пользовательская конфигурация - удаленная конфигурация Firebase,
  6. Распространение и мониторинг приложений - Firebase App Distribution & Crashlytics,
  7. Многие, многие другие.

Являясь продуктом Google, он также хорошо интегрируется с GCP. Он все больше и больше сливается с ним с каждым выпуском, и я полагаю, что скоро эти два будут полностью объединены.

Наличие всех этих решений в одном месте, управляемых одними и теми же службами IAM и одинаково настроенных, дает вам большое преимущество с самого начала. Это позволяет вам сосредоточиться на том, что важно, оставляя все мелкие детали на усмотрение Firebase. Даже если в конечном итоге вам понадобятся более продвинутые серверные функции, вы всегда можете использовать Облачные функции и сделать это обычным способом.

Примеры

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

Если вам нужны офлайн-возможности, использование Firestore для этого также отлично - мы использовали этот подход в Activy, и это творило чудеса.

Нам нужно там, чтобы записывать GPS-треки так же надежно, как и спортивные устройства (например, часы), но, поскольку это обычное игровое приложение, оно должно делать это в очень суровых условиях без специального оборудования. Прерывистый сигнал GPS, отсутствие интернета, очень медленное соединение, прерывистое соединение с Интернетом, очевидное соединение - обо всем этом нужно позаботиться. С Firestore мы смогли справиться со всеми случаями и предоставить нашим пользователям решение, которое работает везде, даже в очень удаленных районах, без особой разработки.

Есть масса других мест, где Firestore - отличное решение, но простота Firestore может сказаться. Там, где Firestore сияет и упрощает вещи вначале, он может сделать ваши волосы седыми после того, как приложение станет достаточно сложным. Как и во всем, что связано с программированием, вам нужно учитывать плюсы и минусы, думать о будущем и выбирать то, что лучше всего для вашего приложения.

Вы хотите узнать, как работают цены на Firestore или какие ловушки ждут вас, если вы хотите должным образом защитить его? Может быть, вы хотите создать приложение на основе аукционов, которое требует очень быстрых обновлений? Мы узнали об этом на собственном горьком опыте. Мы платим тысячи за ненадлежащее использование, ломаем работающие приложения из-за развертывания, преодолеваем все недостатки Firestore - мы были там. Прочтите следующую серию, чтобы узнать больше о нашей истории!

Прочтите 2-ю часть нашей серии статей Почему Firestore, чтобы узнать о самых больших ограничениях Firestore.