Seleziona una pagina

Google Firebase

Cos'è e a cosa serve

Google Firebase cos'è e come funziona

Cos’è Google Firebase

Firebase è una Piattaforma di Sviluppo Software lanciata nel 2011 da Firebase Inc. e acquisita da Google nel 2014.

Partito come Database in Tempo Reale, ora ha 18 servizi (di cui 4 attualmente in versione beta) ed API dedicate.

L’intera Piattaforma è una soluzione Backend-as-a-Service sia per Applicazioni Mobile che basate sul Web che include servizi per creare, testare e gestire App.

Le soluzioni BaaS (Backend-as-a-Service) consentono di eliminare la necessità di gestire database back-end e di procurarsi il corrispettivo hardware.

Possono invece essere collegati direttamente alla nostra App tramite API dedicate per ciascun servizio separato.

Nel caso di Firebase, ce ne sono 7 che coprono tutto lo spettro delle tecnologie di back-end per un’app.

L’elenco delle piattaforme con le quali Firebase si integra include Android, iOS, Web e Unity.

Ma c’è molto altro da imparare sulla piattaforma, poiché include vari servizi per lavorare con un back-end gestito.

Nella sezione successiva forniremo uno sguardo generale su alcuni servizi disponibili sulla piattaforma Firebase.

Quali sono i Servizi di Google Firebase

Visitando la Pagina Ufficiale del Prodotto, noteremo che Firebase ha 3 diverse Categorie di Servizi disponibili per le Applicazioni dei Clienti.

Essi sono divisi in:

  • Servizi per la Creazione di App
  • Garanzia di Qualità
  • Strumenti per la Crescita Aziendale

I servizi principali e più interessanti sono contenuti nella prima categoria e riguardano tutto ciò che serve per creare una App da zero.

Andiamo a vederli nello specifico.

Databases

Firebase Realtime Database

Firebase Realtime Database è stato il primo prodotto ad essere creato dalla compagnia di San Francisco, ed è dunque il servizio più stabile e consolidato di tutta la Piattaforma.

Realtime Database è essenzialmente un Cloud Storage NoSQL che può essere collegato con l’applicazione per fornire accesso in tempo reale ai Dati attraverso diverse Piattaforme.

Uno dei vantaggi è che il Database può funzionare offline, memorizzando nella cache i Dati della memoria del dispositivo e sincronizzandolo dopo essersi ricollegato a Internet.

I dati sono archiviati in JSON e possono essere cercati tramite Query dagli Utenti.

In termini di sicurezza, Realtime Database fornisce l’accesso ai Dati basato su autorizzazioni.

Questo può essere fatto con l’aiuto di Firebase Authentication e dando le autorizzazioni in base all’identità dell’utente o delle regole di sicurezza.

Cloud Firestore

Cloud Firestore è un altro database NoSQL in tempo reale ospitato su Cloud disponibile su Firebase.

A differenza di Firebase Realtime Database, Cloud Firestore è progettato per l’uso aziendale, il che comporta scalabilità, modelli di dati complessi e opzioni di query avanzate.

La console di Firebase può essere utilizzata per visualizzare i dati in entrambi i database.

Un altro punto comune è che esistono SDK per lavorare con il codice lato server di entrambi i Database.

Questi sono disponibili per Python, Node.js, Golang, Ruby, PHP, Java, .NET e C #.

Cloud Storage

Cloud Storage è fondamentalmente un Google Cloud per contenuti generati dagli utenti in-app, come file di foto, audio o video.

Autenticazione ed Hosting

Firebase Authentication

Firebase Authentication è una funzione di Autenticazione Google su misura per le App che utilizzano Firebase.

Consente di utilizzare una UI (User Interface) pre-compilata o di crearne una personalizzata per l’autenticazione utente, che potrà fare il Login tramite credenziali personalizzate, e-mail o social media.

Servizio di Hosting

Se vogliamo creare una normale Web App o una Progressiva, oppure una Landing Page per Mobile, avremo sicuramente bisogno di un Servizio di Hosting.

Firebase offre un Web Hosting Statico per applicazioni create con HTML, CSS e JavaScript.

In termini di sicurezza, utilizza i protocolli HTTPS e SSL standard per il trasferimento di File ed altri tipi di Dati.

Applicazioni Serverless

Cloud Functions

Cloud Functions è un’altra integrazione dell’omonimo prodotto Google presente in Firebase.

È uno strumento per eseguire codice back-end dal Cloud sulla base di Eventi.

Il modo in cui Cloud Functions suggerisce di eseguire la nostra App è quella che di solito viene chiamata Architettura Serverless, cioè Senza Server.

Questo tipo di Architettura comporta la costruzione di applicazioni come un insieme di funzioni separate, isolate nel Cloud e collegate tra loro tramite API.

Questo tipo di Architettura Applicativa è diventata sempre più popolare alcuni anni fa, e Google rimane uno dei principali Provider di Tecnologia Serverless.

Capacità di Machine Learning (o Apprendimento Automatico)

ML Kit

ML Kit è un Prodotto attualmente in Versione Beta, ma in realtà offre già funzionalità di Apprendimento Automatico per le nostre App Mobile (Android e iOS).

Come suggerisce la Pagina Prodotto, ML Kit è personalizzato per i casi d’uso più comuni rintracciabili tra i prodotti Google (ad es. Googe Lens).

Pensiamo alla scansione di codici a barre, al rilevamento dei volti, all’etichettatura / riconoscimento delle immagini, al riconoscimento del testo ecc.

ML Kit è predisposto sia per l’utilizzo su Cloud che on-device con API dedicate.

Servizi di Testing di Google Firebase

Test Lab

Test Lab è un servizio che fornisce l’accesso a dispositivi fisici e virtuali per testare la propria App in un Ambiente Reale.

Può essere integrato in un Ambiente di Test esistente come Android Studio o in Strumenti di Test del Browser.

Test Lab può fornirci Rapporti sugli Arresti Anomali e Screenshot dei risultati dei Test.

Nel caso in cui non si abbiano Test da mettere in atto, esiste persino un Bot in grado di eseguire la scansione della propria applicazione, trovare Bug e fornire Report.

L’aspetto negativo è che Test Lab non si integra con gli Strumenti di Test iOS.

Crashlytics

Crashlytics è uno strumento di Crash-Reporting in Tempo Reale in grado di risolvere in maniera rapida ed indolore i problemi di stabilità della nostra App.

I Rapporti sugli Arresti Anomali verranno forniti tramite elenchi strutturati e prioritari di problemi collegati alla fonte dalla quale provengono, in modo da rendere più agevole l’organizzazione del processo di correzione.

Performance Monitoring

Il Performance Monitoring porta automazione al Tracking delle prestazioni della nostra App in Tempo Reale.

Questo strumento fornisce Insights sulle prestazioni basate sulla loro Causa Principale, tracciando non solo la Performance dell’App, ma anche la qualità della Connessione al Server ed i Tempi di Risposta su diversi tipi di Rete.

App Distribution

App Distribution è un servizio di distribuzione di Beta-Testing, attualmente e non ironicamente in Versione Beta.

App Distribution aiuta a creare un singolo hub per due versioni dell’applicazione (iOS e Android) ed a gestire builds pre-release utilizzando una CLI (Command Line Interface o Interfaccia a Riga di Comando).

Firebase Analytics

Quando la nostra App viene pubblicata, Google Firebase mette anche a disposizione numerosi Servizi Standard e Specifici che ci potranno aiutare a capire in che modo gli Utenti interagiranno con l’App a livello di Business.

Google Analytics in primis, visto che è uno strumento notoriamente integrato nella piattaforma Firebase.

Google Analytics fornisce metriche preziose sulla Fidelizzazione degli Utenti, sul loro Tasso di Coinvolgimento o su qualsiasi altro tipo di Dati sul loro comportamento.

Su Firebase, le funzionalità di Reporting di Google Analytics sono illimitate e gratuite.

Possiamo scegliere quali eventi monitorare ed integrarlo con 52 altri partner di Analytics visibili sulla Pagina Dedicata del sito Firebase.

Configurazione e Miglioramenti

Cloud Messaging

Cloud Messaging è un servizio di messaggistica che consente di inviare notifiche tra il Server e i Device dell’Utente.

Possiamo personalizzare i Tipi di Messaggi da inviare a gruppi specifici di persone in base a iscrizioni, modelli di comportamento, impostazioni del profilo, ecc.

La Messaggistica Cloud è integrata in Firebase Google Analytics, in modo da poter monitorare istantaneamente i risultati di invio e configurare la messaggistica senza codifica.

Dynamic Links

È piuttosto difficile prevedere dove un utente cercherà un determinato contenuto, quando si dispone del prodotto su più piattaforme.

Supponiamo che un utente stia esplorando la nostra App Web e cerchi un determinato elemento.

Dopo pochi clic, lascia un po’ di dati personali, ma la volta successiva decide di utilizzare l’App Mobile.

Qui potremmo riscontrare una frequenza di rimbalzo (Bounce Rate), perché un’app appena installata richiederà di ripartire da capo con il tracciamento delle sue azioni.

Dynamic Links può aiutarci a trasferire gli utenti tra le piattaforme, salvando i dati personali e mostrando agli utenti esattamente ciò che stavano navigando in precedenza.

Remote Config

Remote Config è uno strumento che fornisce un’utile opzione per aggiornare la nostra App senza ripubblicarla.

Per esempio un cambiamento nella Combinazione di Colori o aggiornamenti del Contenuto in tutta l’App.

