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
51
第2回 雲勉LT大会 クラウド時代は CRUD ではなく CQRS で考えよう
iret.kumoben
July 30, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第150回 雲勉 AWS AppSyncではじめるGraphQL体験
iret
0
28
第151回 雲勉 プロジェクトのドキュメントにおける課題をAmazon Bedrockで解決してみる
iret
0
12
第152回 雲勉 シームレスなマルチリージョンへの移行と検討 ~Amazon EKSとAWS Global Acceleratorを使用した環境〜
iret
0
15
第149回 雲勉 AWS ベストプラクティスの最新と実際 AWS Well-Architected
iret
0
69
第148回 雲勉 Web アプリケーションセキュリティ
iret
0
37
第147回 雲勉 Amazon CloudWatchをウォッチ!
iret
0
55
第146回 雲勉 BLEAを眺めてCDKの書き方について学ぶ
iret
1
63
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
iret
0
60
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
110
Other Decks in Technology
See All in Technology
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
190
FODにおけるホーム画面編成のレコメンド
watarukudo
PRO
2
260
GoogleのAIエージェント論 Authors: Julia Wiesinger, Patrick Marlow and Vladimir Vuskovic
customercloud
PRO
0
130
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
1
16k
【NGK2025S】動物園(PINTO_model_zoo)に遊びに行こう
kazuhitotakahashi
0
220
Reactフレームワークプロダクトを モバイルアプリにして、もっと便利に。 ユーザに価値を届けよう。/React Framework with Capacitor
rdlabo
0
120
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
6
54k
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
2.1k
CDKのコードレビューを楽にするパッケージcdk-mentorを作ってみた/cdk-mentor
tomoki10
0
200
iPadOS18でフローティングタブバーを解除してみた
sansantech
PRO
1
130
Amazon Q Developerで.NET Frameworkプロジェクトをモダナイズしてみた
kenichirokimura
1
200
#TRG24 / David Cuartielles / Post Open Source
tarugoconf
0
570
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
860
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Done Done
chrislema
182
16k
Bash Introduction
62gerente
610
210k
What's in a price? How to price your products and services
michaelherold
244
12k
Practical Orchestrator
shlominoach
186
10k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
113
50k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
A designer walks into a library…
pauljervisheath
205
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
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 ご清聴ありがとうございました 🙇