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
36
第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
27
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
28
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
66
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
63
第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
EitherT_with_Future
aoiroaoino
1
1.2k
Creative UIs with Compose: DroidKaigi 2024
chrishorner
1
230
The XZ Backdoor Story
fr0gger
0
3.5k
Google CloudのLLM活用の選択肢を広げるVertex AIのパートナーモデル
nayuts
0
110
AWS SAW を広めたい @四国クラウドお遍路
kazzpapa3
0
220
Privacy Sandbox on Android / DroidKaigi 2024
7pairs
1
170
LINEヤフーのフロントエンド組織・体制の紹介
lycorp_recruit_jp
0
410
Oracle Exadata Database Service(Dedicated Infrastructure):サービス概要のご紹介
oracle4engineer
PRO
0
9.5k
社内の学びの場・コミュニティ形成とエンジニア同士のリレーションシップ構築/devreljapan2024
nishiuma
3
240
ロボットアームを遠隔制御の話 & LLMをつかったIoTの話もしたい
soracom
PRO
1
270
SORACOMで実現するIoTのマルチクラウド対応 - IoTでのクリーンアーキテクチャの実現 -
kenichirokimura
0
360
Oracle Database Backup Service:サービス概要のご紹介
oracle4engineer
PRO
0
4.1k
Featured
See All Featured
The Mythical Team-Month
searls
218
43k
Design by the Numbers
sachag
277
19k
Making Projects Easy
brettharned
113
5.8k
Build your cross-platform service in a week with App Engine
jlugia
228
18k
Producing Creativity
orderedlist
PRO
340
39k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
How to Ace a Technical Interview
jacobian
275
23k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
363
22k
Into the Great Unknown - MozCon
thekraken
29
1.4k
Six Lessons from altMBA
skipperchong
26
3.3k
Atom: Resistance is Futile
akmur
261
25k
Building Adaptive Systems
keathley
36
2.1k
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 ご清聴ありがとうございました 🙇