1 of 66

​

​

Data

On Fire

Building real-time

apps with Firebase

​

​

​

Nitya Narasimhan

DevFest Montreal

Nov 18, 2017

http://bit.ly/dataOnFire-nov2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

2 of 66

#DataOnFire

#DevFestMontreal

@nitya

@firebase

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

3 of 66

About Me

I am a PhD, an innovator, an engineer with >20+ yrs of software & systems development experience, a community manager & a mom. I’m passionate about helping local businesses & communities leverage technology. I believe the only certainity in tech is change.

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

4 of 66

Goals

As a beginner:

what is Firebase &

what’s new in 2017?

​

As a developer:

what are my data options &

how do I get started (Firestore)?

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

5 of 66

AS A BEGINNER

WHAT IS FIREBASE AND

WHY SHOULD I CARE?

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

6 of 66

Okay, so you’re a

developer

​

​

And you build & deploy

mobile & web apps

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

7 of 66

She’s a

small biz owner

​

​

She owns a hair salon &

She wants an app built

Meet Maya.

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

8 of 66

She’s a

casual gamer

​

​

​

​

​

She’s looking for an

interesting game to play

Meet Geeta.

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

9 of 66

​

​

You think:

Hey I can build that!

Just tell me your

requirements.

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

10 of 66

MAYA’S REQUIREMENTS

  • Make appointments
  • Send alerts
  • Show & sell products
  • Send & share coupons
  • Mobile + web coverage
  • Cheap to maintain

Maya’s ASKS

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

11 of 66

  • Make appointments
  • Send alerts
  • Show & sell products
  • Send & share coupons
  • Mobile + web coverage
  • Cheap to maintain
  • Read/Write/Edit Data
  • Push Notifications
  • Media/File Storage
  • User Auth & Invites
  • Cross-Platform libs
  • Hosting / Serverless

YOUR TRANSLATION

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

12 of 66

GEETA’S REQUIREMENTS

  • Play across devices
  • Alerts to new levels
  • In-app “power” buys
  • Invite friends to play
  • Personalize to experts
  • Special rewards

GEETA’s ASKS

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

13 of 66

  • Play across devices
  • Alerts to new levels
  • In-app “power” buys
  • Invite friends to play
  • Personalize to experts
  • Special rewards
  • Real-time data sync
  • Push notifications
  • Analytics / Conversion
  • User Auth & Invites
  • Auth / Configurable UI
  • Prediction / Retention

YOUR TRANSLATION

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

14 of 66

Limited Budget | Deliver in 4wks | Support UI/UX updates

One small thing..

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

15 of 66

​

​

You think:

You can’t be serious!

And then you think:

Can I outsource

a few things?

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

16 of 66

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

17 of 66

Image Credit:

https://firebase.google.com

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

18 of 66

Image Credit:

https://firebase.google.com

Outsource DevOps

Implicit Security

Frictionless Integrations

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

19 of 66

Image Credit:

https://firebase.google.com

FOCUS ON FRONT-END UI/UX

Benefit from pre-built (& managed) SDKs, libraries & APIs for backend services

Many SDKs open-sourced. And many custom plug-ins for front-end web frameworks

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

20 of 66

Image Credit:

https://firebase.google.com

INTEGRATE BACKEND SERVICES

Develop & Test

Grow & Engage

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

21 of 66

Image Credit:

https://firebase.google.com

Develop & Test

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

22 of 66

Image Credit:

https://firebase.google.com

Grow & Engage

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

23 of 66

Image Credit:

https://firebase.google.com

BUILD

THE APP

TEST

THE APP

MONETIZE

THE APP

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

24 of 66

What’s new

in 2017?

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

25 of 66

“A technology without community means nothing”

Sam Ramji

​

Crashlytics integration

Firebase Console Refresh

Prediction Service

A/B Testing Framework

Cloud FireStore

​

@samramji

@cantforget

