PROBLEM

  • Elixirをさわりはじめてしばらく経つけどふかく理解した気になれない
  • Phoenixやほかのフレームワークに頼られないケースが出てきたとき自由な発想ができるようになっておきたい
  • 巷でいわれているSLA 99.9999999% などの実際がどうなのか腹落ちしてない

-

SOLUTION

というわけで、LYSE本を読むことにした。Elixirに関係ありそうな箇所を選定している。

  • 前回の分散の章でnine ninesのなぞが見えてきた。今回はそれを補完する分散OTPについてかんがえる。

分散アプリケーションの特徴

構成

  • 標準アプリケーション
    • アプリケーションコントローラ(ノード)
      • アプリケーションマスタ
        • スーパーバイザ
  • 分散アプリケーション
    • アプリケーションコントローラ(ノード)
      • アプリケーションマスタ
        • スーパーバイザ

ライフサイクル

  • 標準アプリケーション
    1. 読込中
    2. 起動中
    3. 停止中
    4. 解放中
  • 分散アプリケーション
    1. 読込中
    2. 起動中
      • 稼働中の分散ノードが死んだら稼働中ステータスに移行
    3. 稼働中
      • 稼働中ステータスは1つのノードのみ
    4. 停止中
    5. 解放中

再起動戦略

  • 特徴
    • ハードウェア障害を前提にしたCAシステムでよくとられます
    • ネットワーク分断を前提にしたCPシステムの場合は採用を熟慮すること
  • 2つの戦略
    • フェイルオーバー
      • アプリケーション停止後、別の場所で再起動する戦略
        • メインとバックアップを入れ替える方法
        • 複数台サーバを立ち上げて相互に負荷を補完しあう方法
    • テイクオーバー
      • アプリケーション復活後、バックアップからメインに移行する戦略

-

以上 :droplet: