Aggregates Composition: A new view on Aggregates - Jérémie Chassaing - DDD Europe 2023

Domain-Driven Design Europe
6 Mar 202453:24

Summary

TLDRスクリプトは、ホスピタリティ業界で15年間働いた外国人の専門家が、ホテルの予約やプランニングを管理する会社で建築家として働いていることを紹介しています。講演では、集約、構成、そして「decider」という用語について説明し、集約の定義のあいまいさと力、またその弱点についても触れています。deciderパターンを紹介し、これは集約を明確な方法で書くことができ、インメモリやイベントソーシングなどの異なる方法で動作する集約を作成する方法を説明しています。また、deciderを組み合わせて複雑なシステムを構築する方法も示されています。

Takeaways

  • 🌟 集約化とコンポジションの概念が紹介され、集約化は境界内の一貫性を保つもの、コンポジションは複雑性を減らすために使用されることについて説明されています。
  • 🔍 集約化の定義は曖昧であり、強みと弱みの両方を持っていると指摘されています。集約化は内部の一貫性を保つが、どのようにそれを管理するかは明確にしていません。
  • 📈 集約化を設計する際には、小規模な集約化が独立して動作する多くの小さなピースになることがあり、これによりコンカレンシーやインフラストラクチャの複雑性が増大します。
  • 🛠️ 問題を解決するために提案された「Deciderパターン」。このパターンは、特定の形状を持つ集約化を定義し、興味深い性質を持つことを説明しています。
  • 🔧 Deciderパターンは、コマンドを受け取り、状態を変化させるだけでなく、イベントを出力する機能も持っています。これにより、永続化やイベントソーシングに使用できます。
  • 🔄 Deciderパターンは、不変データ構造を使用し、状態の変更を純粋な関数で管理します。これにより、テストや理解が容易になります。
  • 📚 シンプルなドメイン例(電球と猫)を使用して、Deciderパターンが実装され、テストされ、実行される方法が説明されています。
  • 🔗 複数のDeciderを組み合わせて、1つのDeciderとして扱うことができる。これにより、関連するドメインロジックをグループ化し、管理が容易になります。
  • 🔄 永続化とイベントソーシングの両方にDeciderパターンを使用することができ、インフラストラクチャに依存しないドメインロジックの実装が可能になります。
  • 🎯 Deciderパターンを使用することで、ドメインロジックのテストが容易になり、状態の変更に関連するテストも簡単に行えます。
  • 🛠️ Deciderパターンは、ドメインロジックをシンプルで再利用可能な形で構築し、様々な方法で実行可能にすることができる強力なツールです。

Q & A

  • どのような職業の人物が話している?

    -脚本の人物は15年間ホテルの予約やプランを管理する会社で働いている建築家です。

  • 集約(Aggregate)とは何ですか?

    -集約は、境界内の一貫性を保持するものであり、内部は一貫性がある必要がありますが、どのようにそれを管理するかについては言及されていません。

  • Deciderパターンは何を可能にしますか?

    -Deciderパターンは、集約を明確に定義された形で書くことを可能にし、特定の型を持つ異なるものを扱うことができます。

  • Deciderパターンの利点は何ですか?

    -Deciderパターンの利点は、永続化に関連するコードを変更することなく、ドメインコードをテストし、インメモリで実行することができます。

  • どのようなシンプルなドメイン例が挙げられましたか?

    -シンプルなドメイン例として、電球と猫が挙げられました。電球はソケットに取り付けられ、使用回数に応じて故障する可能性があります。猫は寝ていると觉醒しているという2つの状態があります。

  • どのようにしてDeciderをテストするのか?

    -Deciderをテストするためには、期待されるイベントと実際の出力が一致していることを確認するBDD(Behavior Driven Development)テストが使用されます。

  • インメモリでのDeciderの実行方法は何ですか?

    -インメモリでのDeciderの実行では、状態を変更するための命令を送ることができます。状態はミュータブルな変数として扱われ、各命令を処理することで新しい状態が生成されます。

  • 状態を永続化するために何が必要ですか?

    -状態を永続化するためには、シリアライザーとキーバリューストア(またはイベントストア)が必要です。シリアライザーは状態を文字列に変換し、キーバリューストアに保存します。

  • Deciderを複数のインスタンスで実行するにはどうすればいいですか?

    -Deciderを複数のインスタンスで実行するためには、各インスタンスに一意の識別子を割り当て、状態を辞書(またはマップ)として管理する必要があります。

  • プロセスとは何ですか?

    -プロセスは、イベントをリッスンしてコマンドを発行し、内部状態を持つステートマシンです。プロセスは、新しいイベントを生成するDeciderと組み合わせることができます。

  • Deciderとプロセスの組み合わせの利点は何ですか?

    -Deciderとプロセスの組み合わせにより、複数のドメインロジックを単一のユニットとして実行できます。これにより、インフラストラクチャの変更なしにインメモリ実行とイベントソーシングの間を簡単に切り替えることができます。

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This

5.0 / 5 (0 votes)

Related Tags
集約構成デシダーアーキテクトホテル予約外国企業技術発展状態管理イベントソーシングコードサンプル
Do you need a summary in English?