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