Firebase – świetny backend dla nowoczesnej aplikacji

Post navigation

Kodowanie

Firebase – świetny backend dla nowoczesnej aplikacji

Rozpoczynając pracę nad projektem, każdy zespół zaczyna od wyboru technologii odpowiedniej do zrealizowania wyznaczonych problemów biznesowych aplikacji. Często firmy są wyspecjalizowane w niektórych językach, a nawet frameworkach. Mamy odpowiednich specjalistów, aby ruszyć z taką aplikacją. Jednak każdy w programowaniu powinien iść z duchem czasu, rozwijać siebie i popychać w rozwój swój zespół. Dziś na rynku każdego dnia pojawiają się nowe rozwiązania, nowe możliwości i nowe technologie. Nie od razu należy z nich korzystać i nie zawsze wszystko co nowe oznacza lepsze. Google dostarcza świetne rozwiązanie – Firebase.

Zastanawiamy się…

Początki implementacji wiążą się zwykle z implementacją rozwiązań, które istnieją praktycznie w każdej aplikacji. Trzeba rozwiązać problem bezpiecznego logowania i rejestracji, przechowywania danych w odpowiedni sposób, wymianę danych pomiędzy warstwą serwerową, a kliencką. Do tego dochodzi intensywne testowanie aplikacji, analityka naszego systemu, monitorowanie wydajności oraz oczywista rzecz jak marketing i utrzymywanie relacji z użytkownikami. Ten spory etap tworzenia tyczy się praktycznie każdego produktu informatycznego w postaci aplikacji.

Wybór

Zwykle do implementacji zabieramy się od dobrania odpowiednich technologii. Często są to technologie dobrze nam znane, takie, w których dobrze się czujemy razem z zespołem, potrafimy w szybki sposób reagować na problemy i takie, w których jesteśmy pewni, że podołamy każdemu wyzwaniu biznesowemu. Jednak z reguły musimy iść na jakieś kompromisy, a czasem wystarczy zmienić swoje myślenie i zastosować coś czego teoretycznie się nie robi. Wybór technologii kierowany jest strachem przed ryzykiem. Nie zawsze dobranie nowych na rynku narzedzi skutkuje porażką, a wręcz przeciwnie – może bardzo się opłacać. Przynajmniej czasowo.

Rozwiązania w chmurze

Zastanawiając się nad przyspieszeniem procesu implementacji podstawowych funkcjonalności natknąłem się na kilka rozwiązań typu BaaS (ang. Backend as a Service). Są to narzędzia pozwalające programistom odetchnąć. Nie trzeba “wymyślać koła na nowo” i od razu popchnąć projekt do przodu. Takim narzędziem jest właśnie Firebase ze stajni Google. Dzięki tej technologii w bardzo łatwy i szybki sposób otrzymamy to czego oczekujemy na samym początku naszej przygody z budowaną aplikacją. Posiada wszystkie niezbędne funkcjonalności konieczne do zbudowania jakiejkolwiek aplikacji od biznesowych, przez społecznościowe po gry. Dodatkowo wbudowane możliwości marketingowe pozwalają na kontrolowanie popularności naszej aplikacji.

Firebase

