まとめ
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。ランダムでノードとパーティションを落として、耐久テストを行う。
ランダムで落としてもゾンビのように立ち上がってくるパーティション達。カウントはその間止まること無く増え続ける(拍手)
質疑応答も大人気。その間も止まること無くテストは続く。
次のセッションの準備中まで質問は続くよ。質問ではクラウドサービスからの移行はどうかとか、デプロイはどうかとか言ってました。移行はドキュメントを用意するのと、デプロイはリソースマネージャーで出来るよと言ってた気がする。
なるほど、この規模のデプロイは単純にいかないから、リソースマネージャーが結構フューチャーされていたのかなぁと感じがしました。