معماری سلولی؛ نسخهی امریکن اکسپرس برای تابآوری پرداخت
خلاصهٔ کاملتر
به گفتهی نویسنده، اکوسیستم پرداخت هستهای امریکن اکسپرس هر روز حجم زیادی تراکنش زنده رو پردازش میکنه و باید همیشه در دسترس، کمتأخیر و قابلپیشبینی باشه. برای همین تابآوری از همون اول تو طراحی سیستم جا داده شده، نه اینکه بعداً بهش اضافه بشه. ابزار اصلی این کار یه معماری سلولی (cell-based) هست که خرابیها رو ایزوله میکنه.
ایدهی معماری سلولی اینه که میکروسرویسها، دیتابیسها و اجزای مرتبط رو تو نمونههای مستقلی به اسم «سلول» گروهبندی کنی. هر سلول بدون وابستگی به بقیه کار میکنه، پس فایدهی اصلیش کمکردن شعاع انفجار خرابیه: اگه یه سلول به مشکل بخوره، بقیه بیتأثیر میمونن. عوضش پیچیدگی و سربار مدیریت بیشتر میشه، ولی برای سیستم حیاتی مثل پرداخت این معامله میارزه.
تو پیادهسازی امریکن اکسپرس، هر سلول یه واحد مستقلِ قابلاستقراره که خودش سرویس و دیتابیس داره، یه دامنهی خرابی واحده و هیچ وابستگی همزمانی (synchronous) به سلولهای دیگه تو مسیر بحرانی تراکنش نداره. سلولها هیچوقت چند منطقه رو در بر نمیگیرن؛ هرچی برای پردازش لازمه — DNS، دیتابیس، سرویسها — محلی و داخل مرز همون سلول میمونه.
دادهی ثابت مثل نرخ ارز و کد دستهی فروشنده رو از قبل تو هر سلول تکثیر میکنن تا موقع تراکنش نیازی به جستوجوی مرکزی نباشه. برای دادهی پویا هم یه «روتر تراکنش جهانی» با مسیریابی قطعی، هر تراکنش رو میفرسته به سلولی که دادهی درستش اونجاست. همین روتر تنها راه ارتباط بین سلولهاست و نقش یه مش پرداخت رو بازی میکنه، پس سلولها بهم وابسته نمیشن.
نویسنده میگه وقتی سلولی خراب میشه، اثرش همونجا حبس میمونه و تراکنشها — حتی اونهایی که وسط کارن — به یه سلول سالم منتقل و از اول اجرا میشن؛ نه ادامه از وسط. این کار فقط تا قبل از «نقطهی بیبازگشت» امنه، یعنی تا وقتی تراکنش هنوز به سیستم بیرونی مثل صادرکنندهی کارت نرفته. برای جلوگیری از تراکنش تکراری هم از شناسهی یکتای idempotency استفاده میکنن.
نکتهی آخر اینه که هرچی به لبه نزدیکتر میشن، وابستگیها رو کمتر و از مسیر بحرانی دور نگه میدارن؛ مثلاً لاگ بهصورت غیرهمزمان نوشته میشه و اگه بافر پر شه لاگها دور ریخته میشن تا پردازش تراکنش متوقف نشه. جمعبندی نویسنده اینه که تابآوری با مانیتورینگ و retry بهتنهایی به دست نمیاد، بلکه با تعریف مرزهای خرابی و اجرای دقیقشون از طریق طراحی ساخته میشه.
نکات کلیدی:
- معماری سلولی، پلتفرم رو به واحدهای مستقل تقسیم میکنه تا شعاع خرابی کوچیک بمونه.
- هر سلول سرویس و دیتابیس خودشو داره و وابستگی همزمان به بقیه نداره.
- روتر تراکنش جهانی با مسیریابی قطعی، تراکنش رو به سلول درست میفرسته.
- موقع خرابی، تراکنشها به سلول سالم منتقل و از نو اجرا میشن، نه ادامه از وسط.




