本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「.NETで始める分散型アプリケーションへのファーストステップ」を再編集したものです。
入社当初は5月病を懸念していましたが、杞憂だった新卒入社の西村凌です。
今回は、.NET向けの分散型アプリケーションフレームワーク「Orleans」をご紹介したいと思い記事を執筆いたしました。
Azure×Orleans=最強
Azureは可用性が高く、保守運用コストが低いことが強みです。そんなAzureと分散型アプリケーションを組み合わせることにより、開発現場は安心安全なシステムを迅速に提供することができ、ユーザーは安定してサービスを利用できる環境を作り上げることができます。
分散型アプリケーションの利点
システムダウンに強い
既存の中央集権型ネットワークの場合、1つのサーバーがダウンするとシステムダウンする可能性を秘めていました。しかし分散型ネットワークの場合、1つのサーバーがダウンしたとしても他のサーバーでデータを処理するため、正常動作する可能性が極めて高いことが特徴です。
完全性が高い
分散型アプリケーションは1つのデータを複数の情報に分割し、処理することでシステムが動作しています。従って、分割されたすべての情報を集めなければデータとして価値を持たず、改ざん時も同様にすべての情報を書き換えなければ意味がないため、正確なデータを維持しながら処理することができます。
サーバーの運用コストが低い
分散型ネットワークは高性能で高価なホストコンピュータが必要がなく、サーバーの保守運用を担当する管理者も必要ないため、サーバーの運用コストを抑えることが可能です。そのため、開発者は資金面での課題を抑え、提供価格を抑えることができます。
以上より分散型アプリケーションは開発者及びユーザーにとってうれしい仕組みであり、クラウドコンピューティングはコンピューティングリソースを容易に確保することが可能なため、AzurexOrleansの組み合わせは最強ということですね??
Orleansの特徴
「分散型アプリケーション最強!」
「分散型アプリケーションしか勝たん勝たん!」
「分散型アプリケーションが天下でしょ???」
と分散型アプリケーションを褒めちぎりたいのですが、、、
複数のパソコンでデータ処理をするシステムの性質上、今までのフレームワークはシステムが複雑化し開発者が状態を管理するのが困難という課題がありました。
重要なのでもう一度言います。
『状態を管理するのが困難という課題がありました』(過去形)
Orleansは「Grain」というオブジェクトで状態管理を簡易化しました。
Grainとは?
Orleansは「Grain」というオブジェクトで状態を管理し、開発者は個々のGrainがどのホスト上でアクティブになっているか明示的にプログラムを書けるため分散アプリケーションの構築や運用、管理が容易に実現できます。
また
・identity:ユーザー定義用の識別子
・behavior:異なるGrain or 型付けされた通信インターフェース
・state:揮発性or持続性の情報
基本的な構成要素が上記3点のため、容易にGrainの作成や操作が行えます。
導入障壁が低い
.NET開発者向けに開発されたフレームワークのため、
・async/await
・try/catch
・オブジェクト
・インターフェース
などのなじみ深い概念を採用し、Grainを意識するだけで分散型アプリケーションを構築可能です。
まとめ
今回は.NETの開発に慣れたエンジニア向けの分散型アプリケーションフレームワーク「 Orleans」のご紹介をしました。このフレームワークは分散型アプリケーション作成時の課題である状態管理を簡易化し、C#に馴染みのある機能を包括的にサポートします。開発事例はいまだ少ないですが、公式からチュートリアルやサンプルアプリも提供されているため、興味を抱きましたら是非勉強してみてください。
西村 凌/FIXER
インプット3割、アウトプット7割の比率で日々邁進中