Akka Clusterを運用していくとなると、社内でこの資料を読んで理解しておきたいねって話があった。
で、Scala関西 Summit 2016の資料じゃーん、おやもしかして動画あるんじゃね?って探したらあった。
【Scala関西Summit2016】Akka Clusterのネットワーク分断耐性設計
で、こちらを拝聴したところ、すごい世界が広がってたので、そこからのめりこむように、沼な世界を調べてったあたりのことをメモっておく。
沼の入口は↓
Akka Clusterの耐障害設計-スピーカーノート
冒頭の資料、動画のスピーカーノートは↓。
動画で聞きとれなかったところは、スピーカーノートで再度確認すると、さらに深い知見が伺える。
冒頭でお話されてた、Akka Clusterの適用領域に関する考察とかすごい。
Akka Clusterはmulti-tierサービスのうちfirst-tier、つまりクライアントとのインタラクションを伴いダイナミックにスケールすることが求められる領域に適用できます。
多層アーキテクチャのクライアント側に一番近い層を動的にスケールすることが求められる場合に、かなり良いと理解した。
soft-stateによる高い可用性と結果整合性による高いスケーラビリティを主軸にするアプローチをBASE(Basically Available, Soft state, Eventually consistent)といいます Akka Clusterをどこで使えば効果的かという問に答えると、BASEなシステムを構築するときだと私は考えています。
ということで、Akka Clusterは、クライアントに近いところで、BASEなシステムを構築するのに向いているとのこと。ふむふむ。
故障の種類
故障には4つの分類があるとのこと。
で、以下の書籍から引用されている様子…。

Introduction to Reliable and Secure Distributed Programming (English Edition)
- 作者: Christian Cachin,Rachid Guerraoui,Luís Rodrigues
- 出版社/メーカー: Springer
- 発売日: 2011/02/11
- メディア: Kindle版
- この商品を含むブログを見る
直訳すると、「信頼性が高く安全な分散プログラミングの紹介」ということで、分散プログラミングについて書かれた書籍ですね。
とりあえず、積んでおくか…
split brain問題
分散システムを組んでいると、リーダーがメンバーの状態を正しく把握することができない(死んでるよーって言ってるけど、本当は死んでないってことがあり得る、たとえばネットワークが瞬断されたあとで復活するとか)ために起こり得る問題とのこと。
split brain resolver
split brain問題の解決策。
Lightbend社が作った仕様は↓。
安田さんがその仕様を見たりして作られたやつが↓。
FLP Impossibility
FLP不可能性。
論文が↓
http://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf
「完璧なsplit brain resolverのストラテジはない」ということが証明されているとのこと。
以下のスライドでも紹介されている。論文を解説されている気配…すごい…
また、大村さんのスライドの中から引用されていたスライドが以下↓
このあたりもすごい分かりやすかった。
CAP定理の見直し
大村さんの資料の中であった。
以下に解説記事とかがある。
あと、以下は良書とのこと。

- 作者: Martin Kleppmann
- 出版社/メーカー: O'Reilly Media
- 発売日: 2017/04/02
- メディア: ペーパーバック
- この商品を含むブログを見る
紹介されている記事もあった。
まとめ
ざーっとソースを広げていくと、いっぱい広がりました。
とりあえず、ちょっとずつやっていこう…
以上です。