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
48
第2回 雲勉LT大会 クラウド時代は CRUD ではなく CQRS で考えよう
iret.kumoben
July 30, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第149回 雲勉 AWS ベストプラクティスの最新と実際 AWS Well-Architected
iret
0
59
第148回 雲勉 Web アプリケーションセキュリティ
iret
0
36
第147回 雲勉 Amazon CloudWatchをウォッチ!
iret
0
55
第146回 雲勉 BLEAを眺めてCDKの書き方について学ぶ
iret
1
57
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
iret
0
56
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
100
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
47
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
120
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
330
Other Decks in Technology
See All in Technology
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
6
1.5k
mixi2 の技術スタックを探ってみる (アプリ編)
ichiki1023
0
110
20241125 - AI 繪圖實戰魔法工作坊 @ 實踐大學
dpys
1
440
Storage Browser for Amazon S3を触ってみた + α
miura55
0
100
ネットワーク可視化の世界
likr
7
5.7k
実践! ソフトウェアエンジニアリングの価値の計測 ── Effort、Output、Outcome、Impact
nomuson
0
1.3k
AWS re:Invent 2024 ふりかえり勉強会
yhana
0
700
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
26
7.1k
Google Cloud で始める Cloud Run 〜AWSとの比較と実例デモで解説〜
risatube
PRO
0
140
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
3
500
新しいスケーリング則と学習理論
taiji_suzuki
9
3.6k
【令和最新版】ロボットシミュレータ Genesis x ROS 2で始める快適AIロボット開発
hakuturu583
2
1.4k
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
40
2.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
For a Future-Friendly Web
brad_frost
176
9.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
850
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
940
Writing Fast Ruby
sferik
628
61k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
The Cult of Friendly URLs
andyhume
78
6.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 ご清聴ありがとうございました 🙇