Firebase

Salta a la navegació Salta a la cerca

Firebase és una suite o conjunt de serveis dedicats al back-end d'aplicacions web, iOS, Android i altres plataformes. Aquest conjunt de serveis, proveeix assistència a desenvolupadors de múltiples plataformes a l'hora de gestionar les bases de dades, fer l'anàlisis d'aquestes i moltes més utilitats relacionades amb les dades que és necessari guardar per a futur ús en una aplicació. La característica que defineix aquesta suite, és la facilitat d'ús i la mínima interacció amb el back-end que aquesta ofereix.

Funcionalitats que ofereix[modifica]

Database en temps real[modifica]

Disponible per iOS, Android, web, C++ i Unity.

Es tracta d'una base de dades NoSQL que es troba al núvol. Aquesta emmagatzema dades en format JSON, les quals són sincronitzades entre usuaris i dispositius. Es fa servir per actualitzar dades ràpidament entre dispositius de forma ràpida. Les dades, una vegada sincronitzades, es poden accedir sense connexió.

Així doncs, quan es produeix un canvi en un client o plataforma, aquest canvi es guarda a la base de dades al núvol, i als altres dispositius s'actualitza de forma automàtica si estàn connectats a la xarxa.

Aquesta funcionalitat és útil si es volen fer canvis a una aplicació i que aquests canvis siguin instantànis i disponibles a l'instant per tots els usuaris.

Un exemple simple de funcionalitat, podria ser una aplicació amb diferents sales de xat, on a cada sala cada usuari pot afegir canvis, sent aquests canvis un nou missatge a la sala.

Reports de crash[modifica]

Disponible per iOS i Android.

És una utilitat que genera informes d'errors que puguin sorgir en executar aplicacions tant d'Android com d'iOS. A més de generar els informes, els ordena i organitza de forma que sigui més fàcil accedir-hi.

Així doncs, si es té una base d'usuaris que fan servir una aplicació concreta i és té aquest servei funcional, cada vegada que l'aplicació resulti en un comportament inesperat, el succés es tindrà en constància i es guardarà un informe sobre aquest.

Cloud Firestore[modifica]

Disponible per iOS, Android i web.

Primer es va fer la database en temps real, i posteriorment es va crear Cloud Firestore. Aquesta funcionalitat no és més que una millora de l'anterior, oferint pràcticament el mateix servei. No obstant, aquesta versió està enfocada per a un ús global, i en general per aplicacions amb potencial d'escalabilitat.

Les majors diferències són les següents:

Documents dins de Col·leccions

A diferència de la database en temps real, les dades de la firebase estan organitzades amb una estructura arbòria. Així, hi ha conjunts de dades anomenats documents on hi ha tot tipus de dades, des de enters a strings, fins a objectes JSON complets. Aquests documents estan agrupats dins de col·leccions, que son els nodes de l'arbre. Així col·leccions condueixen a subcol·leccions, que tenen documents dintre seu. Mitjançant aquest mètode, s'aconsegueix un accés més eficient.

Cloud Firestone es troba als servidors de Google Cloud, a diferència de la database en temps real, cosa que ens dóna marge per a una capacitat d'emmagatzematge molt més gran, i per tant, potenciar la possibilitat d'una aplicació per a escalar, si és necessari.

A més, firestore és una database multi-regió, per tant les dades que s'hi pugin queden emmagatzemades a diferents servidors repartits per tot el món, per a facilitar l'accés a cada zona a les dades i, a més, afegir redundància a les dades que guardem.

Una altre diferència rau en el fet de que, la forma de pagament és diferent. Amb les dues aplicacions es paga en base a la quantitat de dades descarregades i emmagatzemades, però en la firestore es focalitza molt més en les crides de write i read. Així, si tenim una aplicació que fa poques crides de write i read però son per a quantitats grans de dades, ens sortira millor fer servir la firestore.

Autenticació[modifica]

Disponible per iOS, Android, web, C++ i Unity.

Funcionalitat dedicada a la gestió d'usuaris, que permet l'afegotd'usuaris i la subseqüent personalització d'una aplicació.

Ens permet mantindre comptes per a una aplicació concreta mitjançant parells compte de correu/contrasenya, autenticació telefònica, comptes de Google, Twitter, Facebook, accès amb GitHub i més. La seguretat ve donada per part de Google, sent aquesta altament robusta.

