第21回: Octane実践チューニング — workers=4の根拠は直感ですか?計測してから決めましょう
Octaneはworkers数やmax-requestsの設定が指数関数的に性能に影響します。「とりあえず4」で動いている場合、本来のもっと出せるスループットを見逃しているかもしれません。
Month
Octaneはworkers数やmax-requestsの設定が指数関数的に性能に影響します。「とりあえず4」で動いている場合、本来のもっと出せるスループットを見逃しているかもしれません。
人気ランキングのキャッシュが失効した瞬間、100件のリクエストが同時にDBへ走ったとしたら——あなたのアプリは耐えられますか?
「茇くて導入」のキャッシュは、数日後に「古いデータが返る」「更新したはずなのに反映されない」といった整合性問題の源になります。キャッシュは設計するものです。
リファクタリングは外部振る舞いを変えずに内部構造を改善することです。その「外部振る舞い」を保証するテストがなければ、リファクタ前後で振る舞いが変わっても気づけません。
カバレッジ指標は「コードが実行されたか」を測るだけで、「アサーションが正しいか」は別問題です。「if ($a > 0) を if ($a >= 0) に変更してもテストが逃げる」という状態は、Mutation Testingで初めて露呈できます。
インターフェース(Contract)を定義する目的の一つは、実装を差し替えても挙動が変わらないことの保証です。この保証をテストで固定しなければ、RedisからMemcachedへ切り替えたときにどこかで微妙な差异が発生するリスクがあります。
Repository層は永続化ロジックの契約層です。上位層がRepositoryの返却仕様に依存するため、返却値の型やフィルタリングの挙動をテストで固定することが重要です。
assertStatus(200) で満足しているテストは、「リクエストがおそらく到達した」ことを確認しているだけです。その後のDBの状態・レスポンスのJSON構造・リダイレクト先まで検証することで初めて「機能が正しく動いた」と言えます。
「同じロジックだが入力値だけ変わるテスト」が何度もコピペースされている――境界値テストでよく起きるこの状態は、Pestのデータセット機能で訐決できます。
Laravel Octaneはアプリを常駐化して後続リクエストを高速に底だけるパワーツールです。用い方を注意しないと、リクエスト間で状態が漏れる深刻な問題が起きます。「「導入したのにおかしい挙動が起きる」」の大半はこの状態漏れです。