Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Firebase, Firestore Find mBaaS
Search
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
210
datalake-party-for-aws-20201118
nnao45
0
290
はじめてのNetwork Service Mesh
nnao45
4
2.4k
EKS for EFS
nnao45
4
1.5k
まだ大きくない僕たちに必要なCLoud Nativeを求めて
nnao45
8
1.3k
what happens when k8s journy
nnao45
17
9.2k
Make App, Using with Study Group
nnao45
3
670
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
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
140
AIQAのナレッジ構築について
qatonchan
1
160
[MIRU26] Open-Vocabulary Intention-Guided Object Detection in Diverse Scenes
keio_smilab
PRO
0
140
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
530
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
0
1.5k
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
4
1.1k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
Amazon Bedrock Managed Knowledge BaseDive Deep
ren8k
0
400
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
120
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
0
840
モバイルアプリ開発概論2026
recruitengineers
PRO
1
310
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
170
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
950
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
980
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Fireside Chat
paigeccino
42
4k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
460
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
920
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
650
Embracing the Ebb and Flow
colly
88
5.1k
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