FIREBASE DEV SUMMIT

KEYNOTE

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

26 of 66

@objectivejay

@subirj

It’s easier to retain users than

it is to acquire new ones..

​

Reuse (Analytics) data from past behaviors to predict & prepare for future user activities

FIREBASE DEV SUMMIT

PREDICTIONS

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

27 of 66

Collect 100 days

labeling window of

analytics data

​

Predict 7 days

Use 100 days to predict

next 7 days of events..

​

​

Validate 10 days

Accuracy of predictions is provided 10 days after..

​

​

​

User Labels

“Spenders” & “Churners”

​

Usage

Push notifications

A/B Testing

Invites/Sharing

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

28 of 66

CHURN PREDICTION

how many users will

(or won’t) come back

​

SPEND PREDICTION

Who will (or won’t)

spend in your app

​

RISK

TOLERANCE

How many false positives

are you okay with? Pick strategy accordingly.

​

OVERALL ACCURACY

How did we do?

(last 14 days review..)

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

29 of 66

FIREBASE DEV SUMMIT

A/B TESTING

@lmoroney

@ardaatali

Go from “I think”

to “I know”

​

Remote Config was the “manual” approch to A/B

​

Now true A/B testing as

built-in product feature

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

30 of 66

Why A/B

Eliminate guesses

Productivity boost

​

Know Your User

Was behavior caused

by design or by context?

​

​

​

Easy Monitoring

Running Experiments

Draft Experiments

Complete Experiments

​

Easy Creation

Add variants

Select control group

Add metrics goal

Add support ctxt

Run experiment

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

31 of 66

Google

Analytics

(Craft Audiences)

​

Google

Optimize

(Run A/B Testing)

​

Statistical

Insights

(Get Visuals)

​

​

Guidance

Users randomly

assigned to variants

​

Have good

samplesizes

​

Have Sensible

metrics

​

​

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

32 of 66

FIREBASE DEV SUMMIT

CLOUD FIRESTORE

Document-based

noSQL data store

​

Simpler Data Modeling with collections & documents

​

Scalable Queries to

size of result set, not data set

@ultrasaurus

@alexdufetel

Jonny Dimond

​

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

33 of 66

LET’s DIVE DEEPER INTO THIS ..

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

34 of 66

AS A DEVELOPER

WHAT ARE MY FIREBASE DATA OPTIONS

AND HOW DO I USE THEM?

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

35 of 66

Think of Firebase as providing you the tools to manage the sea of data needs in your app..

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

36 of 66

Data On Firebase

App Model Data

  • Firebase Auth
  • Real-Time Database
  • Cloud Firestore

App Asset Data

  • Firebase Hosting
  • Cloud Storage

App Activity Data

  • Google Analytics
  • Firebase Predictions

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

37 of 66

Let’s Talk about Cloud FireStore

  • What is it?
  • Why should we use it?
  • How do we use it?

​

  • How does it differ from the real-time database?

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

38 of 66

History: Real-Time Database

  • core of Firebase v1
  • noSQL ‘blob’ database
  • real-time data sync
  • efficient, low-latency
  • complex model, query
  • scalability > 100K users

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

39 of 66

The Problem

Plan:

Real-time database ideal

for simple & fast data sync

​

Reality:

Used by larger apps as a unified persistence layer for all state

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

40 of 66

Cloud Firestore

Builds on real-time database learnings & retains benefits

​

Integrates cloud support to fix the drawbacks of scaling

​

Rethinks “data model” to give flexibility & simplify querying

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

41 of 66

What is Cloud Firestore?

  • Collections & Documents
  • Addressable sub-collections
  • Read / Write / Delete + Sync
  • Sort / Filter / Limit + Indexes
  • Multi-op Transactions
  • Scalable Queries
  • Offline for Mobile + Web

​

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

42 of 66

Demo: Friendly Eats

Credit: Google Developers

Cloud Firestore Android Codelab

