CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ

A83a7138276e3275d94d91ed90d13300?s=47 hecateball
December 03, 2019

CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ

小技です。

A83a7138276e3275d94d91ed90d13300?s=128

hecateball

December 03, 2019
Tweet

Transcript

  1. CQRSを学ぶついでに Cloud Functionsと Firestoreを連動させる時の 小技も学ぶ Firebase Meetup #15

  2. 自己紹介 Yuuki Fukuda 株式会社ディー・エヌ・エー オープンプラットフォーム事業部 -- Twitter: @hecateball

  3. Disclaimer • このスライドに記載されている内容は発表者個人の知見に基づくものであり、所属 する組織の公式の見解ではありません • また、情報の正確性を保証するものではありません。このスライドの内容を利用し たいかなる結果に関しても責任を負いかねます • 資料は後ほど公開するので、記憶・記録する必要はありません

  4. 今日話す内容 • CQRSって何? • FirebaseでCQRSするモチベーション • Functionsを使ったCQRSの実装 • FirestoreとFunctionsを併用する際のポイント

  5. Command Query Responsibility Segregation (コマンドクエリ責務分離)

  6. 一般的なデータ読み書き

  7. Read/Writeの関心事 Read Write • データ検索の効率化・高速化 • 結合・集計処理 • データの整合性の維持 •

    アトミックオペレーション • 排他制御
  8. CQRS(コマンドクエリ責務分離)とは

  9. なぜFirebaseでCQRS? • Read用/Write用でモデルを分離できることの恩恵が非常に大 きい • Writeモデルを書き込み操作ログとして利用できる

  10. Functions+Firestoreで実装する際のポイント

  11. None
  12. { “user”: …, “createdAt”: ... } (ツイート) favorite_countを 1増やす

  13. イベント:ビジネスロジック = 1 : n

  14. よい イマイチ

  15. Functionsのディレクトリ構成と Firestoreのコレクション構成を 一致させる小技

  16. その他の小技 • Callable Functionsは使わない • updateトリガーを注意深く避ける • 「似て非なるイベント」はコレクションを分ける

  17. ご清聴ありがとうございました • 主役はバックグラウンド関数 • リアクティブシステムを搭載したフロントエンド技術と相性が良 い • CQRSを適用すべきでないケースももちろんある ◦ ユーザ体験をよく考えて!