BT

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

| 作者: Jan Stenberg フォローする 34 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2013年11月28日. 推定読書時間: 2 分 |

原文(投稿日: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が発表された。このコンセプトの背景にある基本アイデアが説明されている。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT