چگونه اوبر (Uber) تریلیون ها تراکنش را مدیریت می کند؟

چگونه اوبر (Uber) تریلیون ها تراکنش را مدیریت می کند؟

مهندسان اوبر یک سیستم پرداخت پیچیده و پیشرفته طراحی کرده‌اند که قادر است تریلیون‌ها تراکنش را با امنیت و دقت بالا مدیریت کند. این سیستم با استفاده از معماری میکروسرویس، حسابداری دوبل، پایگاه‌ داده‌ تغییرناپذیر (Immutable) و یک دیتابیس تخصصی به نام Ledger Store ساخته شده است.

چکیده:

توسعه سیستم پرداخت اوبر پاسخی بود به مقیاس عظیم عملیات این شرکت، که میلیاردها سفر و تراکنش را در سراسر جهان مدیریت می‌کند. در ابتدا، اوبر با مشکلاتی مانند بی‌ثباتی و تأخیر در پرداخت‌ها روبرو بود. برای حل این مشکلات، اوبر از یک معماری یکپارچه (Monolithic) به معماری میکروسرویس مهاجرت کرد. این کار باعث شد که هر بخش از سیستم بتواند مستقل رشد کند و تراکنش‌ها سریع‌تر و مؤثرتر پردازش شوند.

برای حفظ دقت مالی، اوبر از حسابداری دوبل استفاده کرد و با بهره‌گیری از پایگاه داده تغییرناپذیر و append-only، امکان پیگیری کامل تمام تراکنش‌ها را فراهم نمود.

یکی از اجزای کلیدی این سیستم جدید، دیتابیس تخصصی Ledger Store است که برای مدیریت و ایمن‌سازی تراکنش‌ها طراحی شده. اوبر برای مهاجرت ۲۵۰ میلیارد رکورد از سیستم قبلی به این سیستم جدید، از مکانیزم checkpoint استفاده کرد تا در حین جابجایی هیچ اختلالی در سرویس ایجاد نشود. ابزار کمکی Shadow Rider نیز وظیفه داشت داده‌های بین دو سیستم را مقایسه کرده و از صحت آن‌ها اطمینان حاصل کند.

در نهایت، اوبر با ایجاد تریلیون‌ها ایندکس، امکان جستجوی سریع و عملکرد بالا در این مقیاس بزرگ را فراهم کرده است.

  • سیستم‌های اولیه‌ی پرداخت اوبر ناکارآمد بودند و باعث بی‌ثباتی و اختلاف در پرداخت‌ها می‌شدند؛ مسئله‌ای که به هیچ وجه قابل قبول نبود.
  • مهاجرت به معماری میکروسرویس تصمیمی کلیدی برای مدیریت پیچیدگی‌های حاصل از رشد حجم تراکنش‌ها بود، که باعث پایداری و مقیاس‌پذیری بهتر سیستم شد.
  • استفاده از حسابداری دوبل، انتخابی هوشمندانه برای حفظ دقت مالی بود و اهمیت اعتماد و شفافیت در سیستم‌های پرداخت را نشان می‌دهد.
  • تصمیم به استفاده از پایگاه داده‌های تغییرناپذیر، تعهد اوبر به شفافیت و قابلیت ردیابی در تراکنش‌های مالی را اثبات می‌کند.
  • توسعه‌ی Ledger Store نشان‌دهنده‌ی تلاش اوبر برای ساخت راهکارهای قوی داخلی برای چالش‌های خاص خودش بود.
  • فرآیند دقیق مهاجرت، به‌ویژه استفاده از Shadow Rider برای مقایسه داده‌ها، اهمیت یک انتقال بی‌نقص و بدون ایجاد وقفه در سرویس را برجسته می‌کند.
  • تاکید بر ایندکس‌گذاری در مقیاس بسیار وسیع، نشان‌دهنده‌ی تمرکز اوبر بر حفظ عملکرد بالا و سرعت واکشی داده‌ها در میان انبوهی از تراکنش‌هاست.

چگونه نرم‌افزار می‌تواند تریلیون‌ها پرداخت را بدون از دست دادن حتی یک تراکنش مدیریت کند؟