Jest to BaaS odpowiedzialny za naszą architekturę backendową, za marketing, monitoring wydajności, zarządzanie uploadowanymi plikami, testowanie, modyfikowanie aplikacji i przechowywanie w bezpieczny sposób. Istotą tego rozwiązania jest to, że nie potrzebujemy innych języków oprócz JavaScript, HTML i CSS (dla aplikacji webowych). Dzięki Firebase stworzymy każdą aplikację bez użycia backendu. Możemy podłączyć dowolny framework np. Angular czy React i współpracować z Firebase. Oczywiście niejednokrotnie będzie konieczne użycie jakiś bardziej zaawansowanych skryptów niż samo dodawanie i edycja danych w bazie – do tego posłuży nam wbudowana obsługa Google Cloud Functions, dzięki którym rozwiążemy większość naszych problemów typu endpointy, API, wysyłkę e-maili i wiele innych. Cloud Functions implementowane są za pomocą Node.js.

  • Realtime Database – baza danych NoSQL w postaci JSON. Wszystkie tworzone obiekty w bazie są synchronizowane natychmiast dzięki Service Workers na wszystkich naszych platformach (Web, Android, iOS). Dzięki Firebase nie musimy tworzyć swoich customowych Service Workerów – to jest wbudowane. Dodawanie i edycja danych jest natychmiastowa, bez zbędnych requestów i oczekiwania na odpowiedzi serwera. Każdy zapis (add, update, delete) wywołuje automatycznie pobranie zaktualizowanych danych z naszej bazy, dzięki czemu nie musimy już martwić się o to, by pobrać ponownie te dane lub je odświeżyć. Takie działanie możemy zaobserwować np. w Google Docs, gdzie kilka osób edytuje ten sam dokument tekstowy, a zmiany są natychmiast synchronizowane i wyświetlane wszystkim użytkownikom, którzy wyświetlają aktualnie ten plik u siebie.
  • Authentication – funkcjonalność obsługująca autoryzację użytkowników i zarządzanie nimi. Otrzymujemy zaawansowane narzędzie do kontrolowania naszych zalogowanych użytkowników. Mamy wgląd do tego kiedy dany użytkownik się zalogował, zarejestrował i jaką metodą. Istnieje możliwość określenia formatu e-maila, który zostanie automatycznie wysłany po zarejestrowaniu się nowego użytkownika, a także definiować czy użytkownicy powinni potwierdzić rejestrację przez taki e-mail. Kolejną rzeczą są metody logowania. Przez zgrabny panel mamy możliwość włączenia odpowiednich metod logowania się użytkowników. Jest ich dość sporo: klasyczny email i hasło, Facebook, Google, Twitter, GitHub, z potwierdzeniem telefonicznym, a także jako anonim. Taki admin panel pozwala nam również na blokowanie i usuwanie użytkowników, dzięki czemu nie musimy do naszej aplikacji dopisywać tej funkcjonalności.
  • Hosting – Google dla naszych aplikacji opartych o Firebase daje wbudowane miejsce do przechowywania. dzięki użyciu Firebase Tools mamy możliwość uploadu, a raczej deploy’a na serwery Google naszych aplikacji. Poprawny deploy ściśle łączy się z działaniem naszych Cloud Functions, a sam dostarczany w ten czas hosting poprawnie nam je obsłuży za pomocą wbudowanego Node. Domyślnie otrzymujemy darmową domenę dla aplikacji, która z automatu posiada certyfikat HTTPS, co dodatkowo zabezpiecza nasze dane. istnieje również możliwość podłączenia swoich domen do aplikacji. Łatwy konfigurator w trzech krokach pokazuje jak to łatwo zrobić – mi zajęło to dosłownie 30 minut nie mając o tym pojęcia. Podczas dewelopmentu aplikacji, konieczne jest również, aby istniało testowe środowisko, które posłuży nam za poligon zanim dotrze do końcowych użytkowników. W tym celu tworzymy osobny projekt Firebase, ale dzięki Firebase Tools i przyjaznemu CLI łatwo przełączymy się pomiędzy środowiskami i lokalnie uruchomimy aplikację z testowymi danymi. tak samo deploy – przełączamy się na testowe środowisko i wykonujemy deploy dla naszych testerów na całkowicie inną domenę z całkowicie innymi danymi, bezpiecznie, bez zaburzenia pracy środowiska produkcyjnego.
  • Cloud Functions – uruchamianie kodu backendowego bez pisania kodu w języku backendowym. Do tego przyda nam się node.js, który wykorzystuje Firebase do uruchamiania tych funkcji. Tutaj mamy możliwość tworzenia endpointów naszego API (nawet zewnętrznego), reagowania na zmiany w bazie, reagowania na konkretne zdarzenia w aplikacji czy też podczas logowania czy rejestracji użytkowników. W praktyce: nowy użytkownik rejestruje się do naszego systemu, funkcja wyłapuje takie zdarzenie i wysyła e-maila z prośbą o potwierdzenie adresu e-mail użytkownika. Klasyczny przykład. Innym przykładem może być edycja danych: użytkownik zmienia coś w naszym systemie co ma wpływ na wiele innych miejsc, wyliczeń, danych. Odpowiednio zaimplementowana funkcja może zareagować na zmianę w jednym miejscu i sama dostosować dane w innych miejscach. Jednokrotne utworzenie takiej funkcji reagującej pozwoli nam zapomnieć o takim problemie spójności.

