36
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

設計ナイト2020感想

Last updated at Posted at 2020-10-28

吉祥寺.pm様主催の設計ナイト2020に参加してきました。
ついていけてない部分もあって全部覚えきれていませんが、これ以上忘れる前に書き留めておきます。

CQRS+Event Sourcing

最初はかとじゅんさんによる発表でCQRSとEvent Sourcingについての説明でした。資料は以下のリンクです。
https://speakerdeck.com/j5ik2o/event-sourcingwojie-shuo-suru
まとめると以下のような内容でした。

  • CQRSは境界を引いてCとQを完全に分断しなければならないので、コストがかかる。
  • Event Sourcing無しでCQRSは難しい。
  • コストをペイできるほどの大規模なものや、耐障害性を求めないならやらないほうがいい。

かとじゅんさんが提示されていた現実解は私もよくやっていました。WEBサービスをベースに考えますが、そもそもクエリパラメーターによって条件を変化させたり、ページネーションのような取得件数の上限を設けたりしなければいけないGETリクエストと、ドメインロジックによるほぼ固定された条件によるデータ取得しかしないその他で同じモジュール使ってデータ取得すると、どっちかに負債ができるので、最初から別々のモジュール使ったほうがいいと思ってます。ただ、かとじゅんさんが提示されていた現実解ではクエリでドメイン側のVO使うとされてましたが、私は全て禁止してました。基本的にはデータ設計はイミュータブルデータモデル(入門編,世代辺)をベースにしてるのですが、クエリ用に非正規化されたテーブル用意したりもしますし、クエリ側にコマンドのVOのロジックが影響を及ぼすのは嫌だったので。DRYではないのでは?と思うこともありましたが、そこは許容範囲だと思ってます。
イベントストアについては、チャット欄含めていくつかおすすめされてました。

  • HBase
  • Kafka
  • Datomic

今後Event Souringやることになったら参考にしてみようと思います。

GraphQL

qsonaさんの発表はGraphQLについてでした。資料は以下のリンクです。
https://hackmd.io/@jnl1y8gDTkq7ywsLXpa6GQ/HkDGObSOP
GraphQLについてはクライアントサイドもサーバーサイドも扱ったことがないので、あまりついていけてませんでした。
ただ、具体的な実装についても資料で提示されているので、今度自分で作ってみてもいいなと思いました。
BFFでGraphQLを使うという意見もありましたが、こちらについては「BFF自体がフロントエンドの特定のユースケースを満たすという目的で作られるものなので、あらゆるクライアントサイドで好きにやらせる目的で作るGraphQLとはニーズが合わないのではないか」という意見があり、これには納得しました。

まとめ

こういう設計の話は大好きなので、こういうイベントもっと参加したいのですが、中々ないのですよね。(探し方が悪いだけかもしれませんが)
もっと話ついていけるように、プログラミング言語だけでなくストレージとかキューとかの技術をもう少し触っていこうかなと思いました。

36
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?