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
Image Credit:
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
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
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
AS A BEGINNER
WHAT IS FIREBASE AND
WHY SHOULD I CARE?
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Okay, so you’re a
developer
And you build & deploy
mobile & web apps
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
She’s a
small biz owner
She owns a hair salon &
She wants an app built
Meet Maya.
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
She’s a
casual gamer
She’s looking for an
interesting game to play
Meet Geeta.
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
You think:
Hey I can build that!
Just tell me your
requirements.
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
MAYA’S REQUIREMENTS
Maya’s ASKS
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
YOUR TRANSLATION
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
GEETA’S REQUIREMENTS
GEETA’s ASKS
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
YOUR TRANSLATION
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Limited Budget | Deliver in 4wks | Support UI/UX updates
One small thing..
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
You think:
You can’t be serious!
And then you think:
Can I outsource
a few things?
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Image Credit:
https://firebase.google.com
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Image Credit:
https://firebase.google.com
Outsource DevOps
Implicit Security
Frictionless Integrations
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
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
Image Credit:
https://firebase.google.com
INTEGRATE BACKEND SERVICES
Develop & Test
Grow & Engage
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Image Credit:
https://firebase.google.com
Develop & Test
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Image Credit:
https://firebase.google.com
Grow & Engage
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Image Credit:
https://firebase.google.com
BUILD
THE APP
TEST
THE APP
MONETIZE
THE APP
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
What’s new
in 2017?
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
“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
@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
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
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
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
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
Analytics
(Craft Audiences)
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
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
LET’s DIVE DEEPER INTO THIS ..
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
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
Think of Firebase as providing you the tools to manage the sea of data needs in your app..
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Data On Firebase
App Model Data
App Asset Data
App Activity Data
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Let’s Talk about Cloud FireStore
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
History: Real-Time Database
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
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
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
What is Cloud Firestore?
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Demo: Friendly Eats
Credit: Google Developers
Collections & Documents
Sorting & Filtering & Indexes
Subcollections
Transactions & Security
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Demo: Firestore Database
Credit: Nitya/StudyCamp
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
How do I get started?
Android Studio
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
How do I get started?
Firebase Console
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
How do I get started?
Database Product
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Collections & Documents
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
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
Init / Add / Query
Operations
1
2
3
4
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
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
Events / Sync
FirebaseAdapter (bind to Recycler View)
1
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
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
Sort / Filter / Limit
& Indexes
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Sort / Filter / Limit
& Indexes
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Sort / Filter / Limit
& Indexes
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
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
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
Transactions
Muli-Doc Ops
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Security
Access Rules
1
2
3
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Let’s Talk about Cloud FireStore
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Firestore vs. Real-Time DB
https://firebase.google.com/docs/firestore/rtdb-vs-firestore
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
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
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.
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
#DataOnFire
#DevFestMontreal
@nitya
@firebase
Nov 2017
Resources
Firebase Summit 2017
Watch Firecasts
Firebase Code
Shoulders of giants..
Emojis from Emojipedia
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
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