Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Firebase, Firestore Find mBaaS
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nnao45
April 17, 2019
Technology
1.2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Firebase, Firestore Find mBaaS
nnao45
April 17, 2019
More Decks by nnao45
See All by nnao45
MPI Performance Evaluation of Raspberry Pi4 Cluster with Android OS
nnao45
2
220
datalake-party-for-aws-20201118
nnao45
0
290
はじめてのNetwork Service Mesh
nnao45
4
2.4k
EKS for EFS
nnao45
4
1.6k
まだ大きくない僕たちに必要なCLoud Nativeを求めて
nnao45
8
1.3k
what happens when k8s journy
nnao45
17
9.2k
Make App, Using with Study Group
nnao45
3
680
Chatops, AWS, And Ansible
nnao45
2
1.1k
Ansible container in the kubernetes
nnao45
5
1.7k
Other Decks in Technology
See All in Technology
Futexes the good, the bad, the ugly
ennael
PRO
0
120
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
240
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
290
AIアプリを使い分けるための共通ツール基盤を考えてみる#devio2026
osawa
0
250
Google Cloud Next Tokyo 26登壇時のスクリプト
recruitengineers
PRO
0
190
Incremental HTTP
kazuho
5
2k
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
160
Meet AgentCore Identity Consent Portal
hironobuiga
3
190
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
550
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
510
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
3.1k
[2026 Oracle Technical Deep Dive] Apache Iceberg × Oracle AI Database -Oracle Autonomous AI Lakehouseが実現するAI時代のデータ基盤- (2026年9月17日開催)
oracle4engineer
PRO
0
110
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
310
Prompt Engineering for Job Search
mfonobong
0
480
Done Done
chrislema
187
17k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
260
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
Paper Plane (Part 1)
katiecoart
PRO
2
11k
New Earth Scene 8
popppiees
4
2.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
310
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Transcript
Firebase Firestore Find obile m S a a B s
ackend ervice
C N D J P 2 @nnao45 CyberAgent Inc. Infra/ServerSide
Engineer ✔ Naoya Yokoyama Tech Advisor Startup Company ✔ Zsh,BGP,Go,Rust,MySQL,K8S,AWS,Ansible ✔ Vtuber,Game,Tennis ✔ サーバレスでエンジニアに愛を・・・! 冪等性を保つべきかどうかの指標が欲しい ぶいちゅーばー友達募集! ポケモン発売まで意識飛ばしたい勢 Rustのwebフレームワーク作成中... @nnao45,
[email protected]
✔ サンフランシスコのセブン最高
Agenda Firebase introduction Learn Firestore Arch mBaaS with CloudNative ✔
✔ ✔
Firebase?
Firebase is… NoSQL? Push Notification? Serverless?
Firebase is… NoSQL? Push Notification? Serverless? ✔ ✔ ✔
DEPLOY MOBILE APP IS HARD WAY Database? Mongo,MySQL,Postgres,Oracle...etc Auth? Basic,Digest,JWT,PubKey...etc
Async Logic? WebRTC,Quic,CustomProto…etc Hosting API? S3 Hosting,EC2,GAE…etc
DEPLOY MOBILE APP IS HARD WAY Database! Auth! Async Logic!
Hosting API! NoSQL Authentication SDK and WebRTC Hosting Front
is mobile backend as a service https://firebase.google.com/?hl=ja
CAN DEPLOY MOBILE APP USING ONLY FIREBASE WITH SERVERLESS ARCH
hoge.firebaseapp.com Hosting NoSQL Authentication Cloudfunction Storage Push Notification Front
CAN DEPLOY MOBILE APP USING ONLY FIREBASE WITH SERVERLESS ARCH
mBaaS Self-Hosted Server NO NEED
FOR EXAMPLE… MOBILE APP SEND MESSAGE Hosting api.hogame.link/api/v1/login Credential OK
Credential Auth Authentication Call Privider host with like app
FOR EXAMPLE… MOBILE APP SEND MESSAGE Hosting api.hogame.link/api/v1/message POST Message
OK Firestore Cloudfunction SAVE Message Format Message SAVE for Analy Object Storage Storage SAVE Image DWH Analytics Tools
FOR EXAMPLE… MOBILE APP SEND MESSAGE Hosting Firebase Apple Push
iOS Push Message Notification Service Push Message Cloud Messaging api.hogame.link If you want to send push...
FOR EXAMPLE… MOBILE APP SEND MESSAGE Hosting api.hogame.link/api/v1/message GET Message
Firestore GET Message Storage GET Image Realtime Via SDK on WebRTC
AND… Self-Hosted API Server I WANT TO USE API SEVER
WITH FIRESTORE
AND… Self-Hosted API Server I WANT TO USE API SEVER
WITH FIRESTORE
Can use serverside firestore sdk for some lang. https://cloud.google.com/firestore/docs/apis
Firebase is mBaaS, I know! And want to study Firestore
Firestore is… NoSQL, Base Document DB Awesome Realtime Communication ✔
✔
Firestore Introduction
Firestore Introduction https://firebase.google.com/docs/firestore/?hl=ja
Database Table Data Collection Document Data MySQL Firestore Firestore Introduction
GET Message Realtime Via SDK on WebRTC Having Feature P/Sub
Firestore Introduction
Demo https://codelabs.developers.google.com/codelabs/ firebase-web/index.html Firestore Introduction
Firestore is NoSQL
Firestore is NoSQL No Schema Support Transaction Support Query Like
SQL ORDER BY WHERE LIMIT
Firestore is NoSQL users/ user_1/ user_2/ user_3/ created: 1555302970 role:
admin status: active created: 1555302960 role: admin status: active created: 1555302931 role: admin status: deactive
Firestore is NoSQL users/ user_1/ user_2/ user_3/ role: admin status:
active role: admin status: active role: admin status: deactive follows: [2,3] follows: [4,10] follows: [42,3] docData .put(“follows”, Arrays.asList(2,3)); created: 1555302970 created: 1555302960 created: 1555302931 Insert into data
Firestore is NoSQL users/ user_1/ role: admin status: active follows:
[2,3] Message.put(“from”, “Jobana”); Messages created: 1555302970 messages/ message_1: from: Giorno msg: Golden Message.put(“msg”, “Experience”); .put(“message_2”, Message); message_2: from: Jobana msg: Experience Insert into subcol
Firestore is NoSQL users/ user_1/ user_2/ role: admin status: active
role: admin status: active follows: [2,3] follows: [4,10] docDataRef .where(“status”, “==”, “active”); created: 1555302970 created: 1555302960 Get match data
Firestore is NoSQL users/ user_1/ role: admin status: active follows:
[2,3] docDataRef .where(“crated”, “>”, “1555302965”); created: 1555302970 Get match data
Firestore is NoSQL users/ user_1/ user_2/ user_3/ role: admin status:
active role: admin status: active role: admin status: deactive follows: [2,3] follows: [4,10] follows: [42,3] docDataRef .where(“role”, “==”, “admin”) created: 1555302970 created: 1555302960 created: 1555302931 .orderBy(“created”, “asc”); Get match sort data
Firestore is NoSQL users/ user_1/ user_2/ role: admin status: active
role: admin status: active follows: [2,3] follows: [4,10] docDataRef .where(“role”, “==”, “admin”) created: 1555302970 created: 1555302960 .orderBy(“created”, “asc”) .startAt(user_2); Get match sort snap
Caution of Firestore
Caution of Firestore 1 WRITE IN 1 DOCMENT PER 1
second https://firebase.google.com/docs/firestore/quotas?hl=ja 500 WRITE IN 1 COLLECTION PER 1 second 1 DOCUMENT MAX SIZE IS 1 MiB
1 DATA UPDATE IN 1 DOCMENT PER 1 second like_counter/
counter: 222 CANNOT USING“COUNT” STATEMENT https://firebase.google.com/docs/firestore/solutions/counters?hl=ja Caution of Firestore
1 DATA UPDATE IN 1 DOCMENT PER 1 second like_counter_1/
counter: 22 → SOLVE: Distributed Sharding like_counter_2/ counter: 34 like_counter_3/ counter: 22 like_counter_4/ counter: 19 97 like_counter: https://firebase.google.com/docs/firestore/solutions/counters?hl=ja Caution of Firestore
Imple Realtime Update SDK for Go? https://firebase.google.com/docs/firestore/query-data/listen?hl=ja https://firebase.google.com/docs/firestore/query-data/listen?hl=ja Caution of
Firestore
https://firebase.google.com/docs/firestore/query-data/listen?hl=ja https://github.com/googleapis/google-cloud-go/releases/tag/v0.21.0 Caution of Firestore Imple Realtime Update SDK for
Go?
https://firebase.google.com/docs/firestore/query-data/listen?hl=ja https://soichisumi.net/2018/12/firestore-realtime-update-go-sdk/ snapIter := client.Collection("users") .Doc("docID") .Snapshots(ctx) defer snapIter.Stop() for{
data, err := snapIter.Next() if err != nil { log.Fatalln(err) } fmt.Println(data) } Caution of Firestore Imple Realtime Update SDK for Go?
BILLING PER Document Bill Read 0.1 Million Doc Write 0.1
Million Doc Delete 0.1 Million Doc $0.06 $0.18 $0.02 https://firebase.google.com/docs/firestore/pricing?hl=ja Caution of Firestore
Collection BILLING PER 1 Document Document Document Document READ 100
documents Caution of Firestore
Collection BILLING PER 1 Document Document Document Document READ 100
documents READ 100 documents Your Bill is Caution of Firestore
Collection BILLING PER 1 Document Document Document Document READ 100
documents SubCollection Document Document Document AND 55 subdocuments Caution of Firestore
Collection BILLING PER 1 Document Document Document Document READ 100
documents SubCollection Document Document Document AND 55 subdocuments READ 155 documents Your Bill is Caution of Firestore
And More... See Offical Document https://firebase.google.com/docs/ firestore/solutions/?hl=ja Google Cloud Next’19
Firestore Session https://youtu.be/ah5tQ7yOh2s Caution of Firestore
mBaaS with CloudNative
PUSH NORTIFICATION IS HARD WAY API Firebase Push Message Cloud
Messaging REQUEST REQUEST REQUEST
PUSH NORTIFICATION IS HARD WAY API Firebase Push Message Cloud
Messaging REQUEST REQUEST HTTP REQUEST IS SLOW RESPOMSE IS SLOW
PUSH NORTIFICATION IS HARD WAY API Firebase Push Message Cloud
Messaging REQUEST REQUEST I'am New User
PUSH NORTIFICATION IS HARD WAY API Firebase Push Message Cloud
Messaging REQUEST REQUEST I'am Influencer
API Firebase Cloud Messaging REQUEST REQUEST PUSH NORTIFICATION IS HARD
WAY ...PREDICTION IS HARD REQUEST Apple Push Notification Service
PUSH NORTIFICATION IS HARD WAY https://tech.mercari.com/entry/2016/11/08/170343
PUSH NORTIFICATION IS HARD WAY https://tech.mercari.com/entry/2016/11/08/170343
PUSH NORTIFICATION IS HARD WAY https://github.com/appleboy/gorush#run-gorush-in-kubernetes
PUSH NORTIFICATION IS HARD WAY https://github.com/appleboy/gorush#run-gorush-in-kubernetes
PUSH NORTIFICATION IS HARD WAY https://github.com/appleboy/gorush#run-gorush-in-kubernetes Pod Pod Pod
PUSH NORTIFICATION IS HARD WAY And My Use Case...
PUSH NORTIFICATION IS HARD WAY Database /a-service /b-service API a-queue-0/
Format Data b-queue-0/ Format Data a-queue-1/ Format Data
PUSH NORTIFICATION IS HARD WAY BATCH BATCH BATCH BATCH Push
Server x-queue-n: datas/ <struct> a-queue-0 a-queue-1 b-queue-0 b-queue-1 statefulset statefulset statefulset statefulset Database
PUSH NORTIFICATION IS HARD WAY IF ALL QUEUE TOO BUSY...
a-queue-0 a-queue-1 a-queue-2 a-queue-3 a-queue-4 DEPLOY DEPLOY DEPLOY statefulset statefulset statefulset statefulset statefulset API KICK JOB REQUEST Database
FIN. PixelMplus(ピクセル・エムプラス) ‥ 8bitビットマップふうフリーフォント http://itouhiro.hatenablog.com/entry/20130602/font 這いよれ!ニャル子さん AAセット1 | AsciiArt*AsciiArt http://aa.en.utf8art.com/node/4146