BT

Windows AzureでのCQRS

| 作者: Roopesh Shenoy フォローする 0 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2012年4月5日. 推定読書時間: 1 分 |

原文(投稿日:2012/03/30)へのリンク

CQRSは高い拡張性と性能を要求されるアプリケーションに適したパターンとして人気を獲得し始めている。Mark Seemann氏は“CQRS On Windows Azure”と題した記事で、このパターンをWindows Azureで使う方法を探っている。

CQRSはCommand Query Responsibility Segregationの略だ。このパターンは情報の更新と情報の読み取りを違うモデルで実行するという考えに基づいている。この考えを採用すれば、読み取りと書き込みの扱いを別にでき、異なるデータベースや異なるデータアクセス技術を利用できる。また、Eventual consistencyEvent Sourcingといったアーキテクチャパターンを利用できる。この記事の要点は、

  • 表示されているデータは既に古いと仮定する。UIは期待される値を正しくセットするために使う(例えば、スクリーン上のデータは何の保証にもならない)。
  • UIからのリクエストを処理しつつ、コマンドを作成し、(キューへ)送信して結果を可能な限り早く返す。Windows Azureの場合、Storageキュー上にChannelを実装することで実現する。
  • Workerロールを分離することで、UIから送信されたコマンドメッセージを取り出し、処理する。
  • 書き込みの冪等性を担保し、メッセージが複数回再送されてもデータがおかしくならないようにする。
  • Optimistic Concurrencyを利用する。Windows AzureではEtags(CloudBlob.Properties.ETag)を使うことで実現できる。
  • ビューデータの更新は異なるChannelを使って非同期で行う。はコントローラがこのChannelに問い合わせる。
  • 読み取りデータは非正規化にして、性能を改善する。

CQRS全般について調べるにはRinat Abdullin氏CQRSの紹介ページが便利だ。また、Martin-Fowler氏のエッセイやArunava Chatterji氏が書いたInfoQの記事“Healthy Architecturesも参考されたい。

この記事に星をつける

おすすめ度
スタイル

こんにちは

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