Funcions al cloud[modifica]

Disponible per iOS, Android, web, C++ i Unity.

Es tracta d'un Back-end as a Service, que permet executar funcions Javascript a la base de dades que es tingui al cloud mitjançant events generats per Firebase. Per exemple executar una funció si es crea un nou usuari, o si simplement s'escriu a la base de dades. Amb aquesta funcionalitat s'obren noves possibilitats a l'hora de crear aplicacions per als usuaris d'aquesta, sobretot en el context de l'automatització d'accions.

És aquest tipus de mecanisme el que permet, per exemple, les notificacions a les xarxes socials quan succeeix una situació en la que el nostre usuari està involucrat o és possible que hi estigui relacionat.

Per ara, el tipus d'events que es suporten són els següents:

  • Events per a bases de dades en temps real: executa una funció quan es genera un event d'escriptura en una ruta en una base de dades.
  • Events d'autenticació: executa una funció quan un nou usuari és creat o quan un usuari és borrat.
  • Events analítics: executa una funció quan es registra un nou event de conversió.
  • Events d'emmagatzemament al núvol: executa una funció si hi ha algun canvi en aquest tant sigui una càrrega, actualització o borrat de carpeta.
  • Events núvol publicació-subscripció: executa una funció quan un nou missatge és rebut en un tema de subscripció-publicació de Google Cloud.
  • Events HTTPS: executa una funció quan es fa una petició a un punt final.

Emmagatzematge al cloud[modifica]

Disponible per iOS, Android, web, C++ i Unity.

Si en una aplicació es necessita emmagatzemar arxius generats per els usuaris, tals com imatges i vídeos, necessitem un lloc on guardar-los, i Firebase ho soluciona amb emmagatzematge al cloud. El cloud que es proposa té les avantatges que està gestionat per Google Cloud, i per tant s'assegura que no es perdran les dades mitjançant còpies de seguretat. Evidentment, la capacitat de l'emmagatzematge és molt alta, ja que la intenció és que hi hagi potencialitat per a escalabilitat, i per tant, s'assegura que podem arribar a emmagatzemar petabytes, si escau. També es disposa d'un sistema de seguretat per a establir permisos per a usuaris o conjunts d'usuaris amb l'us de regles de seguretat per a emmagatzematge. Finalment, també es consta de resiliència a la xarxa, de mode que si un usuari es queda sense connexió quan està pujant o baixant un arxiu, la operació es queda a mitges fins que l'usuari no torni a estar online, i es continua i finalitza automàticament.

El sistema s'organitza amb buckets de Google Cloud. Un d'aquests buckets seria com una carpeta que podem accedir a dins d'aquest cloud, on hi tenim un sistema de fitxers normals, amb el típic sistema d'arbres d'arxius.

Hosting[modifica]

Disponible per web.

Es tracta del hosting de tota la vida, amb facilitats introduïdes per Firebase. S'assegura una connexió segura mitjançant SSL, de la forma més ràpida possible amb l'ús de discs durs en estat sòlid (SSD) que es troben a xarxes de distribució de contingut(CDN) repartides pel món. Es subministra també mètodes per a tindre una web funcional de forma ràpida gràcies a les eines de consola de comandes de Firebase. A més, es suporta el versionament, per a poder tornar enrere si el que es desenvolupa no és desitjable.

Test lab per a Android[modifica]

Com el nom ja indica, es tracta d'un entorn per a fer proves amb aplicacions que es s'estiguin desenvolupant. Un problema molt comú que es troba en el desenvolupament d'aplicacions mòbils, és la gran varietat de dispositius que existeixen al mercat. Entre aquests, ens podem trobar grans diferències, des de diferents tipus de pantalles, a l'absència o presència de sensors, o fins i tot teclats físics. És per això, que tals aplicacions necessiten una bona quantitat de testeig, i aquí és on entren en joc eines com el test lab de Firebase.

Amb aquest test lab, s'emulen grans quantitats de dispositius i situacions, per a garantir que l'aplicació en procés funcionarà en el màxim de dispositius possible. Tot això s'aconsegueix amb l'emulació de tots aquests dispositius, i si s'observen errors o comportaments no esperats, es generen informes d'errors, per a poder una aplicació estable.

