Slide 1

Slide 1 text

APIサーバのレスポンス速度 をふわっと把握したかった ramo

Slide 2

Slide 2 text

目次 ● 自己紹介 ● やりたいこと ● きっかけ ● 技術選定の話 ● 使い方 ● 結果

Slide 3

Slide 3 text

自己紹介 ramo 仕事→ URIHOというサービス開発。 好きなフレームワーク→ remix, sveltekit マイブーム→ cloudflare workers 最近matzさんとツーショット撮りました

Slide 4

Slide 4 text

URIHOについて 販売企業 URIHOは企業間取引において発生する 売掛金の未払い・倒産に備える保証サービスです。 購入企業

Slide 5

Slide 5 text

やりたいこと バックエンドのAPIサーバのレスポンス速度を計測したい

Slide 6

Slide 6 text

きっかけとか → 社内の人がISUCONを楽しそうにやってて羨ましかった →→ 来年はでる → そういえば自分のやってるサービスはどうなっているのか? →→ いろんなパターンで測定してみたい →→→ データがいっぱあるときとか

Slide 7

Slide 7 text

きっかけとか 「推測するな、計測せよ」と常々言われいていますので 計測することにしました。

Slide 8

Slide 8 text

今回やろうと思ったこと ローカルで動くもので測れるようにしたい → 既存機能の改修したときのベンチマークしたい → テストデータを多くした場合に速度の低下が起きないか等を気づきたい バックエンドAPIのレスポンス速度の計測から始める → ミニマムに始める → システムの構成的に、ボトルネックはそこになりがち

Slide 9

Slide 9 text

技術選定 Locustというpythonのライブラリを使うことにしました。 テストシナリオをコードで記述ができる → pythonで前処理等が書ける →→ ログイン処理が楽。共有が楽。テストデータの挿入ができる

Slide 10

Slide 10 text

Locustの使い方 from locust import HttpUser, task, between class ApiUser(HttpUser): wait_time = between(1, 5) def on_start(self): self.client.post("/accounts/sign_in", { "account[email]": "email", "account[password]": "password" }) @task def load_test_api_endpoint(self): self.client.get("/endpoint")

Slide 11

Slide 11 text

使い方 locust -f your_script_name.py

Slide 12

Slide 12 text

結果

Slide 13

Slide 13 text

結果と展望 → ローカルサーバなので実際の数値ではないですが、大まかに傾向が把握で きました。 → 定期的に測るようにして機能が増えていくごとにどのように変化していく かを測定できると面白そう → 大量のテストデータを作成しての挙動も確認できるので未来のしんどくな るポイントを発見できる可能性がある

Slide 14

Slide 14 text

以上です。