Firebase як бекенд для будь-яких застосунків, та як використовувати Firebase-сервіси

💡 Усі статті, обговорення, новини про Mobile — в одному місці. Приєднуйтесь до Mobile спільноти!

Привіт, мене звати Вадим Фрунза, я Flutter Developer в ІТ-компанії Customertimes. Я працюю розробником останні 3 роки, як кросплатформний розробник на Flutter.

Час від часу при розробці нового проєкту стикаєшся з тим, що маєш обрати певний бекенд. Ти починаєш шукати можливі рішення чи повноцінний окремий бекенд з сервером, а, можливо, навіть думаєш використати вже готові платформи.

Саме тому сьогодні я розповім про чудове рішення для Flutter та будь-яких мобільних чи вебзастосунків — Firebase-сервіси, які можуть підтримувати бекенд застосунку.

Цей матеріал буде корисний для тих, хто щось чув про Firebase або дотичні сервіси, але особливо не заглиблювався в це. А, може, ви взагалі не маєте уявлення, що це таке і який функціонал має. Тоді ця стаття для вас буде також корисною!

Disclaimer: текст не містить інструкцій з підключення Firebase до програми Flutter. Якщо вам потрібні ці дані, ви знайдете їх тут.

Що таке Firebase

Firebase була розроблена компанією Google як платформа для Backend-as-a-Service (BaaS). Вона пропонує розробникам інструменти та сервіси, необхідні для створення та підтримки бекенду їхніх застосунків. Послуги включають хостинг, автентифікацію користувачів, базу даних в режимі реального часу та інші функції.

Так чому ж варто використовувати Firebase? Як розробника Flutter мене вражає в Firebase те, наскільки легко її можна використовувати та встановлювати.

База даних Firebase (Firestore або Realtime Database) — це база даних NoSQL, завдяки чому вона дуже зручна для користувача. На відміну від SQL, де таблиці і рядки є нормою, бази даних NoSQL на кшталт Firebase використовують колекції зі списком документів без таблиць.

Firebase можна використовувати для обробки авторизації, сповіщень, зберігання файлів та інших речей, які можуть знадобитися вашим застосункам. А оскільки Google часто оновлює Firebase, нові функції завжди доступні. Крім того, консоль Firebase має гарний дизайн і робить взаємодію між Firebase Console та застосунком дуже простою.

Сервіси Firebase

Firebase має багато сервісів та рішень, зокрема Cloud Firestore, Realtime Database, Firebase Authentication, Cloud Storage, Cloud Messaging, навіть Firebase Machine Learning тощо. Нижче я поясню переваги деяких з основних сервісів:

Database

Кожному застосунку потрібна база даних. Для цього Firebase пропонує Cloud Firestore та Realtime Database. Обидві є базами даних NoSQL, але Cloud Firestore є переробленою та покращеною версією Realtime Database.

Основні відмінності між Cloud Firestore і Realtime Database полягають у моделі даних та масштабованості:

Cloud Firestore використовується частіше, тому що вона працює у більшій кількості випадків. Ось як виглядає база даних на платформі Firebase:

База даних має чимало цікавих функцій, наприклад, конструктор запитів. Використовуйте його для пошуку за певними критеріями:

Firebase також пропонує функцію сховища, де можна зберігати файли та керувати ними. Я рекомендую управляти файлами у ньому так само, як ви керуєте даними в базі даних: зберігайте файли за допомогою прямого маршруту до відповідного елемента в базі даних, коли це необхідно.

Cloud Functions

Якщо ви хочете виконати якусь логіку за межами програми (можливо, з міркувань безпеки або просто тому, що не хочете зберігати цю логіку у файлах програми), у Firebase є рішення під назвою Cloud Functions. Воно дозволяє виконувати логіку у хмарі, тому ви зможете запускати код мобільного бекенду без керування серверами.

Cloud Functions використовує JavaScript-код, який виконується у середовищі Node.js. Ось приклад. Ця функція надсилає пуш-сповіщення, коли реєструється новий користувач:

Ще один приклад: оновлення даних у Firestore, коли новий файл завантажується до сховища Firebase Storage:

Firebase Auth

Багато програм потребують функції авторизації, для чого можна використовувати Firebase Auth. Це безпечний і простий у використанні сервіс автентифікації, який підтримує безліч платформ та може бути інтегрований з іншими службами Firebase для плавної роботи та бездоганного UX.

Підключити його до програми дуже просто, використовуючи лише кілька рядків коду.

Безпека

У вашому застосунку має бути авторизація, яка дозволяє використовувати Cloud Firestore, оскільки Firebase має правила безпеки для кожної бази даних.

