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
71
第2回 雲勉LT大会 クラウド時代は CRUD ではなく CQRS で考えよう
iret.kumoben
July 30, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
iret
1
29
第162回 雲勉 比較して学ぶ AWS Amplify Gen 2
iret
0
41
第161回 雲勉 Amazon Kinesis Data Streams と Amazon Data Firehose を使ってみよう
iret
0
44
第160回 雲勉 それ、AWS Step Functions で置き換えれん?
iret
0
65
第159回 雲勉 Amazon Bedrock でブラウザを操作する AI エージェントを作ってみた
iret
0
77
第158回 雲勉 AWS CDK 入門 ~ プログラミング言語で書くインフラ Python 編 ~
iret
0
62
第157回 雲勉 AWSインフラ監視をNew Relicで行う際の個人的Tips
iret
0
61
第156回 雲勉 AWS on Windows入門
iret
0
95
第155回 雲勉 サーバレスアーキテクチャを 用いたコスト重視 AI サービス
iret
0
65
Other Decks in Technology
See All in Technology
In Praise of "Normal" Engineers (LDX3)
charity
0
440
"SaaS is Dead" は本当か!? 生成AI時代の医療 Vertical SaaS のリアル
kakehashi
PRO
3
170
Tenstorrent HW/SW 概要説明
tenstorrent_japan
0
370
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
6.4k
自分を理解するAI時代の準備 〜マイプロフィールMCPの実装〜
edo_m18
0
100
“プロダクトを好きになれるか“も QAエンジニア転職の大事な判断基準だと思ったの
tomodakengo
0
110
Ретроспективный взгляд на Vue 3. Даша Сабурова, Vue-разработчик Lamoda Tech
lamodatech
0
1.2k
What's new in OpenShift 4.19
redhatlivestreaming
1
190
Devin(Deep) Wiki/Searchの活用で変わる開発の世界観/devin-wiki-search-impact
tomoki10
0
280
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
770
QAはソフトウェアエンジニアリングを学んで実践するのが大事なの
ymty
1
350
開発効率と信頼性を両立する Ubieのプラットフォームエンジニアリング
teru0x1
0
130
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
KATA
mclloyd
29
14k
Writing Fast Ruby
sferik
628
61k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
The Language of Interfaces
destraynor
158
25k
Raft: Consensus for Rubyists
vanstee
139
7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Code Reviewing Like a Champion
maltzj
524
40k
Balancing Empowerment & Direction
lara
1
270
The Cult of Friendly URLs
andyhume
79
6.4k
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 ご清聴ありがとうございました 🙇