سناریو سیستم های رزرواسیون

یه چالش خیلی مهم سیستم های رزرواسیون اینه:

نمایی از کنسرت اصغر آقا
نمایی از کنسرت اصغر آقا


اصغر آقا یه کنسرت برگذار می کنه با تعداد مشخصی صندلی و تو سایت هوشنگ و برادران IT تعداد بلیط ها رو ثبت می کنه که مردم بیان بخرن

بعد چند روز بلیط ها فروخته میشه و فقط یک بلیط می مونه

من میرم بلیط رو بخرم، روی دکمه پرداخت کلیک می کنم میرم داخل درگاه پرداخت
اطلاعات رو وارد می کنم و پرداخت رو انجام میدم بعدش هم ریدایرکت میشم به سایت یه دفعه می بینم ارور میده:

ظرفیت این کنسرت پر شده است!

یعنی چی؟ مگه ننوشته بود یک بلیط موجوده؟ اصلا اگر ظرفیت پر شده چرا گذاشت پرداخت کنم؟

ماجرا اینه:

همون لحظه که من روی پرداخت زدم یه نفر دیگه هم همین کار رو کرده ، فقط چون سرعت عمل اون بیشتر از من بوده سریع تر اطلاعات کارت رو وارد کرده و بلیط رو خریده و برای اون ثبت شده

خب این یعنی مشکل از سرعت عمل پایین منه؟
خیر!

سیستم باید به این شکل پیاده سازی شده باشه:

وقتی من روی دکمه پرداخت میزنم یکی از بلیط ها رزرو شده محسوب بشه و یک تراکنش برام ثبت بشه
اینجوری دیگه کسی نمی تونه بیاد زود تر من پرداخت بزنه و بلیط بخره

من وسط پرداخت به این فکر می کنم حالش رو ندارم کنسرت برم بیخیال میشم

-‌ خب اینجوری که یه بلیط رزرو شده توی سیستم ولی پرداخت نداشتیم

باید چک کنیم بعد از پانزده دقیقه نتیجه تراکنش چی بوده؟ آیا پرداخت موفقیت آمیز بوده یا نبوده؟ (با کرون جابز این کار رو انجام میدیم)

  • اگر پرداخت موفقیت آمیز بود که هیچی
  • اگر موفقیت آمیز نبود میام اون بلیطی که رزرو شده حساب کردیم رو از حالت رزرو در میاریم و میزاریم کاربر بعدی بیاد بخره


امیدوارم مفید بوده باشه :)