BT

Akkaを使ったリアクティブなDDDおよびCQRSベースのアプリケーション構築

| 作者: Jan Stenberg フォローする 34 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2014年7月15日. 推定読書時間: 2 分 |

原文(投稿日:2014/06/28)へのリンク

ドメイン駆動設計(DDD/Domain-Driven Design)の目標は,拡張性と一貫性の要件を考慮しながら,複雑なビジネスドメインを管理可能なコンポーネントに分解することにある。これはさらに,コンテキスト境界(bounded context)やトランザクション境界(transaction boundary),イベントベース通信といった概念をベースとするソフトウェア構築に有用なCQRSとも結合される &ndash: Pawel Kaczor氏はこれらの概念に基づいて,イベント駆動アプリケーション用のオープンソースプラットフォームであるAkkaを使用するリアクティブなアプリケーション構築を紹介する3部シリーズを,このような説明で始めている。

ITコンサルタントとして現在はCQRSとScalaに関わる氏は,グローバルなトランザクションによって保証される一貫性について,真の要件はおろか,企業クラスのシステムとしての要件さえも満足しないような,作為的なものに過ぎない,と述べている。DDD/CQRSアーキテクチャのメリットを最大限に享受するために,氏は,その基本となっているテクノロジの変更を提案する。推奨するのは,ストレージとしてはNoSQLデータベースを,JVMプラットフォームとしてはAkkaを使用することだ。Akkaがエンタープライズアプリケーション構築用のプラットフォームとして認められるようになった理由は,先日リリースされた,永続化可能なプロセスを扱うための永続化モジュールにある。

最初の例は,イベントをソースとする集約ルート(Aggregate Root)をAkkaで構築する,というものだ。集約ルートは,コマンドを非同期に受け入れてイベントを生成する,ステートフルなアクタとしてモデル化する必要がある。コマンドが受け入れられると,それを表現するイベントメッセージが生成される。イベントが永続化されると認識メッセージが返送され,そのイベントが伝搬される。

Akkaのアクタは,スーパバイザとなる他のアクタによって生成される。このスーパバイザパターンでは,集約ルートアクタの生成に単一のアクタを使用することによって,クライアントのインタラクションが簡単になる。ライフサイクルを終了させるために,処理を終了してアイドル状態になったアクタは,破棄されるか停止するかを親アクタに問い合わせる必要がある。

クエリ側として氏は,プロジェクションの操作に必要なインフラストラクチャを実装している。ここでは,ふたつのAkkaモジュールを利用することができる。ひとつは試験的実装としてマークされているAkka Persistenceで,プロジェクションの概念をサポートする。もうひとつ,現在開発中のAkka Streamsは,先日発表された非同期ストリーム処理の標準を,JVMプラットフォーム上で実装したものだ。

氏はこのサンプルソースをgithub上で公開している。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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