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 Realtime Database 株式会社マナボ 導入事例
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Daisuke Yamashita
October 18, 2016
Technology
2.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Firebase Realtime Database 株式会社マナボ 導入事例
Firebase.ebisu #1 の発表資料です。
http://firebase.connpass.com/event/41745/
Daisuke Yamashita
October 18, 2016
More Decks by Daisuke Yamashita
See All by Daisuke Yamashita
EducationTech Talks Tokyo #1
dddaisuke
2
2k
CTOが語る「Challenge」~うちの会社の技術的挑戦、全部話します~
dddaisuke
2
420
Firebaseのススメ入門編 - Google Play APP DOJO
dddaisuke
0
910
Google DevFest Tokyo 2016
dddaisuke
3
1.1k
Firebase Overview @ Google I/O 2016
dddaisuke
2
1.4k
サーバーサイドから利用するFirebase
dddaisuke
4
3.1k
非エンジニアでもデキる ラクラク自動化生活
dddaisuke
9
1.4k
クラウドテクノロジーで加速する開発・運用 | EdTech CTO Night
dddaisuke
4
6.4k
Other Decks in Technology
See All in Technology
LanceDB入門
mocobeta
9
640
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
AI開発に用いられるHPC技術について
gpuunite_official
0
180
ホームラボ紹介
y_sera15
0
220
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.7k
AI時代に、人は何を、どう学ぶのか #pbl_pub / What and How Do We Learn in the AI Era?
takaking22
1
180
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
2
150
Digitization部 紹介資料
sansan33
PRO
2
7.7k
Adding Right-to-Left support to your web application with CSS logical properties — Lessons from Redmine
vividtone
0
160
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.5k
Flutter × BLE Centralを自前Pluginで実装する設計パターン - MethodChannel / EventChannelで作る双方向ブリッジの実践 / Building Custom Flutter BLE Central Plugins: Bidirectional Bridging with Method & Event Channels
bitkey
PRO
0
190
小粒でもパワフルなJS Runtime Antjsについて
comamoca
0
110
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
How to Ace a Technical Interview
jacobian
281
24k
Odyssey Design
rkendrick25
PRO
2
770
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
We Are The Robots
honzajavorek
0
300
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
We Have a Design System, Now What?
morganepeng
55
8.3k
The browser strikes back
jonoalderson
0
1.5k
Transcript
None
山下 大介 ( だいちゃん ) 株式会社マナボ 取締役CTO Blog :
h+p://blog.daisukeyamashita.com Twi+er : @dddaisuke Facebook : dice.k.yamashita Google Developer Expert (Cloud): h+ps://developers.google.com/experts/people/daisuke-‐yamashita ConfidenIal © mana.bo Inc. All Rights Reserved 2
None
None
None
None
None
None
None
None
None
None
None
None
None
None
Google For Mobile 2016
DevFest 2016
None
None
信頼性 • FirebaseはGoogleが買収してきたテクノロジー
None
None
信頼性 稼働率は99.9%程度かな?
信頼性 日々、安定してきているとは言え、現状それなり のダウンタイムがある。
対策 • マナボでは、RealIme DBを100%信用せず、 WebSocketで、フォールバックのラインを用意 した。 • それぞれの障害率を0.1%とすると、同時に障 害が発生する障害率は0.01%。
書き込み
LINE風メッセージング機能の実装 新しいメッセージング機能に関しては、 当初マスターデータを Firebaseに保管する予定だった
LINE風メッセージング機能の実装 FirebaseのRealIme Databaseを 運用するノウハウがそれほど無かった 複雑なスキーマ設計に自信が無い
LINE風メッセージング機能の実装 スキーマ変更がある前提の設計にしよう!
REST APIが遅い!!! REST APIが遅いので、データを高速に マイグレーションするのは不可能!!!
REST APIが遅い!!! REST APIが遅すぎて、全データのクローンを どこかに持つ必要があると判断
REST APIが遅い!!! Firebase RealIme Databaseに マスターデータを格納するのを諦める
非同期の読み込み (最初の1回目など)
汎用的なお話
RealIme DBの設計 • Firebase RealIme DBの設計の勘所は、以下 のURLを参照 • h+ps://firebase.google.com/docs/database/
rest/structure-‐data
非正規化の問題 • 同じデータが複数箇所に保存され、更新が難 しい(更新漏れが発生する)
リレーションの問題 • リレーションを表現するのに、双方向リストと して表現する必要がある
リレーションの問題 • 更新をミスると即死亡
これらの問題に対応しようとすると クライアントのコード中で発生することは
THE・スパゲッティコード
まとめ Firebaseはカジュアルに リアルタイム更新をデバイス間で共有できるが、 現実的に大規模運用をスマホ(Android/iOS)の コードだけで完結させるのは厳しそう
今後の機能追加に期待しています!
None