まとめ
Azure Service Fabric のセッションを聞きました。アーキテクチャーは相当素晴らしいと思いますが、いかんせん WCF っぽかったり、この実装がスタンダードになるにはちょっと難しいかなという感じはしました。
スライドを見たコメントをつけていますが、私の英語力の限界もあり、そうとう間違った解釈もしていると思いますのでご容赦ください。
このボリュームは落ち穂拾いどころじゃないので、別にまとめるべきだったなぁ。。。
セッション感想



マイクロサービスのステートレスとステートフル

ステートレスのデモ

うーん。ここまで見てきたけど、イマイチピンと来ないのと英語がよく聞き取れないのでここまで。

前半は同じような話なので飛ばす。

デモの英語がインド系だけどコードがまだ何とかわかるので、こっちを見てみる
Actor を使ったデモ。 インクリメンタルするカウンターがプリミティブなフィールド。

こんな感じで無限ループでカウントアップさせていくよう

実行するとカウントアップする

ノードをリスタートすると。。。

カウンターがリセットされる

ではどうすればステートが保持されるか? シリアライザブルなクラスを追加し、Actorのジェネリクスに追加する

this.value ではなく、 this.State.value の値を使う。Actor が持っているっぽい。

デプロイしてブレイクポイントにも止まります。

先ほどのノードが1つだったのが3つに増えている。プライマリーとセカンダリーが2つ。特に設定はしておらず、自動的になった。

先ほどと同じように Node4 にリスタートをかけるとプライマリーノードがダウン。即セカンダリーにフェールオーバー。また、Node4 がセカンダリノードとして復活。

カウンターが途切れること無く続行(拍手) 。フェールオーバーまで3秒もかかっておらず、素晴らしい。

oh... Deep Dive ...

DeepDive をチラ見した感じだと、 Actor の歴史とかどうして使うかが説明されてて、もやもやがちょっと紐解けそうな感じがしました。

ここでやめようかと思ったけど、もうちょっとだけがんばって、次はアプリケーションのデプロイの話。
Code と Config をサービスごとにパッケージングする

各サービスをアプリケーションパッケージにまとめる。アプリケーションタイプにはサービスタイプとWebアプリケーションタイプに分かれる

サービスタイプ、アプリケーションタイプと分かれる。それぞれユニークな名前を持つようだけど、ちょっと理解出来ず。

サービス API は ステートレスかステートフルで選べる。

Reliable Collections 最強の図。複数のマシンでレプリケート可能で永続化可能で非同期でトランザクション制御もできる。

IReliableDictionary<K, V> のハッシュと、 IReliableQueue

コード例。 [ServiceContract]って めっちゃWCF臭がする。。。

てか、Namespace にめっちゃ WCF ってかいてるじゃん。。。

Actor と同じように、ステートレスのデモ。サービスをリスタートさせるとカウントが戻る

従来の Could Service と Stateful Service Fabric で作る場合の対比図。Service Fabric で作れば、 Reliable Collections で済んでしまうので、 Azure Queue も Table も不要になる。 従来のクラウドデザインパターンを覆すぐらいのインパクトありますね。

次はステートフルの例。やはり3パーティションできる。Actor と同じようにリスタートをかけても、大丈夫。Actor の時よりサービスが重いためか、なかなか Down から上がってこないが、残り二つのパーティションで頑張っている。

スケールアップの話。パーティションを増やすことでスケールアップできる。 RAID5とかと同じイメージ。 Node には複数のパーティションがあり、パーティションは必ず3つのレプリカを各 Node に作成する。

ロードバランサーでリクエストを受けて、各パーティションにリクエストを振り分ける。ところでこのパーティションを分割するとデータは垂直分割なんだろうか水平分割なんだろうか。

パーティション増やすのも ApplicationManifest.xml に書けば良いだけかな?

さっきよりグラフィカルな監視画面。例えばノード単位で落としても、フェールオーバーしてアプリケーションは継続して動く。

Chaos Test Service。ランダムでノードとパーティションを落として、耐久テストを行う。

ランダムで落としてもゾンビのように立ち上がってくるパーティション達。カウントはその間止まること無く増え続ける(拍手)

質疑応答も大人気。その間も止まること無くテストは続く。

次のセッションの準備中まで質問は続くよ。質問ではクラウドサービスからの移行はどうかとか、デプロイはどうかとか言ってました。移行はドキュメントを用意するのと、デプロイはリソースマネージャーで出来るよと言ってた気がする。
なるほど、この規模のデプロイは単純にいかないから、リソースマネージャーが結構フューチャーされていたのかなぁと感じがしました。
