Open hotate29 opened 1 year ago
現在の実装では、WebAPIへの全てのリクエストをGithubAuthenticationミドルウェアに通しています。
https://github.com/kenkoooo/AtCoderProblems/blob/ff203e2dc12fece1e5c85dfcbd92db7312313634/atcoder-problems-backend/src/server/mod.rs#L19-L41
このミドルウェアは、Cookieにtokenが含まれている時に動作するもので、GitHubのWebAPIにリクエストを送ることでtokenを検証しています。
https://github.com/kenkoooo/AtCoderProblems/blob/ff203e2dc12fece1e5c85dfcbd92db7312313634/atcoder-problems-backend/src/server/middleware/github_auth.rs#L123-L151
https://github.com/kenkoooo/AtCoderProblems/blob/ff203e2dc12fece1e5c85dfcbd92db7312313634/atcoder-problems-backend/src/server/middleware/github_auth.rs#L69-L81
この検証には結構時間がかかっているようで、ログイン時とそうでない時を比べると、大体250msの差があります。
(hyperfineを使って、curlでリクエストを10回飛ばして計測しました)
/internal-apiに属しているエンドポイントにGithubTokenを提供するのが目的ですが、それを必要としない他のエンドポイントへのリクエストでも関係なく検証が行われるのでパフォーマンス的に問題かもしれません。
Lambdaの料金体系はよく知らない(ms単位の実行時間で課金されるらしい程度)のですが、これをどうにかしたら費用面が少し良くなるかも?と思いました。
どうにかする方策としては
といったものがあって、おそらく最後のものが無難かなあと思います。
現在の実装では、WebAPIへの全てのリクエストをGithubAuthenticationミドルウェアに通しています。
https://github.com/kenkoooo/AtCoderProblems/blob/ff203e2dc12fece1e5c85dfcbd92db7312313634/atcoder-problems-backend/src/server/mod.rs#L19-L41
このミドルウェアは、Cookieにtokenが含まれている時に動作するもので、GitHubのWebAPIにリクエストを送ることでtokenを検証しています。
https://github.com/kenkoooo/AtCoderProblems/blob/ff203e2dc12fece1e5c85dfcbd92db7312313634/atcoder-problems-backend/src/server/middleware/github_auth.rs#L123-L151
https://github.com/kenkoooo/AtCoderProblems/blob/ff203e2dc12fece1e5c85dfcbd92db7312313634/atcoder-problems-backend/src/server/middleware/github_auth.rs#L69-L81
この検証には結構時間がかかっているようで、ログイン時とそうでない時を比べると、大体250msの差があります。
(hyperfineを使って、curlでリクエストを10回飛ばして計測しました)
/internal-apiに属しているエンドポイントにGithubTokenを提供するのが目的ですが、それを必要としない他のエンドポイントへのリクエストでも関係なく検証が行われるのでパフォーマンス的に問題かもしれません。
Lambdaの料金体系はよく知らない(ms単位の実行時間で課金されるらしい程度)のですが、これをどうにかしたら費用面が少し良くなるかも?と思いました。
どうにかする方策としては
といったものがあって、おそらく最後のものが無難かなあと思います。