Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TypeScriptで 負荷テストを書こう 〜k6のシングルバイナリの秘密〜

TypeScriptで 負荷テストを書こう 〜k6のシングルバイナリの秘密〜

2024/8/24 フロントエンドカンファレンス北海道2024

Minoru Takeuchi

August 24, 2024
Tweet

More Decks by Minoru Takeuchi

Other Decks in Programming

Transcript

  1. よくよく見てみると… k6 is not NodeJS, nor is it a browser.

    Packages that rely on APIs provided by NodeJS, for instance the os and fs modules, will not work in k6. The same goes for browser-specific APIs like the window object. https://k6.io/docs/using-k6/modules/#bundling-node-modules (筆者訳) k6はNodeJSでもブラウザでもありません。NodeJSが提供するAPIに依存するパッケー ジはk6では動きません。例えば、これにはosやfsモジュールなどが含まれます。window オブジェクトのようなブラウザ固有のAPIについても同様です。 シナリオ実行環境はNode.jsでもブラウザでもない
  2. k6のエンジン・ランタイム環境 • JSエンジンには grafana/sobek が使われている dop251/goja のフォーク • k6/http などのモジュールはk6のランタイム環境のみで提供されている

    k6内にGoで実装されているので、当然npmパッケージに実装はない https://github.com/grafana/k6/blob/master/js/modules/k6/http/http.go 参考)JavaScriptエンジンから見るランタイム https://speakerdeck.com/shqld/2024-04-25 参考)ランタイムとは何か https://speakerdeck.com/yosuke_furukawa/javascript-runtime-tohana nika