Amb el test lab de Firebase, es poden arribar a testejar totes les APIs d'Android en molts dispositius, per a filtrar errors completament.

A més, el mateix test lab s'inclou al IDE que proporciona Google per al desenvolupament d'aplicacions d'Android, el qual és l'Android Studio. D'aquesta manera es facilita molt més el procés, ja que l'usuari no s'ha de moure per diferents ambients.

També es disposa d'un bot que encara automatitza més tot el procés, batejat amb el nom de Robo, el qual es dedica a realitzar la gran majoria d'accions possibles en les aplicacions sotmeses a prova, generant un log de tot el que succeeix durant tals proves.

Supervisió del rendiment[modifica]

Disponible per iOS i Android.

Amb aquesta funcionalitat es pot veure com es comporta una aplicació quan el conjunt dels usuaris la fa servir normalment. Proporciona informació sobre la velocitat a la que una aplicació s'engega, el temps que tarden les peticions HTTPS, i bastant més. En el que se centra aquest servei és bàsicament en monitoritzar el rendiment en general de l'aplicació seguint mètriques de temps, quantitat de dades que es maneja i el ràtio d'èxit per a certes tasques.

Aquesta funcionalitat ens ofereix l'oportunitat d'observar en quines situacions l'aplicació necessita millorar i en quines altres es comporta eficientment.

Google Analytics[modifica]

Disponible per iOS, Android, C++ i Unity.

Afegint aquest conegut servei a la ja llarga llista de la que es beneficia Firebase, s'aconsegueix la possibilitat d'estudiar les preferències dels usuaris a per a les aplicacions que es desenvolupin amb aquest.

Amb Google Analytics, es pot establir quin tipus de dades es vol monitoritzar, quins events són els que interessa investigar, amb la fi de millorar en quina direcció es vol enforcar una aplicació. Així, es pot determinar quin tipus de públic i com aquest fa servir una aplicació i millorar-la en conseqüència.

Missatgeria a través del Cloud[modifica]

Disponible per iOS, Android i web.

Es tracta d'un sistema de notificacions o missatges multiplataforma, per a poder enviar missatges a un, dos, un grup o tots els dispositius d'una aplicació, ja sigui la part iOS, Android o web de la aplicació.

Normalment aquesta funcionalitat es fa servir per a notificar a usuaris, per exemple, que hi ha disponibles noves dades per a descarregar com mail, o actualitzacions de l'aplicació. Encara que podem discernir dos tipus de missatges:

  • Missatges de notificació: Són les notificacions típiques i les que es mostren a l'usuari final.
  • Missatges de dades: Són missatges que s'envien a l'aplicació mateixa per a que realitzi alguna funció concreta.

Prediccions[modifica]

Disponible per iOS, Android, C++ i Unity.

Aquesta novedosa funcionalitat, es serveix de les dades que recolleix una aplicació, del comportament dels usuaris i el tipus de dades que consumeixen per a poder fer prediccions de les accions d'aquests usuaris mitjançant l'ús de tècniques de machine learning de Google, i per tant crear experiències d'usuari d'una forma molt més precisa i personalitzada per a cada usuari.

L'objectiu central d'aquest servei és augmentar la retenció d'usuaris, millorant l'experiència d'aquestos a l'hora de fer servir una aplicació.

Així, el servei analitza els diferents perfils d'usuaris, i ens indica les possibles accions futures d'aquests, per a que es pugui decidir quins missatges enviar a cada un d'aquests grups, per tal d'aconseguir un ús continuat de tal aplicació.

Links dinàmics[modifica]

Disponible per iOS, Android, C++ i Unity.

Bàsicament el que s'ofereix amb aquesta funcionalitat, és que els links que es proporcionin puguin redirigir a un usuari a qualsevol de les plataformes en les que una aplicació s'hagi desenvolupat i que en qualsevol d'aquestes s'arribi al mateix contingut. És a dir, que si tenim per exemple un link que ens porta a una pàgina web on hi ha informació sobre un vol en concret d'una companyia de vols, amb el preu, la quantitat d'escales, la data i tots els petits detalls d'un vol, que si s'obre el link en un telèfon mòbil i l'aplicació del mateix servei també està instal·lada en aquest, es porti a l'usuari directament a l'aplicació, on se li servirà exactament la mateixa informació. De fet, aquest servei funciona encara que l'aplicació no estigui instal·lada en el dispositiu, ja que se li indica a l'usuari la disponibilitat a instal·lar aquesta, i si l'usuari l'instal·la, al finalitzar el procés d'instal·lació s'obre el link que havia premut prèviament i s'accedeix a la informació que es volia visualitzar inicialment.

