CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ
by
hecateball
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
CQRSを学ぶついでに Cloud Functionsと Firestoreを連動させる時の 小技も学ぶ Firebase Meetup #15
Slide 2
Slide 2 text
自己紹介 Yuuki Fukuda 株式会社ディー・エヌ・エー オープンプラットフォーム事業部 -- Twitter: @hecateball
Slide 3
Slide 3 text
Disclaimer ● このスライドに記載されている内容は発表者個人の知見に基づくものであり、所属 する組織の公式の見解ではありません ● また、情報の正確性を保証するものではありません。このスライドの内容を利用し たいかなる結果に関しても責任を負いかねます ● 資料は後ほど公開するので、記憶・記録する必要はありません
Slide 4
Slide 4 text
今日話す内容 ● CQRSって何? ● FirebaseでCQRSするモチベーション ● Functionsを使ったCQRSの実装 ● FirestoreとFunctionsを併用する際のポイント
Slide 5
Slide 5 text
Command Query Responsibility Segregation (コマンドクエリ責務分離)
Slide 6
Slide 6 text
一般的なデータ読み書き
Slide 7
Slide 7 text
Read/Writeの関心事 Read Write ● データ検索の効率化・高速化 ● 結合・集計処理 ● データの整合性の維持 ● アトミックオペレーション ● 排他制御
Slide 8
Slide 8 text
CQRS(コマンドクエリ責務分離)とは
Slide 9
Slide 9 text
なぜFirebaseでCQRS? ● Read用/Write用でモデルを分離できることの恩恵が非常に大 きい ● Writeモデルを書き込み操作ログとして利用できる
Slide 10
Slide 10 text
Functions+Firestoreで実装する際のポイント
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
{ “user”: …, “createdAt”: ... } (ツイート) favorite_countを 1増やす
Slide 13
Slide 13 text
イベント:ビジネスロジック = 1 : n
Slide 14
Slide 14 text
よい イマイチ
Slide 15
Slide 15 text
Functionsのディレクトリ構成と Firestoreのコレクション構成を 一致させる小技
Slide 16
Slide 16 text
その他の小技 ● Callable Functionsは使わない ● updateトリガーを注意深く避ける ● 「似て非なるイベント」はコレクションを分ける
Slide 17
Slide 17 text
ご清聴ありがとうございました ● 主役はバックグラウンド関数 ● リアクティブシステムを搭載したフロントエンド技術と相性が良 い ● CQRSを適用すべきでないケースももちろんある ○ ユーザ体験をよく考えて!