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
第2回 雲勉LT⼤会 クラウド時代は CRUD ではなく CQRS で考えよう
Slide 2
Slide 2 text
⾃⼰紹介 2 井上 迪也(いのうえみちや) • あだ名︓みちのすけ • 所属︓アジャイル事業部 • アイレット歴︓2022年度 新卒⼊社(3年⽬) • 趣味︓バイク(予定) • 社内活動︓もくもく会(ブログリレーなど) IPA : 応⽤情報、データベース
Slide 3
Slide 3 text
⽬次 3 ・CRUD ・CQRS ・AWS で実装 ・メリット / デメリット ・CQRS とクラウドの相性
Slide 4
Slide 4 text
4 「API のデータベース 何を使う︖」 安くてスケールするのは DynamoDB だけど、 フィルタとか JOIN とか考えると RDS がいいな あ るある な 話題
Slide 5
Slide 5 text
CRUD 5
Slide 6
Slide 6 text
6 $ SFBUF 3 FBE 6 % QEBUF FMFUF
Slide 7
Slide 7 text
RESTful API 7 $ 3 6 % 1045 QPTU (&5 QPTU (&5 QPTUJE 1"5$) QPTUJE %&-&5& QPTUJE
Slide 8
Slide 8 text
8 $ SFBUF 3 FBE 6 % QEBUF FMFUF ← 特性が違う
Slide 9
Slide 9 text
9 R CUD キャッシュ可能 トランザクション・整合性 たくさん叩かれる レスポンスは最⼩限でいい 複雑なフィルターやクエリ 複雑なドメインロジック
Slide 10
Slide 10 text
10 全く違うことをごちゃ混ぜに考えると、 「パフォーマンスの低下」や「ロジックの複雑化」が発⽣する
Slide 11
Slide 11 text
CQRS 11
Slide 12
Slide 12 text
12 $ SFBUF 3 FBE 6 % QEBUF FMFUF $PNNBOE 2VFSZ (更新系) (取得系)
Slide 13
Slide 13 text
13 $234 ʢ$PNNBOE2VFSZ3FTQPOTJCJMJUZ4FHSFHBUJPOʣ コマンド・クエリ責務分離 更新系と取得系を別々に考えるパターン
Slide 14
Slide 14 text
AWS で CQRS を使って実装してみる 14
Slide 15
Slide 15 text
15
Slide 16
Slide 16 text
16
Slide 17
Slide 17 text
17 イベントソーシング
Slide 18
Slide 18 text
18 Insert をトリガー RDS に書き込む
Slide 19
Slide 19 text
19 DynamoDB の積み重なったイベントをもとに、 現在の状態を導出
Slide 20
Slide 20 text
20
Slide 21
Slide 21 text
21
Slide 22
Slide 22 text
CQRS の メリット 22
Slide 23
Slide 23 text
CQRS の メリット 23 ・取得系と更新系のパフォーマンスを別々に最適化できる ・ロジックが簡潔になる ・更新系の変更が、取得系に影響を与えない
Slide 24
Slide 24 text
24
Slide 25
Slide 25 text
CQRS(というかイベントソーシング) の メリット 25 ・全てのイベントが保存され、デバッグや監査が簡単 ・過去のイベントから現在の状態を導出できるため、 取得系の DB の変更も可能
Slide 26
Slide 26 text
26
Slide 27
Slide 27 text
CQRS の デメリット 27
Slide 28
Slide 28 text
CQRS の デメリット 28 ・データは結果整合性 ・Query と Command を個別にマイクロサービス化するようなもの ・構成要素が増える ・デプロイが増える ・トランザクションの複雑化
Slide 29
Slide 29 text
CQRS とクラウドは相性がいい 29
Slide 30
Slide 30 text
CQRS とクラウドは相性がいい 30 ・イベントドリブン ・ユースケースに適したサービスを使うことで、 コストやパフォーマンスを最適化できる → RDS のリードレプリカなどは、AWS が提供してくれている CQRS なソリューションの⼀つ
Slide 31
Slide 31 text
31 アーキテクチャとして採⽤しなくても 更新系・取得系で切り分けて考えるのは重要 アーキテクチャとして、 CRUD ではなく CQRS という選択肢もある
Slide 32
Slide 32 text
32 iret.media の「もくもく会ブログリレー」でも公開予定︕ 7 / 14 (⽇)
Slide 33
Slide 33 text
33 ご清聴ありがとうございました 🙇