Firebase, Firestore Find mBaaS

D02d368f98011616d6a8612af1ca4de5?s=47 nnao45
April 17, 2019

Firebase, Firestore Find mBaaS

D02d368f98011616d6a8612af1ca4de5?s=128

nnao45

April 17, 2019
Tweet

Transcript

  1. Firebase Firestore Find obile m S a a B s

    ackend ervice
  2. 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,n4sekai5y@gmail.com ✔ サンフランシスコのセブン最高
  3. Agenda Firebase introduction Learn Firestore Arch mBaaS with CloudNative ✔

    ✔ ✔
  4. Firebase?

  5. Firebase is… NoSQL? Push Notification? Serverless?

  6. Firebase is… NoSQL? Push Notification? Serverless? ✔ ✔ ✔

  7. 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
  8. DEPLOY MOBILE APP IS HARD WAY Database! Auth! Async Logic!

    Hosting API! NoSQL Authentication SDK and WebRTC Hosting Front
  9. is mobile backend as a service https://firebase.google.com/?hl=ja

  10. CAN DEPLOY MOBILE APP USING ONLY FIREBASE WITH SERVERLESS ARCH

    hoge.firebaseapp.com Hosting NoSQL Authentication Cloudfunction Storage Push Notification Front
  11. CAN DEPLOY MOBILE APP USING ONLY FIREBASE WITH SERVERLESS ARCH

    mBaaS Self-Hosted Server NO NEED
  12. FOR EXAMPLE… MOBILE APP SEND MESSAGE Hosting api.hogame.link/api/v1/login Credential OK

    Credential Auth Authentication Call Privider host with like app
  13. 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
  14. 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...
  15. 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
  16. AND… Self-Hosted API Server I WANT TO USE API SEVER

    WITH FIRESTORE
  17. AND… Self-Hosted API Server I WANT TO USE API SEVER

    WITH FIRESTORE
  18. Can use serverside firestore sdk for some lang. https://cloud.google.com/firestore/docs/apis

  19. Firebase is mBaaS, I know! And want to study Firestore

  20. Firestore is… NoSQL, Base Document DB Awesome Realtime Communication ✔

  21. Firestore Introduction

  22. Firestore Introduction https://firebase.google.com/docs/firestore/?hl=ja

  23. Database Table Data Collection Document Data MySQL Firestore Firestore Introduction

  24. GET Message Realtime Via SDK on WebRTC Having Feature P/Sub

    Firestore Introduction
  25. Demo https://codelabs.developers.google.com/codelabs/ firebase-web/index.html Firestore Introduction

  26. Firestore is NoSQL

  27. Firestore is NoSQL No Schema Support Transaction Support Query Like

    SQL ORDER BY WHERE LIMIT
  28. 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
  29. 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
  30. 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
  31. 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
  32. Firestore is NoSQL users/ user_1/ role: admin status: active follows:

    [2,3] docDataRef .where(“crated”, “>”, “1555302965”); created: 1555302970 Get match data
  33. 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
  34. 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
  35. Caution of Firestore

  36. 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
  37. 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
  38. 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
  39. 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
  40. 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?
  41. 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?
  42. 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
  43. Collection BILLING PER 1 Document Document Document Document READ 100

    documents Caution of Firestore
  44. Collection BILLING PER 1 Document Document Document Document READ 100

    documents READ 100 documents Your Bill is Caution of Firestore
  45. Collection BILLING PER 1 Document Document Document Document READ 100

    documents SubCollection Document Document Document AND 55 subdocuments Caution of Firestore
  46. 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
  47. 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
  48. mBaaS with CloudNative

  49. PUSH NORTIFICATION IS HARD WAY API Firebase Push Message Cloud

    Messaging REQUEST REQUEST REQUEST
  50. PUSH NORTIFICATION IS HARD WAY API Firebase Push Message Cloud

    Messaging REQUEST REQUEST HTTP REQUEST IS SLOW RESPOMSE IS SLOW
  51. PUSH NORTIFICATION IS HARD WAY API Firebase Push Message Cloud

    Messaging REQUEST REQUEST I'am New User
  52. PUSH NORTIFICATION IS HARD WAY API Firebase Push Message Cloud

    Messaging REQUEST REQUEST I'am Influencer
  53. API Firebase Cloud Messaging REQUEST REQUEST PUSH NORTIFICATION IS HARD

    WAY ...PREDICTION IS HARD REQUEST Apple Push Notification Service
  54. PUSH NORTIFICATION IS HARD WAY https://tech.mercari.com/entry/2016/11/08/170343

  55. PUSH NORTIFICATION IS HARD WAY https://tech.mercari.com/entry/2016/11/08/170343

  56. PUSH NORTIFICATION IS HARD WAY https://github.com/appleboy/gorush#run-gorush-in-kubernetes

  57. PUSH NORTIFICATION IS HARD WAY https://github.com/appleboy/gorush#run-gorush-in-kubernetes

  58. PUSH NORTIFICATION IS HARD WAY https://github.com/appleboy/gorush#run-gorush-in-kubernetes Pod Pod Pod

  59. PUSH NORTIFICATION IS HARD WAY And My Use Case...

  60. 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
  61. 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
  62. 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
  63. FIN. PixelMplus(ピクセル・エムプラス) ‥ 8bitビットマップふうフリーフォント http://itouhiro.hatenablog.com/entry/20130602/font 這いよれ!ニャル子さん AAセット1 | AsciiArt*AsciiArt http://aa.en.utf8art.com/node/4146