Configuració remota[modifica]

Disponible per iOS, Android, C++ i Unity.

Amb aquesta funcionalitat, s'ofereix la possibilitat de poder canviar el comportament d'una aplicació remotament. Així, si es té usuaris de diferents països, es pot oferir l'aplicació en l'idioma correcte, o si per exemple es vol canviar l'aparença de l'aplicació per motius d'un event estacional o espontani. També per exemple per fer testeig A/B, que consisteix en oferir diferents versions de l'aplicació a un públic en concret i una versió a l'altre meitat, per a poder dictaminar quina versió de l'aplicació té millor acollida.

Tot això sense la necessitat de fer actualització alguna sobre l'aplicació.

És una eina molt útil si per exemple es volen fer canvis ràpidament a l'aplicació, sense molestar a l'usuari.

Invitacions[modifica]

Disponible per iOS, Android, C++ i Unity.

Es tracta de facilitar el mètode pel qual es comparteix l'aplicació. Mitjançant un botó o un mètode específic, s'envia una invitació a un altre usuari, amb l'objectiu que aquest es descarregui l'aplicació i la provi. El que Firebase ens proporciona en aquest cas és la simplicitat de tal invitació, recopilant de la llista de contactes del dispositiu els possibles recipients d'aquesta, i generant links que portin directament a la millor experiència d'usuari.

Indexació d'aplicacions[modifica]

Disponible per iOS i Android.

És un servei que s'encarrega d'introduir una app al motor de cerca Google Search. Així, si l'aplicació fa servir aquest servei, quan els usuaris fàcil cerques usant Google, si el que busquen coincideix amb els continguts de l'aplicació, aquesta sortirá als resultats de la cerca. A l'entrada que surt als resultats, s'inclou l'opció d'instal·lar aquesta, o directament accedir si ja la tenim instal·lada.

AdMob[modifica]

Disponible per iOS, Android, C++ i Unity.

Aquest és un manager de publicitat per a aplicacions, que es serveix de Google Analytics per oferir el millor tipus de publicitat per a cada usuari, coneixent les inclinacions d'aquest.

AdMob té a l'abast milers d'ofertes publicitaries de les quals escollir i mostrar als usuaris de les aplicacions.

És un mètode més per a fer ingressos a partir de mostrar publicitat dins de les aplicacions.

Per a començar a util·litzar aquest servei, s'ha de crear una compta d'AdMob, i activar un o més AdUnit ID's que són identificadors especials per a cada lloc on es mostri publicitat a les aplicacions objectiu.

AdWords[modifica]

Disponible per iOS i Android.

Un altre manager de publicitat que ve de la mà de Google. De la mateixa manera que AdMob, aquest fa servir les bonances de Google Analytics per a classificar els anuncis que es serviran a cada usuari. Amb aquest manager, es poden crear llistes de màrqueting, basades en les audiències del Google Analytics, és a dir, focalitzar els anuncis per a cada perfil d'usuaris.

Links relacionats i bibliografia[modifica]

Firebase en general

Documentació Real-Time Database, Explicació del funcionament de Real-Time Database

Documentació de Cloud Firestore, Explicació d'un desenvolupador sobre Cloud Firestore

Documentació sobre Firebase Authentication

Documentació sobre Firebase Cloud Functions, Tutorial sobre Cloud Functions, Explicació sobre Cloud Functions

Documentació sobre Firebase Cloud Storage, Post d'un desenvolupador amb consells de com fer servir Cloud Storage

Documentacio sobre Firebase Hosting

Documentació sobre Firebase Android Test Lab

Documentació sobre Firebase Performance Monitoring

Documentació sobre Google Analytics amb Firebase

Documentació sobre Firebase Cloud Messaging, Detall sobre tipus de notificacions amb Cloud Messaging

Documentació sobre Firebase Predictions

Documentació sobre Firebase Dynamic Links

Documentació sobre Firebase Remote Config

Documentació sobre Firebase App Indexing

Documentació sobre AdMob

Documentació sobre AdWrite