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
第2回 雲勉LT大会 クラウド時代は CRUD ではなく CQRS で考えよう
Search
iret.kumoben
July 30, 2024
Technology
0
37
第2回 雲勉LT大会 クラウド時代は CRUD ではなく CQRS で考えよう
iret.kumoben
July 30, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
29
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
29
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
66
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
64
第2回 雲勉LT大会 パブリッククラウドのサーバレスサービスの違いを調べてみた
iret
0
21
第2回 雲勉LT大会 AWS Control Tower の「コントロール」って何? という謎から AWS Control Tower を知る
iret
0
19
第2回 雲勉LT大会 AWS/Google Cloud/Wasabi ストレージサービスを比較したい
iret
0
23
第2回 雲勉LT大会 コスト最適化のサイクルを回す クラウド時代のコスト最適化戦略
iret
0
19
第140回 雲勉 今度こそ AWS CDK で構築してみたくなるようなCDK活用集
iret
0
53
Other Decks in Technology
See All in Technology
2024年のナビゲーション・フォーカス対応:Composeでキーボード・ナビゲーションをサポートしよう
tahia910
0
110
Google CloudのLLM活用の選択肢を広げるVertex AIのパートナーモデル
nayuts
0
130
DuckDB雑紹介(1.1対応版)@DuckDB座談会
ktz
6
1.4k
フロントエンド・オブザーバビリティを支える要素技術を学ぼう
sadnessojisan
2
180
The XZ Backdoor Story
fr0gger
0
3.6k
SORACOMで実現するIoTのマルチクラウド対応 - IoTでのクリーンアーキテクチャの実現 -
kenichirokimura
0
380
サプライチェーン攻撃に備える
ryunen344
0
270
社内の学びの場・コミュニティ形成とエンジニア同士のリレーションシップ構築/devreljapan2024
nishiuma
3
280
『GRANBLUE FANTASY: Relink』最高の「没入感」を実現するカットシーン制作手法とそれを支える技術
cygames
0
100
Functional TypeScript
naoya
11
4.8k
ネットワークだけ隔離されたコンテナ作成デモ / Kichijoji.pm36
tenforward
1
210
どこよりも遅めなWinActor Ver.7.5.0 新機能紹介
tamai_63
0
200
Featured
See All Featured
WebSockets: Embracing the real-time Web
robhawkes
59
7.3k
We Have a Design System, Now What?
morganepeng
48
7.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
45
4.8k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
1
48
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
Scaling GitHub
holman
458
140k
It's Worth the Effort
3n
182
27k
A Modern Web Designer's Workflow
chriscoyier
691
190k
Web Components: a chance to create the future
zenorocha
308
42k
Transcript
第2回 雲勉LT⼤会 クラウド時代は CRUD ではなく CQRS で考えよう
⾃⼰紹介 2 井上 迪也(いのうえみちや) • あだ名︓みちのすけ • 所属︓アジャイル事業部 • アイレット歴︓2022年度
新卒⼊社(3年⽬) • 趣味︓バイク(予定) • 社内活動︓もくもく会(ブログリレーなど) IPA : 応⽤情報、データベース
⽬次 3 ・CRUD ・CQRS ・AWS で実装 ・メリット / デメリット ・CQRS
とクラウドの相性
4 「API のデータベース 何を使う︖」 安くてスケールするのは DynamoDB だけど、 フィルタとか JOIN とか考えると
RDS がいいな あ るある な 話題
CRUD 5
6 $ SFBUF 3 FBE 6 % QEBUF FMFUF
RESTful API 7 $ 3 6 % 1045 QPTU (&5
QPTU (&5 QPTUJE 1"5$) QPTUJE %&-&5& QPTUJE
8 $ SFBUF 3 FBE 6 % QEBUF FMFUF ←
特性が違う
9 R CUD キャッシュ可能 トランザクション・整合性 たくさん叩かれる レスポンスは最⼩限でいい 複雑なフィルターやクエリ 複雑なドメインロジック
10 全く違うことをごちゃ混ぜに考えると、 「パフォーマンスの低下」や「ロジックの複雑化」が発⽣する
CQRS 11
12 $ SFBUF 3 FBE 6 % QEBUF FMFUF $PNNBOE
2VFSZ (更新系) (取得系)
13 $234 ʢ$PNNBOE2VFSZ3FTQPOTJCJMJUZ4FHSFHBUJPOʣ コマンド・クエリ責務分離 更新系と取得系を別々に考えるパターン
AWS で CQRS を使って実装してみる 14
15
16
17 イベントソーシング
18 Insert をトリガー RDS に書き込む
19 DynamoDB の積み重なったイベントをもとに、 現在の状態を導出
20
21
CQRS の メリット 22
CQRS の メリット 23 ・取得系と更新系のパフォーマンスを別々に最適化できる ・ロジックが簡潔になる ・更新系の変更が、取得系に影響を与えない
24
CQRS(というかイベントソーシング) の メリット 25 ・全てのイベントが保存され、デバッグや監査が簡単 ・過去のイベントから現在の状態を導出できるため、 取得系の DB の変更も可能
26
CQRS の デメリット 27
CQRS の デメリット 28 ・データは結果整合性 ・Query と Command を個別にマイクロサービス化するようなもの ・構成要素が増える
・デプロイが増える ・トランザクションの複雑化
CQRS とクラウドは相性がいい 29
CQRS とクラウドは相性がいい 30 ・イベントドリブン ・ユースケースに適したサービスを使うことで、 コストやパフォーマンスを最適化できる → RDS のリードレプリカなどは、AWS が提供してくれている
CQRS なソリューションの⼀つ
31 アーキテクチャとして採⽤しなくても 更新系・取得系で切り分けて考えるのは重要 アーキテクチャとして、 CRUD ではなく CQRS という選択肢もある
32 iret.media の「もくもく会ブログリレー」でも公開予定︕ 7 / 14 (⽇)
33 ご清聴ありがとうございました 🙇