Chaos Monkeyの兄弟がほとんど利用できないって知ってた？

# 初めに
- AWSで結構システム構築しているし、可用性試験の知見を深めるためにカオスエンジニアリングのこと知りたい！何かツールを試してみようかな。そうだ、Chaos Monkeyとその兄弟っていたよな！と調査したところ、カオスエンジニアリング自体の概略しか見つからず、意外とツールのノウハウが出てこないなと驚いた。
- サービスが落ちること自体を許容できる企業さんが少ないのかな、あっても社外秘扱いで表に出ないかな？とも思ったのですが、それにしても少ない。探し方が悪いのか？と英語で調べたところ、なんと彼らはほぼ絶滅or非公開となっていた。
   - どうりでAWS系の記事を読んでも、使ってみた系の記事を見なかった訳だ。
- 恥を晒すようで気が引けますが、本件に日本語情報で触れているページがあまり見つからなかったので、他に幸せになる人がいるかも。と思って残します。
   - 皆さんご存じでしたら……まあ笑ってください。
    
## いままでの私の認識
- わざと本番システムの一部に障害（サーバーダウンや応答遅延）を起こして、実際の障害に備えるというカオスエンジニアリングという概念がある。
    - 広義の避難訓練的な。 
- 有名どころとしてNetflix発のChaos Monkeyというツールがある。
   - カオスエンジニアリングの代名詞的な名前
- Chaos Monkeyには兄弟的なツールがたくさんあって、通称Simian Armyと呼ばれる
   - で、ここが本題。 

## 今日(2020.7.16)知ったこと
- gremlinのブログに、Simian Armyの現状(といっても2年前ですが)が掲載されていた。

  - [THE SIMIAN ARMY Overview and Resources](https://www.gremlin.com/chaos-monkey/the-simian-army/)

- 翻訳してざっくり読んだところ、今アクティブなツールは4つとのこと。さらに調べて分かったことですが、2020.7現在で**元気な猿は実質2匹だけですし、1匹は余命わずかです。**
   - [Chaos Monkey](https://github.com/Netflix/chaosmonkey)
        - ちなみにgremlinの[この記事](https://www.gremlin.com/chaos-monkey/the-origin-of-chaos-monkey/#failure-injection-testing)を読むと、衝撃の事実が
        
         >Chaos Monkeyは、Spinnakerが管理するアプリケーション内のインスタンスを終了するためにのみ使用できます。

         マジか…お前ら付き合ってんのかよ(？)

   - Janitor Monkey
      - 使っていないAWSリソースを自動削除するツール。
      - ただ、2020.7現在リポジトリが存在しない。というのもこれを置き換えるツールとしてSpinnakerの[Swabbie](https://github.com/spinnaker/swabbie)があるため。つらいね。
   - Conformity Monkey
      - 事前定義されたルール・セットに準拠していないインスタンスを探し出し、それらをシャットダウンするツール
      - これもSpinnakerに組み込まれている。つらいね。
         - ~~そもそもAWS ConfigとかSecurity Hubでこの辺面倒見れそうだし~~
 
   - [Security Monkey](https://github.com/Netflix/security_monkey) 
      - 潜在的なセキュリティの脆弱性と違反を特定するツール
      - AWS, GCP, OpenStackを対象にできるっぽい。
      - お猿の中でもかなり自我が残っている方か…と思いきや
      
      > NOTE: Security Monkey is in maintenance mode and will be end-of-life in 2020.
      > For AWS users, please make use of AWS Config.
      > For GCP users, please make use of Cloud Asset Inventory. 
    
      要約：2020年でEOL。それぞれのクラウドネイティブなサービス使ってくれよな！
      ……お前もか。流石だなAWS Config。
      
- アクティブでない or 非公開な猿たち。
   - Chaos Kong
      - 指定したAWSの**リージョン**ごと落とすツール。
      - こちらは事例でMonkeyの次に日本語情報が出てくるが、ツールは元から非公開な様子。勝手に使えるもんだと思い込んでました。
   - Chaos Gorilla
      - 指定したAWSの**アベイラビリティーゾーン(AZ)**ごと落とすツール。
      - こちらもツールは非公開な様子。個人的にはこれが一番実用的に思える。(だからこそ非公開？)
   - Doctor Monkey
      - インスタンスのヘルスチェックを実行し、メトリクスを監視がNGとなったインスタンスをサービスから削除するツール
      - オープンソースではないし、その機能のほとんどはSpinnakerなどの他のツールに組み込まれているそう。
          - またしてもSpinnaker
   - Latency Monkey
      - RESTfulなクライアント/サーバー通信に人為的な遅延を引き起こすツール。
      - 結構調べると出てくるのですが、この子は影響範囲の制御が難しく、かなりの問題児だった様子。
          - 参考：[Netflixのブログ](https://netflixtechblog.com/fit-failure-injection-testing-35d8e2a9bb2#7c1b)
          - 結局非公開になったが、これをきっかけにFailure Injection Testing（FIT）という分野が生まれたらしい。
             - そして[ChAP (Chaos Automation Platform）](https://netflixtechblog.com/chap-chaos-automation-platform-53e6d528371f)へ… 


## わかったこと
- お猿の兄弟たちはほとんど遠いところに去っていた。元気な子たちもSpinnakerに吸収されてたり、密な依存関係だったりしていた。
- Spinnakerのこと全然調査できていなかったが、もっと向き合おうと思った。
- 日本語情報しか得てないとこうなるのだな、というつらさを感じた……頑張っていきましょう。

## おまけ(副産物)
当該分野について、知識は若干深まった気がします。いや、早く何かツール試したいのだけど。
素人なりに有用だなと感じたものをシェア。

- [Chaos Engineering 〜入門と実例〜](https://pages.awscloud.com/rs/112-TZM-766/images/E-2.pdf)
   - AWSとCygamesのエンジニアの方の講演。クラウド使う方なら必見かも。 
- [カオスエンジニアリングのWikipedia(English Only)](https://en.wikipedia.org/wiki/Chaos_engineering)
   - 主要ツール類、というか今回挙げたツールが整頓されていて助かる。
- 猿の意思を継ぐ者たち
   - [Chaos Lambda](https://github.com/artilleryio/chaos-lambda)
      - ~~正直、公式だと勘違いしていた。~~ 
      - Chaos Monkeyっぽい挙動をAWS Lambdaから実行できるツール
   - [Docker Chaos Monkey](https://github.com/titpetric/docker-chaos-monkey)
      - Docker Swarm サービスを終了する単純なシェルスクリプトとのこと。 
      - 便利そうだけど[Pumba](https://github.com/alexei-led/pumba)とか使った方がいいのかな？