イベントソーシング・CQRSについてのアンケート 【5】使ったことのない方からの疑問や質問
株式会社ジェイテックジャパン CTOの高丘 @tomohisaです。2024年9月17日に吉祥寺.pm36で登壇をする際にイベントソーシングに関するアンケートを実施しましたが、この記事でその集計を公開します。
アンケートの詳細については以下の記事で説明しました。よろしければご覧ください。
またアンケート第2弾では良い点と悪い点についてアンケート結果をまとめています。
またアンケート第3弾では、成功の鍵についてのアンケート結果をまとめています。
またアンケート第4弾では、フレームワーク使用に関するアンケートの結果をまとめています。
この記事では、イベントソーシングの経験のない方などから寄せられた疑問や質問をまとめます。
疑問の質問の答えも少しづつ追記していきたいと思いますのでよろしくお願いします。
疑問や質問
質問:あまり知らない方、イベントソーシング・CQRSに関して疑問に思うことがあれば挙げてください
実装前の設計手法であるイベントストーミングはかなりの経験やスキルが必要なのではと感じています - 社内のマネージャー
「イベントソーシング・CQRS」名前を聞いたことがある程度です。なんとなく規模の大きめなソフトウェア開発に向いてる気がしますが、どんな種類のソフトウェアの開発にメリットがあるものでしょうか。ネットワーク接続しないソフトウェア(小さいコンソールアプリや組み込み系アプリ)でも使えますか? - (匿名)
ドメイン駆動設計で運用されているプロダクトをイベントソーシングに切り替えていくおすすめのステップなどあれば教えて欲しいです! - kazu_kichi_67
処理が途中でコケたときのフローをどのように設計するべきか - shimabox
監査対策としてaudit log的な利用が出来るという言及を見るような気がするのですが、実際のところどうでしょうか。幻想ですか? - @shotanue
"・業務パッケージ製品として開発するようなケースの場合、どうしても後で顧客ごとのカスタマイズが必要となるケースがある。その場合のカスタマイズが難しそうなイメージがある。
・データ量が多くなってしまうイメージがある。パフォーマンスに問題なくスケールするのだろうか?
・フロントエンドでは、全てのイベントではなくリクエスト時点のスナップショットが必要となるが、どのようなAPIを作ればいいのかわからない
・DWHへの受け渡し方がイメージできない - (匿名)"
結局のところ日本のエンジニアの多くは SIer のピラミッド構造の中で働いています。ES+CQRS は非常に合理的で魅力的なアーキテクチャだと思いますが、SIer の中で流行らない限りは市民権を得ることは難しいのではないかと考えています。これを前提とした場合、どのようにして SIer のなかで ES+CQRS を普及させると良いでしょうか。何か想定し得る戦略などがあればご教示いただきたいです。 - (匿名)
DB設計やCとQの連携部分の理解が浅いです。解説記事もそれなりに存在している認識ですが、やはり難易度が高いと感じているため、噛み砕いたものが増えると嬉しく思います。 - 非匿名希望
DB操作がCREATEとREADだけになるというところは知っているものの、これがどううれしいのかよくわからないです。 - (匿名)
"①非同期処理を前提とした説明が多く、小さめの(パフォーマンス面で非同期にする必要がないような)システムには複雑だと感じてしまいます。 たとえば値を書き込んだ直後に再取得したいときなど、フレームワーク側で良い感じにやってくれるのでしょうか?
②イベントソーシングは仕様変更に弱いイメージです。困ったことはありますか? - (匿名)"
"イベントソーシングは、毎回状態をイベントから復元しないといけないのか、よくわかっていない。最新状態を別途保存するようにすると、結局状態と履歴を別で保存しているだけになる?
CQRSは、データソースを分けないといけないのか。 - (匿名)"
まだまだ事例が少ないのでいろんな会社さんの話を聞きたい〜 - かきあげせいろ
何もしらないので基本が知りたい - (匿名)
"途中からイベントソーシングを導入する難しさはどれくらい?
今までUPDATEやDELETEを利用して運用してきたが全体です。
- (匿名)"
"- 学習におすすめの書籍があれば知りたい。特に私が業務で利用している言語(PHP / Ruby / TypeScript)についての言及があるとなおよい。
- イベントを発行するには、最新のエンティティの情報が必要になると思うが、イベントからエンティティを導出する際の最適解はなにか(たとえばスナップショットを取っておく場合、どのように、> どのタイミングで、どれくらいの頻度で取るとよいか、など)
- たとえばショッピングカートシステムにおける商品名のようにマスターデータのような性質を持つデータにおいて、ビューモデルはどのように設計するとよいか(ビューを非正規化して保持する場合、商品名が変更されたとき、カートビューや在庫ビューなど、多くのテーブルを更新しなければなくなる?)。 - @piyorinpa"
NewSQLを使うべきシーンとの比較が知りたい - ひろた
CQRS使うべきパターンとそうでないパターンが知りたいです! - (匿名)
正直CQRSは社内で取り入れているが、CQRSだから嬉しい、みたいな経験がなく困っています。正直こういうユースケースでしっかり利用できるみたいな理解がないのでそこすごく知りたいです - u-na-gi
色々調査中・・・ - かろっく
スマホアプリなどで個人情報など端末内に保存する情報が多い場合に、イベントソーシング・CQRSを取り扱うときに計算速度など特に気をつける必要になるものがあるか知りたい。 - (匿名)
まとめ
上記の質問を見ても、わかりやすい書籍や体系的な説明をするリソースが必要なのがよくわかりますね。かと言って通常のRDBを使う開発に色々なアーキテクチャがあるように、イベントソーシング・CQRSを使う開発にも様々な書き方や考え方があり、イベントソーシング・CQRSを使用している場合でも皆の答えが同じになるわけではありません。
そうなるとやはり設計方針ごとにそのフレームワークなどを使った時の色々な場合の対処方法を体系的に説明するソースが必要だなと感じました。
みなさんにわかりやすい情報を準備できるように頑張っていきたいと思います。
吉祥寺.pm36の参加レポート及び、登壇のスライドと練習動画はこちらです。
Discussion