Slide 1

Slide 1 text

Pumbaを使った異常系試験 @simd_nyan

Slide 2

Slide 2 text

$ whoami • Yoshinori Shimada @simd_nyan • 仕事 – Software Engineer@通信会社 – クラウドサービスの開発 • 好きなプログラミング言語 – 言語 • 好きなテストフレームワーク – Gherkin/Cucumber • Dockerの好きなところ – 「俺の環境では動いた」の殲滅 ポータビリティ – 日がな1日イメージサイズ最小を目指す愉しみ 軽量

Slide 3

Slide 3 text

他部署 自分たちが 作っているシステム マイクロサービスなシステムの構成 DB App 謎システム App2 App1 App3 謎システム 謎システム 謎システム 謎システム

Slide 4

Slide 4 text

結合テスト環境のコンテナ化 DB のコンテナ App のコンテナ テスト コード App2 のモック App1 のモック App3 のコンテナ docker-compose

Slide 5

Slide 5 text

docker-compose 結合テストでの異常系試験の想定 DB のコンテナ App のコンテナ テスト コード App2 のモック App1 のモック App3 のコンテナ 遅延が… 死んでる…

Slide 6

Slide 6 text

Pumba • Pumba: Chaos testing tool for Docker – https://github.com/alexei-led/pumba • できること COMMANDS: kill kill specified containers netem emulate the properties of wide area networks pause pause all processes stop stop containers rm remove containers help, h Shows a list of commands or help for one command

Slide 7

Slide 7 text

ネットワーク遅延を発生させる DB のコンテナ App のコンテナ テスト コード App2 のモック App1 のモック App3 のコンテナ docker-compose pumba pumba netem --duration 999m delay --time 30 app3

Slide 8

Slide 8 text

ネットワーク遅延を発生させる DB のコンテナ App のコンテナ テスト コード App2 のモック App1 のモック App3 のコンテナ docker-compose pumba pumba netem --duration 999m delay --time 30 app3

Slide 9

Slide 9 text

Appを落とす DB のコンテナ App のコンテナ テスト コード App2 のモック App1 のモック App3 のコンテナ docker-compose pumba pumba pause --duration 999m 30 app1

Slide 10

Slide 10 text

Appを落とす DB のコンテナ App のコンテナ テスト コード App2 のモック App1 のモック App3 のコンテナ docker-compose pumba pumba pause --duration 999m 30 app1

Slide 11

Slide 11 text

Network Emulation(netem)コマンドについて • delay – 遅延 • loss – パケロス • loss-state – 4-state Markov モデルのパケロス • loss-gemodel – Gilbert-Elliot loss モデルのパケロス • rate – レートリミット • 内部的にはtcを利用 – iproute2とかを入れておく必要有