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
CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ
Search
hecateball
December 03, 2019
Technology
4.4k
3
Share
CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ
小技です。
hecateball
December 03, 2019
More Decks by hecateball
See All by hecateball
Vue 3の導入を急ピッチでやってみた
hecateball
3
670
決済システムを設計するときに忘れてはならないたった1つの大切なこと
hecateball
1
15k
Firebase Summit 2019 ~Webのはなし~
hecateball
0
140
Other Decks in Technology
See All in Technology
60分で学ぶ最新Webフロントエンド
mizdra
PRO
34
18k
ぼくがかんがえたさいきょうのあうとぷっと
yama3133
0
180
Azure PortalなどにみるWebアクセシビリティ
tomokusaba
0
390
ハーネスエンジニアリングをやりすぎた話 ~そのハーネスは解体された~
gotalab555
4
1.5k
"SQLは書けません"から始まる データドリブン
kubell_hr
2
470
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
6
1.1k
弁護士ドットコム株式会社 エンジニア職向け 会社紹介資料
bengo4com
1
130
最新の脅威動向から考える、コンテナサプライチェーンのリスクと対策
kyohmizu
1
680
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
みんなで作るAWS Tips 100連発 (FinOps編)
schwrzktz
1
280
Revisiting [CLS] and Patch Token Interaction in Vision Transformers
yu4u
0
340
[最強DB講義]推薦システム | 基礎編
recsyslab
PRO
1
160
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
970
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
Why Our Code Smells
bkeepers
PRO
340
58k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
170
The Language of Interfaces
destraynor
162
26k
How to build a perfect <img>
jonoalderson
1
5.4k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
750
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
260
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Crafting Experiences
bethany
1
110
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
420
Transcript
CQRSを学ぶついでに Cloud Functionsと Firestoreを連動させる時の 小技も学ぶ Firebase Meetup #15
自己紹介 Yuuki Fukuda 株式会社ディー・エヌ・エー オープンプラットフォーム事業部 -- Twitter: @hecateball
Disclaimer • このスライドに記載されている内容は発表者個人の知見に基づくものであり、所属 する組織の公式の見解ではありません • また、情報の正確性を保証するものではありません。このスライドの内容を利用し たいかなる結果に関しても責任を負いかねます • 資料は後ほど公開するので、記憶・記録する必要はありません
今日話す内容 • CQRSって何? • FirebaseでCQRSするモチベーション • Functionsを使ったCQRSの実装 • FirestoreとFunctionsを併用する際のポイント
Command Query Responsibility Segregation (コマンドクエリ責務分離)
一般的なデータ読み書き
Read/Writeの関心事 Read Write • データ検索の効率化・高速化 • 結合・集計処理 • データの整合性の維持 •
アトミックオペレーション • 排他制御
CQRS(コマンドクエリ責務分離)とは
なぜFirebaseでCQRS? • Read用/Write用でモデルを分離できることの恩恵が非常に大 きい • Writeモデルを書き込み操作ログとして利用できる
Functions+Firestoreで実装する際のポイント
None
{ “user”: …, “createdAt”: ... } (ツイート) favorite_countを 1増やす
イベント:ビジネスロジック = 1 : n
よい イマイチ
Functionsのディレクトリ構成と Firestoreのコレクション構成を 一致させる小技
その他の小技 • Callable Functionsは使わない • updateトリガーを注意深く避ける • 「似て非なるイベント」はコレクションを分ける
ご清聴ありがとうございました • 主役はバックグラウンド関数 • リアクティブシステムを搭載したフロントエンド技術と相性が良 い • CQRSを適用すべきでないケースももちろんある ◦ ユーザ体験をよく考えて!