Aplikacje mobilne i webowe

Powyżej opisałem tylko cztery spośród ponad szesnastu dostępnych funkcjonalności. Wiele z nich dotyczy tylko aplikacji mobilnych na Androida i iOS, jednak część (jak te powyżej) dotyczą wszystkich platform wliczając w to Web czyli JavaScript. Dla mobilnych można wyróżnić ficzery takie jak:

  • Cloud Messaging – automatyczne wysyłanie notyfikacji do użytkowników. Często z reklamami, dodatkowymi funkcjami naszej aplikacji lub zwyczajne powiadomienia o zdarzeniach wynikających z biznesowej potrzeby.
  • Crash reporting – rozpoznawanie przyczyn awarii naszej aplikacji poprzez ciekawe raportowanie o błędach, dzięki czemu dokładnie wiemy kiedy, jak i dlaczego nasza aplikacja się rozsypała.
  • Test Lab for Android – możliwość testowania aplikacji na fizycznych zdalnie uruchomionych urządzeniach. Mamy do wyboru kilka urządzeń, na którzych fizycznie możemy uruchomić naszą aplikację i sprawdzić czy wszystko będzie w porządku z naszą nową wersją gdy wypuścimy ją na produkcję.
  • Performance Monitoring – narzędzie do kontrolowania wydajności naszej aplikacji. Przejrzyste raporty pokażą nam gdzie jesteśmy w stanie zaoszczędzić na prędkości aplikacji. Zobaczymy jak zachowuje się nasza aplikacja przy obciążeniu użytkownikami i wiele innych.
  • AdMob i AdWords – narzędzia do obsługi reklam w aplikacji.
  • Remote Config – pozwala na modyfikowanie ustawień aplikacji bez konieczności uploadu nowej wersji. Przydatne narzędzie wtedy gdy chcemy zrobić czasową promocję w aplikacji lub uruchomić dodatkową funkcjonalność dla konkretnej grupy naszych użytkowników.

Istnieje również szereg wspólnych funkcji Firebase zarówno dla aplikacji mobilnych jak i webowych:

  • Realtime Database, Cloud Functions, Hosting, Authentication – opisane wyżej,
  • Cloud Storage – funkcjonalność pozwalająca na szybki upload i przechowywanie plików uzytkowników w celu późniejszego ich wykorzystania na potrzeby aplikacji,
  • Google Analytics – znane każdemu narzędzie do monitoringu przepływu, pozyskiwania i rodzaju użytkowników – tutaj zintegrowane ściśle z naszą aplikacją,
  • Invites – zapraszaj znajomych do korzystania ze swojej aplikacji i dziel się treścią.

W sumie

Podsumowując. Firebase to bardzo przyjemne narzędzie wspomagające programistę w tworzeniu swojej aplikacji. Jednak nie tylko małe aplikacje dobrze współpracują. Choć “małe aplikacje” w dzisiejszych czasach to pojecie względne. Zespół z powodzeniem może pracować nad systemem, który oparty jest o Firebase. Dzięki wielu rozwiązaniom dostępnymi od ręki Firebase z powodzeniem można rozważyć jako “pakiet na start” i oprzeć na nim architekturę swojej aplikacji. Ja tak zrobiłem i tworzenie aplikacji, które według niektórych miało by zająć około 8 miesięcy zajęła de facto 2,5 miesiąca.

Jeżeli jesteście ciekawi jak wygląda aplikacja w pełni oparta o Firebase zapraszam do odwiedzenia mojej – tej do której nawiązuję: https://monly.pl