Skip to content

Latest commit

 

History

History
76 lines (41 loc) · 4.89 KB

Graceful Shutdown - Uber.md

File metadata and controls

76 lines (41 loc) · 4.89 KB
github
true

مدیر اوپریشن (با عجله وارد اتاق می‌شه):

بچه‌ها، یه مشکل خیلی جدی داریم! 😰 چند تا از مشتری‌ها‌مون تماس گرفتن و گفتن که پرداخت‌هاشون ناقص مونده.

یکیشون، آقای محمدی، گفته که ۲۰۰ هزار تومن از حسابش کم شده ولی کیف پولش شارژ نشده. خانم رضایی هم گفته که دو بار پول از حسابش رفته.

حتی یکی از رانندگان هم زنگ زده و گفته که کرایه‌ی آخرین سفرش رو دریافت نکرده، در حالی که مسافر گفته پول پرداخت شده. 🚕💸

این داره اعتبار ما رو زیر سوال می‌بره. باید سریع حلش کنیم! 😓

پیمان:

اوه اوه، این خیلی بده. بذارید من یه نگاهی به لاگ‌های سیستم بندازم. 🧐

(بعد از چند دقیقه بررسی)

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

حسین:

ممنون پیمان جان که بررسی کردی. این دقیقاً همون مشکلیه که با Graceful Shutdown می‌تونیم حلش کنیم. 💡

پیمان:

می‌شه بیشتر توضیح بدی؟ 🤔

حسین:

البته. Graceful Shutdown یه تکنیکه که به سرور اجازه می‌ده قبل از خاموش شدن، کارهای در حال انجام رو تموم کنه. 🔗 در مورد سرویس پرداخت ما، این یعنی:

  1. وقتی سیگنال خاموشی یا ری‌استارت دریافت می‌شه، سرور دیگه تراکنش جدید قبول نمی‌کنه.
  2. به تراکنش‌های در حال انجام اجازه می‌ده تا کامل بشن.
  3. اگه تراکنشی نیمه‌کاره موند، اون رو توی یه صف ذخیره می‌کنه تا بعد از راه‌اندازی مجدد، اون تراکنش‌ها رو پردازش کنه.
  4. بعد از اتمام همه تراکنش‌ها، سرور به طور کامل خاموش می‌شه.

این روش باعث می‌شه هیچ تراکنشی نیمه‌کاره رها نشه و مشکلاتی که الان داریم پیش نیاد.

مدیر اوپریشن:

واو، این خیلی عالی به نظر می‌رسه! چقدر طول می‌کشه تا این رو پیاده‌سازی کنیم و مشکل مشتری‌هامون رو حل کنیم؟ 🕒

حسین:

با توجه به پیچیدگی سیستم فعلی‌مون، فکر می‌کنم بتونیم ظرف 2-3 روز این تغییرات رو اعمال کنیم و تست کنیم. بعد از اون، باید:

  1. یه اسکریپت بنویسیم که تراکنش‌های ناتموم رو شناسایی و تصحیح کنه.
  2. با تیم پشتیبانی مشتری هماهنگ کنیم تا با مشتری‌هایی که مشکل داشتن تماس بگیرن و مشکلشون رو حل کنن.
  3. یه سیستم مانیتورینگ قوی‌تر راه بندازیم که این جور مشکلات رو سریع‌تر شناسایی کنه.

کل این پروسه احتمالاً حدود یک هفته طول می‌کشه.

مارال:

عالیه. این باید اولویت اصلی تیم باشه. لطفاً همین الان شروع کنید. حسین، تو مسئول این پروژه هستی. هر منبعی که نیاز داری در اختیارت می‌ذارم. 👏

پیمان:

حتماً، من و ماهان از همین الان شروع می‌کنیم به پیاده‌سازی. مرسی حسین جان برای راهنمایی‌هات. 😊

ماهان:

منم می‌تونم روی اون اسکریپت تصحیح تراکنش‌ها کار کنم. فکر کنم بتونم تا فردا یه نسخه اولیه آماده کنم. 💪

حسین:

عالیه بچه‌ها. من یه جلسه با تیم پشتیبانی مشتری می‌ذارم تا فرآیند رسیدگی به مشکلات مشتری‌ها رو هماهنگ کنیم. هر سوالی داشتید در خدمتم. بریم که یه سرویس پرداخت مطمئن‌تر بسازیم! 💪

مدیر اوپریشن:

ممنون از همگی. لطفاً هر روز یه آپدیت از پیشرفت کار به من بدید. من می‌رم که به مدیرعامل گزارش بدم. امیدوارم بتونیم اعتماد مشتری‌هامون رو دوباره جلب کنیم. 🙏