Collections & Documents

Sorting & Filtering & Indexes

Subcollections

Transactions & Security

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

43 of 66

Demo: Firestore Database

Credit: Nitya/StudyCamp

Code Walkthrough Here

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

44 of 66

How do I get started?

​

Android Studio

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

45 of 66

How do I get started?

​

Firebase Console

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

46 of 66

How do I get started?

​

Database Product

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

47 of 66

Collections & Documents

  • noSQL, document-oriented
  • Large collections / Small documents
  • Collection = group Documents
  • Document = key/value pair
    • can have nested objects
    • can have sub-Collections

​

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

48 of 66

Collections & Documents

Documents can be referenced

by name or by path.

They get created implicitly on add.

​

DocumentReference alovelaceDocRef =

db.collection("users")

.document("alovelace");

​

DocumentReference alovelaceDocRef =

db.document("users/alovelace");

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

49 of 66

Init / Add / Query

​

Operations

1

2

3

4

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

50 of 66

Events / Sync

​

FirebaseAdapter (bind to Recycler View)

Event has

Type &

Document

2

1

3

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

51 of 66

Events / Sync

​

FirebaseAdapter (bind to Recycler View)

1

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

52 of 66

Sort / Filter / Limit

​

& Indexes

Updating query automatically updates subs on server

1

2

3

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

53 of 66

Sort / Filter / Limit

​

& Indexes

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

54 of 66

Sort / Filter / Limit

​

& Indexes

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

55 of 66

Sort / Filter / Limit

​

& Indexes

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

56 of 66

Sort / Filter / Limit

​

& Indexes

If query is across multiple fields, it requires a composite index

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

57 of 66

Transactions

​

Muli-Doc Ops

What if you need to update multiple collections concurrently?

​

Add rating & update avg rating

1

2

3

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

58 of 66

Transactions

​

Muli-Doc Ops

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

59 of 66

Security

​

Access Rules

1

2

3

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

60 of 66

Let’s Talk about Cloud FireStore

  • What is it?
  • Why should we use it?
  • How do we use it?
  • How does it differ from the real-time database?

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

61 of 66

Firestore vs. Real-Time DB

  • Firestore as favored option (future)
  • You can mix-and-match
  • Readiness (beta vs. established)
  • Offline support (all vs. mobile)
  • Scalability (automatic vs. sharding)
  • Querying (compound vs. limited)
  • Transactions (atomic vs. basic)

https://firebase.google.com/docs/firestore/rtdb-vs-firestore

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

62 of 66

Goals

As a beginner:

what is Firebase &

what’s new in 2017?

​

As a developer:

what are my data options &

how do I get started (Firestore)?

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

63 of 66

Recap

Why Firebase. Outsource your infrastructure, frictionless service integrations, cloud-scale & secure

What’s New. Cloud Firestore, A/B Testing, Crashlytics integration, Predictions, Refreshed Console

Cloud Firestore. Document-based noSQL store with scalable queries.

  • Real-time, Offline, Serverless
  • Model / Collections & Documents
  • Ops / Read, Write, Sort, Filter, Index
  • Transact / Multi-collection updates
  • Secure / Granular, flexible rules
  • Offline / Supports mobile & web

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

64 of 66

Resources

65 of 66

Shoulders of giants..

​

Emojis from Emojipedia

Art from Unsplash, Nitya

Fonts from Google Fonts

Icons from NounProject (Pro)

Some content from Google Developers

​

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017

66 of 66

THANK YOU FOR LISTENING

I don’t consider myself a Firebase expert. But I am Firebase developer, a problem solver and a curious coder. Firebase lets me get to v1 faster so I can focus on building or iterating on innovative experiences instead of focusing on infrastructure management.

Data On Fire

“http://bit.ly/dataOnFire-nov2017”

#DataOnFire

#DevFestMontreal

@nitya

@firebase

Nov 2017