Це логіка, яка написана на платформі Firebase для захисту ваших даних. Її можна налаштовувати різними способами і вона повинна бути написана переважно синтаксисом JavaScript з деякими відмінностями.

Ось основне правило доступу до операцій читання та запису лише для авторизованих користувачів:

Ще однією безпековою функцією, яку варто розглянути, є рішення AppCheck.

AppCheck перевіряє автентичність запитів, зроблених до API, і служб Firebase. Це дозволяє розробникам визначати власні правила, щоб переконатися, що запити надходять з надійних джерел, а не від ботів чи інших автоматизованих систем, які можуть використовувати вразливості у вашій програмі.

AppCheck пропонує додатковий рівень захисту від зловмисних атак, щоб ваші програми були безпечними.

Інші корисні сервіси

У Firebase є багато рішень і сервісів, які можуть допомогти вам під час створення програми, але якщо я спробую перерахувати усі тут, це буде дуже довга стаття. Натомість я коротко опишу кілька моїх улюблених:

  • Cloud Messaging — сервіс відправки пуш-повідомлень і повідомлень на мобільні пристрої та вебзастосунки;
  • Machine Learning — набір інструментів для створення та розгортання моделей машинного навчання у хмарі;
  • Firebase Extensions — готові модулі з можливістю налаштування, які можна додати до проєктів Firebase для автоматизації типових завдань;
  • Remote Config — сервіс, що дозволяє розробникам віддалено налаштовувати поведінку свого застосунку, не вимагаючи нового релізу;
  • Google Analytics — інструмент для відстеження поведінки користувачів та використання застосунку, включаючи залучення, зацікавлення та утримання користувачів;
  • Performance Monitoring — сервіс, який допомагає розробникам виявляти та діагностувати проблеми з продуктивністю в їхніх програмах, зокрема повільні мережеві запити та збої.

*Примітка: користування деякими з цих послуг є платним. Дізнайтеся більше про ціни тут.

Висновок

Незалежно від того, створюєте ви просту програму для мобільних пристроїв чи складну вебпрограму, Firebase може надати необхідні інструменти та ресурси, які допоможуть вам досягти цілей розробки.

Це потужна універсальна платформа розробки зі зручним інтерфейсом, гнучкими цінами та простою інтеграцією з іншими службами Google, що робить її привабливою для розробників усіх рівнів знань.

Якщо ви створюєте застосунок, особливо з нуля, Firebase має інструменти, необхідні вам для створення, тестування та розгортання високоякісного продукту.

👍ПодобаєтьсяСподобалось20
До обраногоВ обраному12
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Вітаю, мені потрібна допомога з оновленням даних користувача на firebase authentication

О, я як раз недавно прикручував за допомогою firestore та cloud functions серверну підтримку для in-app purchases у flutter-додатку. A cтаттю все одно було цікаво читати.

Дякую за статтю! 💙

Дякую за цікаву статтю. Я Automation QA, і активно вивчаю Node.js, і дуже часто чув про Firebase. Можливо, це буде тупе питання для декого, але я не сильно досвідчений в serverless тулзах, але хотілось би дізнатись, якщо Firebase дає стільки корисних сервісів з під коробки для серверної частини, то навіщо тоді писати свій сервер за допомогою Node.js? В чому ключові переваги і недоліки? Дякую зазадалегідь всім, кто відповість.

я би порівняв це з службою таскі і власним авто

1. служба таксі визначає вартість поїздки. щось не подобається — можеш шукати іншу служба на півдорозі.
2. на таксі не поставиш спойлер і вініли, про які завжди мріяв. ну чи це буде коштувати досить дорого.
3. якщо не сподобався стиль водіння таксиста — служба підтримки буде розглядати твою скаргу в залежності від тарифного плана.

своя ж машина — це відовідальність. не пить, не спать, техогляд робить. зате як захочеш — так і тюнінгуєш, їздить — куди скеруєш

Хороша аналогія, по факту так і є.

Сервер ти можеш під себе налаштувати як хочеш, але все лягає на твої плечі, підтримка і розробка потрібного функціоналу. Завдяки серверу можна робити свою унікальну і специфічну логіку, маштубавати як хочеш, але для цього потрібно більше зусиль і знань, тому зазвичай це робить бек-енд розробник або фулл-стек.
А Firebase дозволя отримати бажаний результат вже в готових рішеннях які підходять під купу випадків. Але це вже готова логіка, яку ти так гнучко не налаштуєш як сервер, але зазвичай це і не так часто потрібно. Плюс є деякі умови використання платформи, не всі рішення можна використати в безкоштовному тарифному плані і якщо проект маштабується то ціна на підтримку даного проекта можна вирости в залежності від функціоналу який використовується.