Firebase Predictions

Firebase Predictions è un servizio di Previsione che è anche un’estensione di Machine Learning che utilizzerà i nostri Dati Analitici per definire i Gruppi di Utenti e fornirci Insights su possibili scenari futuri.

Questo ci aiuterà a prevedere il possibile Tasso di Abbandono o di Conversione, calcolare le Revenue o aumentare la Fidelizzazione dei Clienti.

Firebase A/B Testing

Il Firebase A/B Testing è uno strumento per condurre esperimenti di Marketing sotto-forma di A/B Test.

Visto che tutti i servizi sono collegati a Google Analytics, potremmo misurare istantaneamente tutti i risultati dei Test e capire anche quanto risultino efficaci per i nostri Utenti.

Per il momento, questo servizio è solo in Beta.

In-App Messaging

Questo Tool ci aiuterà ad inviare Messaggi mirati e personalizzati agli Utenti che usano spesso la nostra App.

Fondamentalmente si tratta di uno Strumento di Targeting che ci aiuta a far compiere agli Utenti determinate azioni all’interno dell’App.

Anche In-App Messaging è in Versione Beta, ma può già essere utilizzato assieme a Google Analytics e Firebase Predictions per fare Targeting Intelligente.

Come abbiamo visto, Firebase è una Piattaforma davvero enorme che offre servizi per qualsiasi scopo.

Per molto tempo, è stata considerata piuttosto limitata e non in grado di sostituire l’intero Backend.

Ma con le ultime versioni, Firebase ha reso possibile la creazione di Applicazioni Serverless e ha aperto il codice sorgente dei suoi SDK.

Ma, oltre agli aspetti positivi, ha ancora i suoi lati negativi. Vediamoli entrambi di seguito.

I Vantaggi di Google Firebase

Funzionalità del Database

Anche se dipende sempre dal Budget che avremo a disposizione, Google Firebase offre database abbastanza robusti da utilizzare con le nostre App.

Sia Realtime che Firestore possono essere ridimensionati in termini di dimensioni, offrendo una soluzione gestita completamente sicura, che consente comunque un facile accesso ai Dati tramite la console Firebase.

Gli aggiornamenti dei Dati e l’accesso offline rendono i database utilizzabili per l’applicazione in tempo reale, oltre a mantenere sincronizzati più DB.

Ampio Numero di Servizi

Firebase offre molti prodotti per permettere alla nostra App di funzionare.

Possiamo scegliere tra due differenti tipologie di Database (Realtime Database o Firestore Database), archiviare file multimediali nel Cloud e persino creare Applicazioni Serverless con l’aiuto di Funzioni Cloud integrate.

Gratuito in Partenza

All’inizio, Firebase non richiederà alcun pagamento per la maggior parte dei suoi servizi e rimarrà completamente gratuito.

Ciò ci consentirà di capire se si adatta alla nostra applicazione e di comprenderne tutte le peculiarità.

Una volta raggiunta una determinata quantità di memoria del database o quando avremo bisogno di un servizio specifico, è sempre possibile scegliere tra i piani a pagamento.

La Pagina dei Prezzi contiene un calcolatore regolabile su diversi parametri, una pratica standard per i Servizi Cloud.

Documentazione Concisa

L’intera Piattaforma di Google Firebase è documentata con diligenza.

Troviamo infatti una buona Documentazione Tecnica, documentazione sulle API, riferimenti agli SDK e tutto ciò che rende qualsiasi Prodotto più facile da usare e accessibile per l’Utente.

Esplorando la Pagina Prodotto di Firebase noteremo che contiene tutte le informazioni necessarie riguardanti integrazioni, piattaforme disponibili, guide ed elenchi di tecnologie supportate.

Inoltre esiste anche il canale YouTube di Firebase, piuttosto attivo in termini di rilascio di nuovi video e notizie.

Interfaccia Utente Accessibile e Facilità di Integrazione

Nella maggior parte dei casi, Firebase richiede una conoscenza minima del linguaggio di programmazione e suggerisce integrazioni tramite la sua interfaccia utente.

Mentre qualcuno può definirlo un aspetto negativo in termini di flessibilità, può essere invece un vantaggio che va ad eliminare la necessità di configurazioni complesse, permettendo quasi a chiunque di costruire un’App da zero.

Funzionalità di Hosting Statico

L’Hosting Firebase viene fornito con una Content Delivery Network (CDN) integrata con la piattaforma Google Cloud.

Fondamentalmente, una CDN è una Rete di Server distribuiti che garantiscono una consegna rapida dei contenuti in tutto il Mondo.

Nel caso di Firebase, l’utilizzo dell’Hosting Statico semplifica la creazione di one-pagers o di App Web con facilità.

Gli Svantaggi di Google Firebase

Limitazioni di Firebase Realtime Database

