Fire and Forget

書いたら忘れる、開発やプログラミングに関するブログ。最近はScalaやAkkaなど。

Reactive Messaging Patterns with Actor Modelを読んで見る

Reactive Messaging Patterns with Actor Modelを読んで見る

Vaughn Vernon氏の「実践ドメイン駆動設計」を読んだのですが、C#のソースの紹介しかなくて、いまいちScalaでどのように実装してよいか わからなかったので、同著者の「Reactive Messaging Patterns with Actor Model」(RMP本(仮))を買って読んでいます。

Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka

Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka

実践ドメイン駆動設計著者自らが、本のなかで出てきたパターンをAkkaでどのように実装するかを解説してくれていますので、かなり参考になります。
僕はIDDD本の中で出てきたCQRSやイベントソーシング、長期プロセス(サーガ)をどのように実装してよいかわからなかったのですが、この本に助けてもらってなんとか実装できそうです。
他にも、

  • ヘキサゴナルアーキテクチャ、ポート&アダプターってどうするの
  • 腐敗防止層ってどうやるの
  • 境界づけられたコンテキストの統合
  • マイクロサービス
  • 結果整合性
  • トランザクションってどうするの
  • メッセージのルーティング、チャンネル

などがわからない時に参考になると思います。 まだ、つまみ読みしかしていないので、他にもたくさんあると思います。IDDD本の内容は大体カバーしてるんじゃないかな。。

Akkaの紹介、スーパーバイザ、Akka ClusterやAkka Cluster Sharding、Akka Remoteの解説も充実しているのでそれだけでも読む価値があると 思います。

表紙に「Foreword By Jonas Bonér, Founder of the Akka Project」ってあるので、僕なんかの推薦よりよっぽど説得力がありますね。
Jonasさんはこの前の、ScalaMatsuriでも登壇されていましたね。

ちょっと気をつけたほうがよいのが、Akka Persistenceが実験的(experimental)な機能の時にかかれているので、 Persistent Viewの紹介がありますが、今はPersistent Queryに変わっている?ので参考にならないかもしれないです。

この本で学べること

背表紙に書いてあることを雑にまとめると。

  • どのようにしてリアクティブシステムがコア、ミドル、エッジのあらゆる場所で、複雑なものををシンプルに変えるか。
  • アクターやアクターシステムの特徴、Akkaがどのようにパワフルにしてくれるか。
  • 複数の計算資源でスケールするシステムをどのように構築するか。
  • それぞれのアプリケーションや統合の際にチャンネル機構の構成や適したチャンネルをどのように選ぶか。
  • 送信者の意図を明確に運ぶメッセージをどのように構成するか。
  • DDDの文脈で、どのようにプロセスマネージャーを実装するか。
  • メッセージソースとメッセージの宛先をいかにして分離するか。そして、どのようにそのルーターの中に適切なビジネスロジックを統合するか。
  • メッセージの変換がどのようにして、アプリケーションやインテグレーションに適合するか。
  • イベントソーシングを使ったPersistent Actorsの実装、 CQRSを使ったリアクティブビューをどのように実装するか。
事前にあると良い知識

まずは同じ著者(Vaughn Vernon氏)の「実践ドメイン駆動設計」(IDDD本)は読んでおいたほうが良いです。IDDD本を読んでいないとピンと来ないと思います。IDDD本を読んだけど、いまいちScalaでの実装が想像できなかった人はこの本を読むと良いと思います。 Akkaの簡単な解説はこの本に含まれていますが、ScalaやAkkaの知識はあったほうが良いです。 Enterprise Integration Patterns(EIP)(なんで翻訳されていないんだ。。)も度々言及されているのであると良いのかもしれません。僕は読んだことがありません。  

各章の紹介

 読み進めて、気が向いたら書く。
 読書会も企画中です。興味ある方はtwitterでメッセージください。