Тому багато залежить від самого проекту, знаючи який буде проект і функціонал, можна вибрати найоптимальніше рішення для нього.

Спробувавши Firebase, склалося погане враження стосовно ide-servise, бо менш зручний термінал і загалом все було якесь гальмівне.
З того, що спробував та зі статті не зрозумів, які переваги в Firebase над serverless/CloudNative реалізацією через Google Kubernetes Engine, тобто нахіба воно здалося, якщо є значно функціональніший, популярніший і перпективніший GKE, в рамках якого краще розвиватися спеціалісту.

Все залежить від проекта на якому має використовуватись та чи інша технологія, так GKE може бути більш функціональним, але питання в тому чи воно доцільно до того проекту.

Фішка Firebase є в швидкому і легкому розвертувані так скажем «серверної сторони», з якою можна одразу ж працювати без великих зусиль і поріг входу буде нижчим ніж у того ж GKE, тобто з Firebase зможуть працювати одразу більша кількість девів.
Також Firebase має велику кількість сервісів яка може покрити багато потреб проекту.

Тому тут більше від проекта залежить, при розробці якогось величезного проекту на який виділено багато часу і в цього проекта є специфічні задачі які не покривається Firebase, то використання GKE буде кращим варіантом в цьому випадку.
Але якщо всі задачі можна покрити в рамках Firebase, то я би його використав, так як він буде простіше. Також Firebase можна використати як додаткову тулзу до існуючого проекта, не обовʼязково на ньогу перекидувати всю логіку і підтримку додатка.

Уххх... як на мене, то є дуже нішевий інструмент.

Від GCM, звісно важко відкрутитись, адже він тримає монополію на пуші. Від crashlytics — теж, оскільки вони викупили основного конкурента.

Щодо решти, використовували database та storage.

Скажу вам так ... складається враження, що команда firebase ненавидить flutter, але їх змушують його підтримувати:
— бібліотеки від firebase — одні з найпроблемніших з точки зору міграції на нові версії... постійно на них тратиться час
— не можна просто десь вказати токен додатку ... вони зробили налаштування настільки складним, що для цього зробили аж окремий cli інструмент.
— бібліотеки для flutter немає ... тобто вони є, але то проксі в native. Але 90% api — то просто api на сервер ... не зрозуміло чому воно не на dart.
— firebase messaging ... ехх ... доводиться його викидати і самому писати binding-и на java та swift.
— не працює на desktop ... я розумію про messaging, але не розумію про крешлітику та аналітику.
— realtime база — крута, але api — ну таке собі ... хочеться роботу з ним акуратно загорнути в адаптер і забути, що це бачив. Ну і легко прострелити собі ногу і отримати безлімітний рахунок від гугла.
— storage — те ж саме що і realtime.

Погоджуюсь, що є нюанси над якими варто ще попрацювати гуглу.

Теж була проблема з кросс платформою, якщо на iOS і Android все чудово, то на інших платформах може бути обмеження по функціоналу.
Також api до баз могло бути в кращому виді ніж воно є.
Якщо робити якусь спецефічну виборку, воно може важко сприйматись при читанні коду, але тут є деякі рішення:
— можна обгорнути ці виклики в окремий клас і зробити свій адаптер під себе, потім з цього можна буде зробити свій власний package і потім його використовувати в інших місцях
— також можна використати Cloud Functions і тримати там всю цю логіку роботи за базою
Але так, для цього потрібно буде докласти додаткові зусилля.

Дякую за статтю.
Використовую Firebase для пет-проєктів за замовчуванням.
Простий, весь мінімум (auth, db, messaging, analytics) є + хостинг, якого вистачає.

Дякую за статтю і за те, що ділишся досвідом!

Игрался когда-то с этой платформой и очень понравилась тоже. Очень просто интегрировать со своим приложением. Надеюсь, что эта платформа будет и дальше развиваться и гугл её вдруг не расстреляет.

Поки натяків, що вони можуть закинуть цей проект нема, тай дуже багато проектів на ній вже побудовано. Думаю максимум, що можуть зробити, це припинити розробку нових фіч для платформи.

Проклинаю за код у картинках!

Моя помилка, вирішив використати тузлу для презентування коду. Погоджуюсь що це була не дуже хороша ідея, але це чисто базові прикладити, щоб мати уявлення про синтаксис і як воно виглядає

Якого рівня мідли такого рівня і стаття... Даруйте за прямолінійність.

Стаття написана для «ознайомлення» з Firebase, на початку є дисклеймер цього. Цікаво як можна по цьому визначити рівень спеціаліста, але дякую за коментар))

Підписатись на коментарі