خب امروز میخوام یکی دیگه از سوالای مصاحبهای که اگر به عنوان مصاحبهکننده باشم از بقیه میپرسم رو باهاتون مطرح کنم و نظر شما رو بپرسم.
سناریو: جلوگیری از فاجعه در درگاه پرداخت
فرض کنید یوزر روی دکمه «پرداخت نهایی» کلیک میکنه (پرداخت از کیف پول داخلی). به دلیل کندی اینترنت، Response سریع برنمیگرده؛ یوزر چندین بار پشت سر هم روی دکمه کلیک میکنه یا صفحه رو رفرش میکنه.
صورت مسئله:
۱. سمت Frontend، غیرفعال کردن دکمه (Disable Button) لایه اوله اما کافی نیست (چون با ابزارهایی مثل Postman یا رفرش صفحه قابل Bypass شدنه).
۲. سمت Backend، ما نباید تحت هیچ شرایطی اجازه بدیم بیش از یکبار از حساب کاربر کسر بشه، حتی اگر ۵ ریکوئست کاملاً یکسان در یک «میلیثانیه» به سرور برسه (Race Condition).
سوال:
حرفهایترین و استانداردترین راهکار برای اینکه مطمئن بشیم یک عملیات حساس «دقیقاً و فقط یکبار» (Exactly-once) اعمال میشه چیه؟
نظراتتون رو بنویسید، شب درباره راهکار استانداردش (که توی شرکتهای بزرگی مثل اسپاتیفای و اسنپ و ... استفاده میشه) گپ میزنیم.
"Do not hesitate to answer this question!"
@codehalics | کدهالیک
Post #389
431

- ❤ 3