BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Vaughn Vernon氏、リアクティブドメイン駆動設計について語る

Vaughn Vernon氏、リアクティブドメイン駆動設計について語る

ブックマーク

原文(投稿日:2013/11/19)へのリンク

アクターモデルドメイン駆動設計(DDD)を組み合わせることで、イベント駆動ヘキサゴナルアーキテクチャでよく見られるアーキテクチャオーバーヘッドを取り除けるかもしれない。Implementing Domain-Driven Designの著者であるVaughn Vernon氏が、ScalaAkka(アクターモデルの実装)を使ったリアクティブDDDについて説明した

「リアクティブ」という新たな用語が使われているが、実際のところまったく新しい概念というわけではない。多くの人はイベントやメッセージに反応することに馴染みがあるはずだ。でも、これは私に新たな変化をもたらしてくれた。Vaughn氏はこう言って、アクターモデルの基本特性を次のように定義した。

  • ダイレクトな非同期メッセージング。アクターは別のアクターに直接かつ非同期にメッセージを送る。
  • ロックフリーの並行性。アクターはロックを扱わない。インフラストラクチャだけがロックを扱う。
  • 何も共有しない。アクターは他のアクターの内部状態について何も知らない。

Vaughn氏がDDDを使うモチベーションの1つは、ビジネスのコアとなる側面を、非常に明確なやり方でモデル化したいためだ。通常、イベント駆動アーキテクチャの場合、ドメインモデルで明確にし、ドメインイベントがモデルに表現力を加えるが、完全にはっきりするわけではない。というのも、ドメインイベントが発行されたとき、そのイベントに反応するコードの場所や、最終的にモデルに影響を及ぼすコードの場所を見つけるが困難だからだ。
これに対し、アクターモデルは非常に明確だと彼は考えた。アクターがメッセージを他のアクターに送るとき、それはコード上に非常に明確に現われるためだ。

Vaughn氏の疑問は、DDDでアクターモデルを使うことで、どれだけのメリットがあるかだ。すべて以前と同じアーキテクチャで、アグリゲート間でメッセージを送るだけの話なのだろうか? それに対する彼の答えは、ノーだ。彼はこれにより、イベント駆動やヘキサゴナルアーキテクチャでよく見られるアーキテクチャオーバーヘッドの多くを取り除けると考えている。適切なフレームワークを用いることで、アーキテクチャをただのコントローラとアグリゲートにすることができる。コントローラがアクターになる。これはメッセージをディスパッチしてモデルのアグリゲートとやりとりする方法を知っている。
彼はアクターモデルとDDDが使える場所に制限があるとは思っていない。それどころか、高いスケーラビリティ、高い可用性、低いレイテンシが必要とされる場所にも適用可能だと考えている。

AkkaはJVM用に作られているが、Vaughn氏はAkkaをC#およびF#に移植しようと、Akka.NET実装に取り組んでいる。

今年前半、Vaughn氏はアクターモデルとDDDの組み合わせについて語った

2013年9月にReactive Manifestoが発表された。このコンセプトの背景にある基本アイデアが説明されている。

この記事に星をつける

おすすめ度
スタイル

BT