در این پست، راز راه‌حل مهندسان Uber را فاش می‌کنم و به سادگی توضیح می‌دهم که همه‌چیز چگونه کار می‌کند.

همه ما می‌دانیم که Uber چگونه عمل می‌کند:

  • دکمه‌ای را فشار می‌دهید که هزینه سفر از نقطه A به B را پرداخت می‌کند.
  • منتظر راننده می‌مانید.
  • سوار ماشین می‌شوید و به مقصد می‌رسید.
  • پیاده می‌شوید و سپس Uber پول راننده را پرداخت می‌کند.
    به نظر ساده می‌رسد، نه؟

حالا تصور کنید ۱۰۰ میلیون کاربر همزمان از این سیستم استفاده کنند!

پشت صحنه، Uber حجم غیرقابل‌تصوری از تراکنش‌ها را در هر ثانیه مدیریت می‌کند: میلیاردها سفر و صدها میلیارد دلار پول که در سراسر جهان جابه‌جا می‌شود.

چطور یک نرم‌افزار می‌تواند بدون از دست دادن حتی یک تراکنش، میلیاردها پرداخت را انجام دهد؟

در این مطلب، راز مهندسان اوبر برای رسیدن به این توانایی را فاش می‌کنم و به ساده‌ترین شکل ممکن توضیح می‌دهم که چطور همه‌چیز کار می‌کند.

ما همه کم‌ و بیش می‌دانیم اوبر چطور کار می‌کند:

یه دکمه می‌زنید تا درخواست سفر بدید — راننده میاد — سوار می‌شید و به مقصد می‌رسید — پیاده می‌شید و اوبر پول راننده رو پرداخت می‌کنه. خیلی ساده به نظر می‌رسه، درسته؟

حالا تصور کن ۱۰۰ میلیون کاربر در این سیستم هستن!

در پشت‌صحنه، اوبر در هر لحظه داره با حجم غیرقابل‌تصوری از تراکنش‌ها سروکار داره: میلیاردها سفر و صدها میلیارد دلار پولی که در سراسر جهان جابه‌جا می‌شه.

چطور اوبر با این پیچیدگی، همه‌چیز رو روان و امن مدیریت می‌کنه؟

چالش میلیاردها پرداخت

با رشد اوبر، تعداد تراکنش‌ها هم شدیداً افزایش پیدا کرد. در اوایل، سیستم‌های پرداخت اولیه‌ی اوبر دچار مشکل بودن؛ بی‌ثباتی داشتن و پرداخت‌ها با تأخیر انجام می‌شدن.

اما اگر یه چیزی باشه که اوبر نباید توش اشتباه کنه، اون پرداخت پوله.

سیستمشون به‌شدت به مشکل خورده بود. تأخیرهای زیاد، اختلاف در پرداخت‌ها، و کلی نارضایتی.

تصور کن یه راننده‌ی اوبر باشی، دو روز پیاپی کار کرده باشی، بعد یه حمله سایبری رخ بده و تمام پول‌هایی که انتظار داشتی دریافت کنی، یه‌هو ناپدید بشه!

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

مهاجرت به یک سیستم پرداخت مقاوم‌تر

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

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

مثلاً:

  • یک میکروسرویس برای پرداخت کرایه سفرها
  • یکی برای بازپرداخت‌ها (ریفاند)
  • یکی برای تخفیف‌ها و پروموشن‌ها

این باعث شد سیستم کلی، هم منعطف‌تر بشه و هم مقیاس‌پذیرتر.

حسابداری دوبل: تضمین دقت مالی

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

در واقع، هر زمان پولی جابجا می‌شه، یه ورودی در حساب مقصد و یه خروجی در حساب مبدأ ثبت می‌شه — مثل دفتر حساب‌های سنتی.

اگه پرداختی اشتباه انجام بشه، می‌تونن راحت برگردن و بررسی کنن.

مثلاً همون مورد راننده رو در نظر بگیر، برای هر کرایه‌ای که محاسبه شده، یه رکورد تاییدکننده‌ی دیگه وجود داره.

پایگاه داده‌های تغییرناپذیر (Immutable)

بیشتر دیتابیس‌ها قابل‌تغییر (mutable) هستن. یعنی اگر اسم شما رو تغییر بدی، مقدار قبلی حذف می‌شه و مقدار جدید جایگزینش می‌شه.

