Java読書会BOF「マイクロサービスパターン」を読む会 第4回議事録

[ 戻る ]


===================================================================
Java読書会BOF「マイクロサービスパターン」を読む会 第4回
===================================================================

.. csv-table:: 開催概要

  "日時", "2021年11月27日 10:00 - 17:00"
  "場所", "川崎教育文化会館 第3会議室"
  "出席者(敬称略)", "高橋(徹)、高橋(智)、岩室、根本、平山、吉本、加藤、遠藤(書記)"

* 本日はp173 「5.2.3 アグリゲートのルール」から読書開始です。


Chapter 5 マイクロサービスアーキテクチャにおけるビジネスロジックの設計
========================================================================

--------------------------------------------------------------
5.2 DDD の Aggregate パターンを使ったドメインモデルの設計
--------------------------------------------------------------

5.2.3 アグリゲートのルール
---------------------------------------------------

* アグリゲートはライフサイクル?
 
  * 多分そう

* DeliveryInfoやPaymentInfoの実装クラスは使いまわすのか?

  * このコンテキストでは重要でないのでは?
  * サンプルコードを見てみよう

* シャーディングは今はバッドプラクティス?

  * シャーディングをまたがるとアウト

* DeliveryInfoなどの値型は実装上共通化できるのか?


5.2.4 アグリゲートの粒度
---------------------------------------------------

5.2.5 アグリゲートを使ったビジネスロジックの設計
---------------------------------------------------

* voidSaveは誤植?

--------------------------------------------------------------
5.3 ドメインイベントのパブリッシュ
--------------------------------------------------------------

5.3.1 なぜ変更イベントをパブリッシュするのか
--------------------------------------------------------------

* WebSocketがWebSoketになっている

5.3.2 ドメインイベントとは何か
--------------------------------------------------------------

5.3.4 ドメインイベントの見つけ方
--------------------------------------------------------------

5.3.5 ドメインイベントの生成、パブリッシュ
--------------------------------------------------------------

* registerDomainEventの呼び出しがかんたんではない?

  * アグリゲートルート以外の子供のオブジェクトのこと
  * 「アグリゲート内のそれ以外のクラスのメソッド」 が正解

* List<Event>はList<DomainEvent>では?

  * 原文でもList<Event>。Domainを省略しただけ?


5.3.6 ドメインイベントの消費
--------------------------------------------------------------

* 2のRestaurantMenuRevicedはゴミ


--------------------------------------------------------------
5.4 キッチンサービスのビジネスロジック
--------------------------------------------------------------

* 同じ単語でも英語と日本語が混ざったりしている。
* キッチサービスがRestaurantRepositoryに依存していいのか

5.4.1 Ticket アグリゲート
--------------------------------------------------------------

* TicketにJPAのアノテーションをつけまくっていいのか?

* テーブル名は大文字小文字区別されるのか?

  * SQL標準では言及されてないと思われる
  * メジャーな実装では区別されない

* orElseThrowはどこのAPI

  * springだと思われる
  * Repositoryはspring
  * orElseThrowはOptionalのメソッドでした
  

* acceptしたあとupdateを呼び出さないの?

  * saveは新規のみ?
  * どこかでフレームワークがUpdateをはっこうする?


--------------------------------------------------------------
5.5 オーダーサービスのビジネスロジック
--------------------------------------------------------------

* リスト5.16 isGraterThanOrEqual を使っているけど、逆じゃない?

  * ifで!が抜けてる?
  * isGreaterThanOrEqualはどこに由来するもの?⇒Moneyクラスは

5.5.1 Order アグリゲート
--------------------------------------------------------------

5.5.2 OrderService クラス
--------------------------------------------------------------

--------------------------------------------------------------
5.6 まとめ
--------------------------------------------------------------

Chapter6 イベントソーシングを使ったビジネスロジックの開発
========================================================================

--------------------------------------------------------------
6.1 イベントソーシングを使ったビジネスロジックの開発
--------------------------------------------------------------

6.1.1 従来の永続化が抱える問題点
--------------------------------------------------------------

* コンピュータのベトナムってどういう意味だろう

6.1.2 イベントソーシングの概要
--------------------------------------------------------------

イベントストアにイベントが保存できなかったらどうすればいいのだろう?

6.1.3 楽観的ロックを使った同時更新
--------------------------------------------------------------

* 複数が同時に更新しようとしたらどうなるの?

  * 一人は成功するはず
  

6.1.4 イベントソーシングとイベントのパブリッシュ
--------------------------------------------------------------

6.1.5 スナップショットを使ってパフォーマンスを向上させる。
--------------------------------------------------------------

6.1.6 べき等なメッセージ処理
--------------------------------------------------------------

6.1.7 進化していくドメインイベント
--------------------------------------------------------------

* 「これらの変更の多くには?」と書いてあるが、互換性の欄は「なし」のほうが多い

  * 原文にはmanyと書いてある
  * ユースケース的な意味では、互換性のあるもののほうが多いハズ

* Flyway使っている?

  * Railsでは同様のものが組み込まれている

6.1.8 イベントソーシングの利点
--------------------------------------------------------------


6.1.9 イベントソーシングの欠点
--------------------------------------------------------------

* 次回はP247 「6.2 イベントストアの実装方法」から


[ 戻る ]