「私のマシンで働いている」 私たちは皆そう言っていますが、サードパーティのAPIが回答するのに15秒かかると、バッシュスクリプトが機能しますか?バックエンドサービスは、支払いプロバイダーからの突然の503エラーのピークを優雅に処理しますか? シンプルなリリー・ロジックをスクリプトでテストするために完全なマック・サーバーを書くことは、しばしば過剰です。 . Chaos Engineering directly in the terminal われわれは使う クラウドベースのChaos Proxyを使用して、アプリケーションコードの一行を変更することなく、実際のネットワークリクエストにエラーを注入します。 curl 問題:Localhostは完璧すぎる ローカルで開発する場合、ネットワークの遅延はゼロに近い。APIは働く(200OK)またはしない(接続拒否)。 サーバーが忙しい。 5%のリクエストが下がります。 レート制限を打った。 High Latency Intermittent Failures Throttling ターミナルでこれをシミュレートするには、通常複雑なものが必要です。 ルールや地元のツールなど (トラフィックコントロール)簡単な方法があります。 iptables tc ソリューション:Cloud Chaos Proxy あなたのOSを構成する代わりに、私たちは私たちが定義するルールに従ってトラフィックを「破る」プロキシを通じて特定のリクエストをルーティングします。 私はこれのために chaos-proxy.debuggo.app を使用しますが、コンセプトはプログラミング可能なプロキシに適用されます。 ビデオガイド(1:27) こちらは90秒のワークフローです。 https://www.youtube.com/watch?v=x_S-guPwPEk&embedable=true Step-by-Step Tutorial 1.失敗を定義する まず、プロキシに何を破るかを伝える必要があります。 ターゲット: httpbin.org (またはあなたのAPIドメイン) 遅延:7秒(シミュレートラグ) 失敗率:1 (100%のリクエストが失敗する) エラーコード: 503 Service Not Available Trust the Certificate (The “One-Time” Setup) HTTPS トラフィックをキャプチャしているので、プロキシの CA 証明書を信頼する必要があります。 ダウンロード The ダッシュボードから mitmproxy-ca-cert.pem Keychain Access -> System に追加し、「Always Trust」を設定します。 MacOS: /usr/local/share/ca-certificates/ にコピーして更新します。 Linux: 3.魔法のコマンド 現在、我々は使用 」とThe プロキシの旗 curl -x curl -v -x http://user:pass@chaos-proxy.debuggo.app:13979 https://httpbin.org/get 出力の理解 このコマンドを複数回実行する場合: シナリオA(カオス):あなたはターミナルが7秒間(私たちの遅延)「吊るされる」ことに気づく。 < HTTP/1.1 500 Internal Server Error < content-length: 56 < content-type: text/plain ... Debuggo Chaos Injection: 500 Error : その他の50%は、リクエストが実際のサーバーに渡ります。 Scenario B (Success) < HTTP/1.1 200 OK ... { "args": {}, "headers": { ... } } Real World Use Cases CI パイプラインのテスト: 依存性が遅い場合、デプロイス スクリプトが故障しないことを確認します。 Cron Jobs: 失敗時に夜間のデータ同期リセットを正しく確実にします。 Quick Sanity Checks: コードを押す前に、API クライアントが 503 エラーをどのように処理するかを確認します。 結論 ネットワークの抵抗性をテストするには、重いインフラを必要としません. A simple proxy setup allows you to inject chaos into any HTTP client — be it. シンプルなプロキシ設定で、あらゆる HTTP クライアントに混乱を注入できます。 で、 Python/Node.js スクリプト curl wget ハッピーブレイク!