# Schrodinger
Schrodinger は [[PingCAP]] が構築した、[[TiDB]] に対するカオスエンジニアリングを自動的に行う実験プラットフォームである。名称は「シュレーディンガーの猫」の思考実験に由来し、実験における予測不能性を象徴する。特定のテストタスクを実行する上では実験を記述してSchrodingerを設定するだけでよく、あとはすべてを任せて実行できる。Kubernetes(K8s)ベースで構築されており、物理マシンに依存する必要がない。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 19 データベースにおけるカオスエンジニアリング]] §19.4.1)
## コンポーネント
- **猫(Cat)**: 特定の設定が行われたTiDBのクラスタ。
- **箱(Box)**: クラスタと関連する実験用の設定を生成するためのテンプレート。実験のカプセル化、または実行するテストを表す。
- **ネメシス(Nemesis)**: 「猫を殺す(TiDBクラスタを落とす)」ことを目的に、システムの正常稼働を妨げるエラーを注入する故障注入ツール。
- **テストケース(Test Case)**: テストの手順、および入力と期待する出力を指定する。
(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 19 データベースにおけるカオスエンジニアリング]] §19.4.1)
## ワークフロー
テストケースの準備(テストコードのダウンロード・コンパイル・実行パラメータ指定、直列/並列実行やNemesisによるランダム/シナリオ注入の指定)→「猫」の作成(対象TiDBクラスタの構成をファイルで指定)→「箱」の追加(クラスタとテストケースを箱に格納)という3ステップを終えると、Schrodingerはリソース準備・リリースビルド・デプロイ・クラスタ稼働を自動的に開始し、実験を実行して最後にレポートを提示する。7つの異なるクラスタで、毎日24時間の自動実験を実行できるようになった。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 19 データベースにおけるカオスエンジニアリング]] §19.4.2)
## 関連
- 対象システム: [[TiDB]]
- 開発元: [[PingCAP]]
- 関連概念: [[カオスエンジニアリング]]
- 章: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 19 データベースにおけるカオスエンジニアリング]]
## 出典
- [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 19 データベースにおけるカオスエンジニアリング]]