Na konci minulého roku jsme pomáhali jednomu našemu klientovi s úpravou a optimalizací Firebase cloud functions. A tak jsme si řekli, že by bylo dobré toto téma trochu rozepsat, protože by to mohlo zajímat i další.
Co je to Firebase?
Nejdříve bychom se měli podívat na to, co je to Firebase. Aktuálně patří tato služba společnosti Google, která ji před nějakou dobou koupila, protože byla velmi populární hlavně mezi mobilními vývojáři, kteří tuto službu využívali pro analytiku a hlášení chyb. Služba je rozdělena do několika skupin:
- Build – který obsahuje části jako Authentification, Firestore, Storage, Functions a další
- Release a monitor – která obsahuje hlavně Crashlytics a Test lab
- Analytics – obsahující různé pohledy na analytická data
- Engage – kde najdeme A/B testování, cloud messaging a další
Jak vidíme, tak Firebase toho nyní obsahuje opravdu hodně a má různé aplikace od čistě analytického až po funkce, které vám mohou simulovat váš backend neboli server. Proto je velmi oblíbený u mobilních vývojářů, protože nepotřebují dalšího kolegu na „backend“ technologie, který by jim řešil otázku ukládání dat na server nebo práci s nimi na serveru.
Pak samozřejmě asi nejznámější funkce Firebase je Crashlytics – jak je z názvu možné rozpoznat, jedná se o službu, která vám pomáhá s řešením „crash“ aplikace neboli když mobilní aplikace spadne a vy jako vývojář dostanete základní informace, na jakém zařízením (myšleno OS verze, typ zařízení, verze aplikace) vaše aplikace a dokonce na jakém řádku ve vašem kódu, takže potom můžete velmi rychle takový „bug“ odchytit – opravit a vydat aktualizaci.
Z hlediska ceny je základní používání Firebase zdarma – tzv. Spark plan – kdy máte jisté omezení na počty nebo velikosti dat nebo requestů, ale pro začínající aplikaci je to většinou více než dostačující. Následný Blaze plan, je už placeny, ale ve formě, kolik toho „spotřebujete“ tak tolik zaplatíte. – více na stránce Pricing.
Co to jsou Cloud functions?
Na stránkách Firebase najdete hlášku ke Cloud functions (které patří do skupiny Build), že se jedná o „běh serverových aplikací bez starosti o vlastní server“ – někdy také najdeme, že se jedná o ServerLess řešení – tzn., že zde není žádný server. To samozřejmě není pravda, protože tyto cloud functions běží na serverech Google, ale z pohledu uživatele Firebase žádný server nevidí.
O co se tedy jedná – jedná se o jednotlivé funkce, které jsou napsány v JavaScriptu případně v TypeScriptu, který následně běží na NodeJS platformě. Máte připravenou jejich knihovnu pro práci s Firestore (což je v podstatě vaše databáze), případně s dalšími částmi Firebase. Takže máte vše jednoduše předpřipraveno a můžete si napsat svoji logiku, kterou potřebujete. Pravděpodobně se jedná o nejjednodušší řešení pro běh NodeJs aplikace, když potřebujete pracovat s daty, nebo například s dalšími API, které využivá vaše mobilní aplikace. Zajisté je to pro spoustu developerů lákavá představa, jak využít server technologie bez starostí.
Jak začít s Cloud functions?
Jednoduše můžete začít s dokumentací Firebase – například zde. Kde se dozvíte, že potřebujete Firebase Project, následně na svém počítači NodeJs a jejich Firebase CLI (command line interface) a samozřejmě nějaký terminál. Až budete mít vše nainstalováno, tak můžete přejít na incializaci projektu přes
firebase login
firebase init functions
a následně doporučujeme začít projekt psát v TypeScript více v jejich tutoriálu.
Emulátor pro firebase jako dev tools
Pokud máme nainstalovaný Firebase CLI, tak bychom měli mít přístup k emulátoru, který nám dokáže některé funkce z Firebase emulovat na našem lokálním počítači. Emulátor dokáže emulovat například Firestore (databázy) nebo třeba i spouštění Cloud functions, to znamená, že si můžeme naše napsané funkce i debugovat. Abychom mohli dané funkce debugovat a máme typicky jejich „spouštění“, např. pomocí plánovaného spouštení funkce jednou za 24 hod. Tak v tomto případě musíme nejprve v příkazovém řádku zadat:
firebase functions:shell --inspect-functions
Tím se nám spustí možnost si pomocí prohlížeče dostat k NodeJS debuguru a to tak, že si zobrazíme DevTools neboli Nástroje pro vývojáře v Chrome a pokud máme spuštěno, tak uvidíme ikonku NodeJs v horní liště viz obrázek.
Následně se dostaneme do NodeJs debuger a vidíme připojení, které akutálně máme a můžeme si přepnout na záložku sources a označit si, jaký řádek chceme označit pomocí breakpointu.
Na závěr
Pro mnoho vývojářů se jedná o velmi zajímavou možnost, jak si rozšířit možnosti, které jdou využít při fungování jejich aplikací. Takže pokud nemáte vlastní server nebo si nechcete platit ihned vlastní hosting nebo prostor pro vlastní serverovou aplikaci, tak je Firebase Cloud function skvělou možností, jak jednoduše získat backend. Pro nás tím, že si píšeme vlastní backend část webových aplikací ve frameworku NestJS, což je progresivní framework v NodeJS. Tak nám dává jasnou logiku se zajímat i o Cloud functions, protože mají společnou platformu NodeJS. Samozřejmě má to svá specifika, ale NodeJS a Typescript jsou společným jmenovatelem. Takže, pokud byste chtěli pomoci se svým Firebase Cloud functions nebo obecně s webovou aplikací, tak se neváhejte nám ozvat na e-mail hello@visionslabs.io.