talk
2重リクエスト完全攻略HANDBOOK
ユーザーが間違えて2回サブミットボタンを押したり、API連携している外部サービスがリトライで2回リクエストを送ってくるなどの「2重リクエスト問題」への対処法を紹介します。簡単な対策例を挙げると、1度目のリクエスト後にクライアントサイドでサブミットボタンを無効化する方法が挙げられます。ただし、これでは画面リロードに対処できなかったり、API連携で起こりうる2重リクエストの問題へは対処できません。様々な2重リクエストの発生要因に適切に対処するには、クライアントサイド、インフラレイヤ、アプリケーションレイヤのそれぞれで適切な防御策を講じる必要があります。
このトークでは、Idempotency-Keyやワンタイムトークン、レートリミットやロックでの対処など世の中で使われているテクニックを網羅的に説明し、あなたの開発するRailsアプリでも適切にデータ不整合を防ぎセキュアなAPIが開発できるように具体的なユースケースとともに紹介します。
Speaker
Shohei Mitani
2020年にスマートバンクに参画後、サーバーサイドエンジニアとして、カード決済システム、オンライン本人確認システム、入金システムなど多岐にわたる機能を開発し、「ワンバンク」のローンチに携わりました。 2024年からはEngineering Managerとして、アプリ上でお金を借りられる機能「あとばらいチャージ」の開発チームを率いています。