اما در دیتابیس تغییرناپذیر (immutable)، هیچ‌چیزی پاک یا جایگزین نمی‌شه — فقط رکورد جدیدی اضافه می‌شه.

مثلاً: اگه برای سفری ۱۰ دلار باید پرداخت می‌کردی اما سیستم اشتباهی ۱۵ دلار کم کرد، به‌جای تصحیح اون مقدار، یه رکورد جدید اضافه می‌شه که ۵ دلار رو بهت برمی‌گردونه.

یعنی اصلاحات با اضافه کردن رکورد انجام می‌شن، نه با حذف یا تغییر قبلی.

معرفی Ledger Store برای مدیریت بهتر تراکنش‌ها

اوبر یه دیتابیس تخصصی به نام Ledger Store طراحی کرد — مثل یه دفتر حساب عظیم که تمام تراکنش‌ها داخلش ثبت می‌شن.

Ledger Store نه‌تنها تراکنش‌ها رو ذخیره می‌کنه، بلکه از روش‌هایی مثل “مهر و موم کردن” و “تأیید صحت” برای محافظت از داده‌ها استفاده می‌کنه.

داده‌های قدیمی (مثلاً تراکنش‌های ماه پیش) به حالت فقط خواندنی در میان و نمی‌تونن تغییر کنن.

اوبر بیش از ۲۵۰ میلیارد رکورد رو به این سیستم منتقل کرد!

چالش مهاجرت: بدون اختلال در پرداخت‌ها

اوبر باید ۲۵۰ میلیارد تراکنش رو از سیستم قدیمی به Ledger Store جدید منتقل می‌کرد — بدون اینکه کاربران کوچک‌ترین مشکلی در پرداخت‌ها تجربه کنن.

برای این کار از سیستم checkpoint استفاده کرد؛ یعنی مثل عکس گرفتن در هر مرحله از انتقال، تا اطمینان حاصل بشه چیزی گم نمی‌شه.

ابزار Shadow Rider: مقایسه‌ی دقیق داده‌ها

در زمان انتقال، اوبر ابزاری ساخت به اسم Shadow Rider.

این ابزار بین دیتابیس قدیم و جدید قرار می‌گرفت و داده‌ها رو با هم مقایسه می‌کرد.

مثلاً اگه توی دیتابیس قبلی، پرداختی ۱۰ دلار ثبت شده، باید توی دیتابیس جدید هم دقیقاً همون باشه.

اگر اختلافی پیدا می‌کرد، قبل از اینکه مشکلی پیش بیاد، اون رو گزارش می‌داد.

شاخص‌گذاری (Indexing) در مقیاس بسیار عظیم

برای اینکه بتونن به‌سرعت به تراکنش‌ها دسترسی داشته باشن، اوبر تریلیون‌ها ایندکس (شاخص) ساخت.

مثل فهرست آخر کتاب، که کمک می‌کنه سریع به صفحه موردنظر برسید — ایندکس‌ها به سیستم اجازه می‌دن خیلی سریع اطلاعات مورد نیاز رو پیدا کنه.

نتیجه‌گیری: مهندسی دقیق برای پرداخت‌های بی‌نقص

مهندسان اوبر یه سیستم پرداخت ساختن که هم قدرتمنده، هم دقیق، و هم مقاوم در برابر خطا.

ابزارهایی مثل Ledger Store و Shadow Rider، روش‌هایی مثل حسابداری دوبل و پایگاه داده‌های غیرقابل‌تغییر، باعث شدن اوبر بتونه با خیال راحت تریلیون‌ها تراکنش رو مدیریت کنه.

پرداخت در این مقیاس فقط بحث بزرگی نیست — بحث دقت، هماهنگی و امنیت هم هست.

پیوند منابع
به اشتراک بگذارید

دیدگاه شما

رایموند باغومیان

بنده رایموند هستم و سال ۹۲ وارد برنامه نویسی وب شدم و برنامه وردپرس و لاراول هستم. کم و بیش پروژه برای وردپرس و PHP نوشتم و تجربیات خودم رو با شما به اشتراک می گذارم.