個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Microsoft MVP for Developer Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

Orleans は何を解決するために生まれ、どのようなフレームワークなのか

古典的なWebアプリの問題点

  • 読み取り要求のたびにデータベースにアクセスするため、 データベースの負荷が大きい
  • アプリのインスタンスの状態をお互いが把握できず、データベースへの書き込み競合が発生する
  • 各々のアプリのインスタンスが状態を個別に持ちリソースの効率が悪い。

 

 
 

対策としてキャッシュ、キューなどを追加するも新たな問題が

  • 読み取り要求のデータベース負荷対策としてキャッシュを追加。代わりに、キャッシュの一貫性の問題が発生
  • データベースへの書き込み競合対策としてキューを追加。代わりに、非同期書き込みの待ちが発生


 
問題は軽減しているが、インフラを追加して厄介ごとをオフロードしているだけなので根本的な解決ではない…
スケーラビリティも確保できていない
 
 

根本解決のためのアプローチ(Orleans のコンセプト)

  • アプリインスタンスがお互いに会話し互いに連携することで分散アプリの問題を解決する
  • データベースを唯一の「真実のソース」とし、キャッシュやキューなどの余計なインフラ自体をなくす


 
これによって

  • 高スループット
  • 低レイテンシー
  • 高スケーラビリティ

が確保できることをねらって開発されました。
 
 

結局 Orleans とは

Orleans は、アプリケーションのフロントエンド と永続化ストレージ(DBなど)の間のステートフルでスマートな中間層を提供するフレームワークです。

 

Orleans のメリット

  • DB への書き込み競合の考慮が不要
  • キャッシュ不要
  • Appインスタンス間の一貫性考慮が不要
  • Appインスタンスを追加すれば自動でクラスターが構成される

 
分散アプリケーションを開発するときに発生するいろいろな面倒なことについて、
いい感じで面倒を見てくれるので、メリットだけを享受することができます。
Teams など超大規模サービスでの実績もある安定したフレームワークです

 
 
次の記事はこちらです。
hiro128.hatenablog.jp