Firebase: a nagy, a meh és a csúnya

Ugrottunk közvetlenül a Firebase-be, amikor a Google 2016 májusában bejelentette a Google I / O-n.

Egyoldalas React alkalmazást indítottunk, amelynek a Cordova-on keresztül mobilon és az Electronon keresztül asztali számítógépen kellett működnie. Tehát a Firebase varázslatos megoldásnak tűnt számunkra.

Most, hogy majdnem napi 7 hónapig dolgoztam a Firebase-zel, készen állok megosztani vele tapasztalatainkat.

A nagy

Valós idejű adatok

Igen, ez fantasztikus. Egy kis vízvezeték-szereléssel és néhány adatmegkötő varázslattal összekapcsolhatja a nézeteit az adataival, és azok varázslatosan megváltoznak, amikor az adatok megváltoznak.

Tapasztalataink szerint a teljesítmény állandóan nagyszerű volt, bár a Firebase-t a felhasználók millióinak szem előtt tartásával tervezték, így nem is karcoltuk meg a fenevad felületét.

Felhasználóinkat továbbra is lenyűgözi, hogy minden gyorsan fut.

Statikus tárhely a szteroidokon

A Firebase tárhely ingyenes CDN-t és SSL-t tartalmaz - mindez a Google Cloud platformon fut. Ez azt jelenti, hogy nem okozhat problémát a fájlok kiszolgálása számos felhasználó számára az egész világon.

Ha nulla konfigurációjú tárhelyet keres a következő egyoldalas alkalmazásához vagy statikus webhelyéhez, akkor valóban a Firebase-t választanám opciónak, még akkor is, ha Ön nem használja a Google egyéb szolgáltatásait.

szupererők

A Firebase számos olyan szolgáltatást és SDK-t is kínál Önnek, amelyek rendkívül egyszerűen integrálhatók, például:

  • OAuth-hitelesítés
  • Fájlok tárolása
  • Adatbázis mentések
  • Automagikus méretezés
  • CLI a bevetéshez és egyéb feladatokhoz
  • Ingyenes szint

A Meh

A konzol

Csinos, és számos dolgot lehetővé tesz, de nem annyira hasznos.

Az adatbázis-kezelő valóban egy dicsőített JSON-szerkesztő. Nagyszerű annak, ami van, de nem ez a teljes értékű megoldás, amire számítottam. Ha a WorkBench, a Postico, a Mongotron vagy akár a PHPMyAdmin oldaláról származik, ez egy szép játék lesz.

A konzol másik nagyon korlátozó aspektusa a részletes naplók vagy elemzések hiánya. Tekintve, hogy adatmegszállott-Google , erről beszélünk, furcsának tűnik. Bizonyára kap egy szép grafikont az adatbázis használatához, de nincs mód arra, hogy megtudja, hányszor töltött le egy fájlt a tárhelyről, hacsak nem maga hajt végre megoldást.

Szerver nélküli?

A Firebase statikus tárhely + API, semmi más. Ez a korlátozás nem a világ vége. Könnyen megoldhatja ezt a Node.js szerver használatával a Firebase másik kliensként, amelyre valószínűleg sok olyan általános feladatra lesz szüksége, mint például miniatűrök létrehozása, e-mailek küldése a felhasználóknak stb.

Nyilvánvalóan lehetőség lesz a Google Cloud Functions (még Alfában) használatára a Firebase programmal, de ki tudja, mikor. Lehet, hogy ezt a Google I / O 2017-ben jelentik be.

(Szerkesztés : 2017. március : A Firebase most jelentette be a Google Cloud Functions for Firebase alkalmazást)

( 2018. május szerkesztése : Ellenőrizze a Firebase Cloud Functions felülvizsgálatát)

A biztonsági szabályok meghatározása

A Firebase egy JSON-fájlt használ Javascript-kóddal a karakterláncokban az adatbázis és a tárhely szabályainak meghatározásához.

{ "rules": { "users": { "$uid": { ".write": "$uid === auth.uid" } } }}

Ez nem olyan rossz, mint amilyennek hangzik, mivel a Bolt segítségével kevésbé fájdalmas lehet ez a folyamat. Bár még a Bolt használatakor is, ha túllép egy egyszerű néhány tucat szabályon, ez a fájl fenntarthatatlanná válik az Italian Food ™ -nak.

Az olyan szolgáltatások, mint a Dream Factory és a Graph Cool, megfelelő eszközt kínálnak ehhez, anélkül, hogy elveszítenék józan eszüket.

Saját technológia

Amikor a Facebook úgy döntött, hogy bezárja a Parse-t, sok projekt nehéz helyzetbe került. Őszintén kétlem, hogy ez a Firebase-vel fog történni, de meg tudom érteni, hogy vonakodik-e összekapcsolni a technikai veremét egy harmadik fél platform-szolgáltatásként.

Nincs lehetőség helyi fejlődésre

Ha gyakran utazik, vagy rossz országú országban él, vegye fontolóra, hogy nem működhet együtt helyi telepítéssel. Nem csak a Docker vagy a Node használatával indíthatja el az API-t.

A csúnya

Korlátozott Javascript SDK

A Firebase számos olyan funkciót tartalmaz, amelyeket csak az iOS és az Android SDK-k valósítanak meg.

A legszembetűnőbb az offline kitartás hiánya a Javascript használatakor. Internetes, hibrid vagy ReactNative alkalmazása továbbra is működik, ha az eszköz pillanatra elveszíti a kapcsolatot. De ha bezárja az alkalmazást vagy a lapot, az adatai eltűnnek. Önön múlik, hogy kitartóan telepíti-e a gyorsítótárat. Ez valóban komoly törekvés lehet, főleg mobilon.

A Javascript SDK-nak nincs is módja az adatok gyorsítótárazására (nem biztos az iOS-ben vagy az Android-ban). Ha betölti, /productsés később később újra szüksége van rá, akkor újra kell töltenie, hacsak nem kézzel tartja a kapcsolatot a háttérben. Ezt nem nehéz megvalósítani, de megint miért nem nyújt mágikus módot a Firebase erre?

Nincs mód az adatok megfelelő lekérdezésére

Megtehet néhány nagyon egyszerű szűrést és lapozást, de azon kívül, hogy egyedül vagy.

Igazán? A Google olyan adatszolgáltatást nyújt, amelynek nincsenek keresési vagy szűrési képességei?

Igen. Igazán.

Ha a keresési funkciót szeretné megvalósítani, akkor vagy le kell töltenie az összes adatot és meg kell tennie az ügyfélben, egy olyan szervert kell használnia, amilyet az előbb leírtam, vagy egy harmadik féltől származó szolgáltatást, például az Elastic szolgáltatást.

A Firebase fejlesztői azt mondták, hogy ez terv szerint történik, így biztosítani tudják a nagy teljesítményt. RENDBEN. De miért ne engednék nekünk a felhasználóknak eldönteni, hogy megengedhetjük-e magunknak, hogy kifizessük a teljesítményárat a használati esetünkért?

Igen, és felejtsd el, hogy csatlakozásokat vagy bármi távolról kívánatosat csinálsz az adataiddal. Ami eljutott ...

Néma adatmodellezés

A NoSQL-kel való kapcsolatok kezelése nehéz, a Firebase-kel való kapcsolatok kezelése fájdalom a szamárban. - Baptiste Jamin

Amit mondott.

A Firebase adatbázis alapvetően csak egy hatalmas JSON fájl. Nincs mód kijelenteni , hogy sok vagy sok kapcsolat van. A gyakorlatban ez azt jelenti, hogy végül mindenütt lemásolja adatait.

Ez elsőre nem tűnik olyan rossznak. Végül is kényelmes beírni a felhasználó nevét egy csevegőüzenetbe, nem?

{ “author”:”Pepito Flores”, “message”:”I want a taco!”, “time”: 1484269756951}

A probléma akkor jelentkezik, amikor ténylegesen szerkesztenie kell a Pepito nevét, mivel mindenhol módosítania kell , ahol csak használta, és nem csak /users.

Mondani a felhasználóknak, hogy nem tudják szerkeszteni a nevüket, általában nem életképes lehetőség, ezért:

  1. Az adatok Firebase-be történő írásához és szerkesztéséhez szükséges ügyfélkód sok esetben Olasz Food ™ lesz.
  2. Könnyen szólva is nehéz dokumentálni, hogy hol másolta adatait.

Továbbá, mivel számos NoSQL adatbázis, például a MongoDB vagy a RethinkDB megtalálta a módját ennek a problémának a kiküszöbölésére, nehezen hiszem el, hogy a Google ezt nem tudja megoldani legalább ésszerű teljesítménnyel.

TL; DR

A Firebase fantasztikus egyszerű projekteknél vagy olyan kicsi funkciók fejlesztésénél, amelyek valós idejű adatokat igényelnek. Például egy csevegés vagy egy értesítési rendszer. Ezeket a lenyűgöző 30 perces bemutatókat láthatja a YouTube-on. Akkor is nagyon jól működik, ha az adatai egyszerű felépítésű dolgok , például egy online multiplayer játék szolgáltatásai.

Bármi, aminek összetettebb adatigénye van, a Firebase használatával nehézzé vagy akár lehetetlenné válik. A malmi adatbázis lekérdezésének rendszeres futtatása a legtöbb esetben értékesebb, mint a valós idejű adat, és bármennyire is lenyűgöző a dolgok változásának látása, valószínűleg nincs is szüksége rá.

Mint minden, válassza ki a megfelelő eszközt is a munkához.

Kiegészítés: amire a Firebase-nek fantasztikusnak kell lennie

  1. Valódi lekérdezési képességek. Keres, csatlakozik, az egész enchilada.
  2. Valamiféle hivatkozások kedvelik a MongoDB-t vagy a RethinkDB-t.
  3. Valódi offline kitartás a Javascript segítségével.
  4. Adj moar analitikát.
  5. Gyorsítótár API.

Ez minden.

2. kiegészítés: moar info

Ha ezt olvassa, akkor a Firebase-t fejlesztőként vagy CTO-ként értékelheti. Íme néhány más cikk, amelyek segíthetnek eldönteni, hogy a Firebase működhet-e az Ön számára, és érdemes-e további fejlesztési időt fordítani az értékelésre.

Firebase: A jó, a rossz és a csúnya - RaizException - Raizlabs fejlesztői blog

A Raizlabs szoftverfejlesztőként végzett munkánk részeként folyamatosan értékeljük a legújabb fejlesztési eszközöket ... www.raizlabs.com Miért ne használnánk a Firebase-t?

A valós idejű alkalmazások építése ma szabványos. A Crispnél a Firebase-t 9 hónap alatt használtuk a gyártásban, a… crisp.im- től kezdődően