Su Firebase utilizzeremo principalmente il Realtime Database come Memoria Principale, cosa che ha i suoi svantaggi.

Uno dei problemi principali che presenta sono le limitate capacità di Query al suo interno, rendendo difficile interrogarlo.

Il Realtime Database non offre alcun modo per filtrare le capacità, poiché l’intero DB è un enorme file JSON, il che rende piuttosto difficile eseguire Query complesse.

Un altro punto da considerare riguarda anche Firebase Realtime DB e la sua modellazione dei dati.

A causa della struttura del “database come singolo file”, non è possibile implementare relazioni tra elementi di dati.

Ma, per essere obiettivi, entrambi i punti non sono validi quando parliamo di Firestore DB, purché ci si concentri su modelli di dati più complessi e si rendano le query più avanzate.

Quindi potremmo pensare di passare a quest’ultimo, se avessimo questo tipo di necessità.

Blocco del Fornitore

Il problema con il Blocco del Fornitore non è correlato a Firebase come Piattaforma in sé e per sé, ma riguarda l’utilizzo delle soluzioni BaaS in generale.

Tuttavia, finché Firebase non fornirà strumenti di migrazione per trasferire i nostri Dati su di un’altra Piattaforma, questo rimarrà uno svantaggio.

Meno Supporto per le APP iOS

Anche se Firabase ha una natura cross-platform, ci si accorgerà presto che la maggior parte delle sue funzionalità si rivolgono esclusivamente alla Piattaforma Android (ovviamente).

Test Lab, ad esempio, può essere facilmente integrato con Android Studio e supporta un’ampia gamma di dispositivi Android per i Test.

Per quanto riguarda iOS, solo nel 2018 il team Test Lab ha annunciato il lancio del supporto per la versione beta chiusa per i dispositivi Apple, che include l’interfaccia utente di base e alcune device di test disponibili.

Come Iniziare con Google Firebase

Per capire come interagire con Firebase e utilizzarlo per la nostra App, forniremo di seguito alcuni Link essenziali ai principali strumenti, documentazioni e riferimenti API:

  • Firebase Console: tutti i Progetti Firebase possono essere gestiti da un’unica posizione, una Console Firebase. Si tratta di un Pannello di Gestione unificato in cui vedere tutte le nostre App connesse ai servizi Firebase. I progetti fungono da contenitori virtuali per il codice dell’app e le impostazioni del server, duplicati su Google Cloud Platform.
  • Firebase CLIusando la Firebase Command Line Interface è possibile interagire con i dati memorizzati nei database, raggiungere le configurazioni del server e distribuire progetti Firebase.
  • Documentazione su Firebase: una risorsa generica per tutti i servizi forniti dalla piattaforma, le sue documentazioni API, le disponibilità e le librerie.
  • Pagina dei Prezzi: l’offerta a pagamento di Google Firebase è divisa in 3 Piani che vanno da Spark (app gratuite / piccole), Flame (prezzo fisso / dimensioni medie) e Blaze (pay-as-you-go / dimensioni aziendali). I dettagli dei prezzi sono individuali per ciascun servizio separato, quindi troveremo queste informazioni in blocchi dedicati nella Pagina dei Prezzi.

Alternative a Google Firebase

Considerando le funzionalità di Firebase, potremmo capire se è adatto alla nostra applicazione.

La scelta di un Vendor è sempre al 50% di natura Tecnologica, mentre l’altra metà ricade sulla reputazione e sulla fiducia del fornitore.

Quindi, se si ritiene che Firebase non abbia nulla da offrire per il nostro Progetto, possiamo prendere in considerazione delle Alternative presenti sul Mercato.

Aws Aurora

Si tratta di un altro colosso dell’Industria, essendo legato ad Amazon.

Il vantaggio principale del servizio AWS in BaaS rispetto a Firebase è che utilizza un database relazionale che garantisce una migliore struttura e query dei dati.

È più personalizzato per le applicazioni aziendali ed ha il supporto per la migrazione dei dati da una piattaforma all’altra.

Questo punto potrebbe superare le funzionalità specifiche della tecnologia BaaS, in quanto non ci sarà alcun Blocco del Fornitore.

Parse Server

Anche se la Piattaforma Parse come la conoscevamo è scomparsa nel 2017, una sua versione open-source è ancora disponibile.

Tra i suoi vantaggi ci sono tonnellate di funzionalità pre-build, personalizzazione totale e scelta dell’ambiente di hosting.

D’altra parte, la sua CLI è piuttosto instabile ed è supportata da una comunità di sviluppatori e non da una grande azienda.

Back4App

È un’implementazione di Parse Server che sostanzialmente ne ha preso i lati negativi e li ha sistemati.

Back4App offre funzionalità simili a quelle di Firebase, con la sola eccezione che è più flessibile in caso di modellazione dei dati e personalizzazione delle query del database.