石橋秀仁(zerobase)書き散らす

まじめなブログは別にあります→ja.ishibashihideto.net

ドメイン指向アーキテクチャのスモールスタートなロードマップ案

分散オブジェクト・アーキテクチャ/ドメイン指向アーキテクチャへの追記。

とりあえず「分散並列処理」という要件を後回しにすると:

  • オブジェクト・サーバーはScala (Play) + Redis/MongoDB で → ユーザー・インターフェイス(HTML)は取り扱わない。SOAのRPCサーバー。
  • ウェブサーバーはScala (Play)で → HTMLやJSONなどを取り扱い、ユーザー・インタフェイス層の一部を担う。ドメイン層のデータは持たないが、セッション管理などは担当する。

という考え方で。

次のステップでスケールアウトしながら、必要になったタイミングで分散化し、並列化する:

  • サーバー1インスタンスのなかに、オブジェクト・サーバーとウェブサーバーを同居させる。
  • オブジェクト・サーバーとウェブサーバーを分離し、RPCで連携させる。 →ここですでに分散化
  • ウェブサーバーを複数インスタンスにスケールアウトする。
  • オブジェクト・サーバーを複数インスタンスにスケールアウトする。 →並列分散化

という感じで。第2ステップ(あるいは第1ステップ)の分散化では、Ruby on RailsActiveResourceのようなRPCの仕組みが欲しい。この時点でFinagleを導入するかも。そうなると、第4ステップの並列分散化も、その延長で実装できるかもしれない。かなり希望的観測だけど、分散・並列化のレイヤーにドメイン層が依存しなければ、あとで差し替えてもいいわけで、まあいいでしょう。現時点ではこんなアーキテクチャ設計で。

あとは永続化インフラストラクチャの選定。Redisにするか、MongoDBにするか。Redis使おうかなーと。