IOSOR علم

API حادثہ ہفتہ: غائب آئیڈیمپوٹنسی ایک فریز ہے، ریٹرائی طوفان نہیں

وائٹ لیبل پری پیড CPaaS پر اپنی پہلی بڑی API انسیڈنٹ کو نیویگیٹ کریں بغیر ریٹرائی لوپس یا لیجر کرپشن کو چمکائے۔

API حادثہ ہفتہ: غائب آئیڈیمپوٹنسی ایک فریز ہے، ریٹرائی طوفان نہیں.

آدھی رات کا انتباہ اور لائن پر خاموشی

آپ کا ڈیش بورড DLR ڈیلیوری پر فلیٹ لائن دکھاتا ہے جبکہ ان باؤنڈ SMS ٹریفک بڑھ جاتی ہے۔ ایک ڈاؤن اسٹریم نیٹ ورک پارটিশ نے درخواست کے وسط میں TCP پیکٹس گرا دیے، اور آپ کے کلائنٹ کی مائکرو سروس نے ناکامی فرض کر گئی۔ مناسب حفاظتی انتظامات کے بغیر، خودکار کلائنٹس آپ کے گیٹ وے کو ایک جیسے پेलोڈز کے ساتھ ہتھوڑا مارنا شروع کر دیتے ہیں۔ آپ ایک پری پیڈ لیجر کے خلاف کلاسک ریٹرائی طوفان دیکھ رہے ہیں جہاں ہر ڈپلیکیٹ درخواست بیلنس کو دو بار ڈیبٹ کرنے کا خطرہ رکھتی ہے۔ وائٹ لیبل پری پیড CPaaS ماڈل میں، آپ کی پہلی API انسیڈنٹ کبھی بھی صرف اپ ٹائم کے بارے میں نہیں ہوتی؛ یہ کلائنٹ کے فنڈز کو ک্যাসকেڈنگ نیٹ ورک کی خرابیوں سے بچانے کے بارے میں ہے۔

گارڈ ریلز کے بغیر ریٹرائی پری پیড بیلنس کیوں خالی کرتے ہیں

جب کلائنٹ کا وقت ختم ہو جاتا ہے، تو سادی ایپلی کیشن لاجک فوری طور پر HTTP درخواست کو دوبارہ منتقل کرتی ہے۔ اگر آپ کا روٹنگ لیئر ان ڈپلیکیٹس کو آزادانہ طور پر پروسیس کرتا ہے، تو ہر API ہٹ ایک نیا JIT نمبر تخصیص یا نیا SMS ڈسپیچ ٹرگر کرتا ہے۔ رسک انجن کے پکڑنے سے پہلے یہ بیلنس کو صفر سے نیچے گرا کر USD 20 پری پیড فلور لاجک کی خلاف ورزی کرتا ہے۔ آپ امید یا کلائنٹ سائیڈ کے وعدوں پر بھروسہ نہیں کر سکتے۔ دوبارہ جڑنے کے دوران حادثاتی طور پر والیٹ خالی ہونے سے روکنے کے لیے ٹرانزاکشن لاک کیسے کام کرتے ہیں یہ سمجھنے کے لیے ہماری گراہ آئیڈیمپوٹنسی، دوبارہ کوشش اور پیسہ کا جائزہ لیں۔

خرابی کو الگ کرنا اور لوپ کو روکنا

کوڈ پیچ کرنے سے پہلے آپ کی فوری ترجیح ان باؤنڈ ٹریفک کو روکنا ہے۔ تنگ وقت کے ونڈو میں پہنچنے والے یکساں پेलोڈز کو گرانے کے لیے API گیٹ وے کے کنارے پر ہنگامی ریট لمیٹنگ اصول نافذ کریں۔ جب لیجر کی حالت متنازع ہو تو ٹرانزاکشن پروسیس کرنے کی کوشش نہ کریں۔ اگر آپ کا پلیٹ فارم متنازع ٹریفک حجم میں USD 1,000/ماہ تھ্রেশ ہولڈ کے قریب پہنچتا ہے، تو اپ اسٹریم کیریئرز مشکوک اتار چڑھاؤ کے لیے آپ کے مرچنٹ ID کو فلیگ کریں گے۔ اپنے انتظامی کنسول کے ذریعے متاثرہ کلائنٹ اینڈ پوائنٹ کو فوری طور پر فریز کریں۔

ٹرانزاکشن اسٹیٹ اور لیجر کی مطابقت کی تصدیق

طوفان تھمنے کے بعد، آپ کو حادثے کی کھڑکی کے دوران کیے گئے ہر بیلنس ایڈجسٹمنٹ کا آڈٹ کرنا ہوگا۔ یتیم درخواستوں کی نشاندہی کرنے کے لیے اپنے اندرونی لیجر لاگز کا کیریئر HB سگنلز کے ساتھ موازنہ کریں جہاں SMS بھیجا گیا تھا لیکن DLR ڈیلیوری لاگ نہیں ہو سکی۔ ڈویلپر اکثر API دوسرا مہینہ: پہلے دور کے بعد آئیڈیمپوٹنسی قرض کا انتظام یہ فرض کر کے بناتے ہیں کہ سنگل تھریڈڈ ڈیٹا بیس رکاوٹیں کافی ہیں۔ وہ کافی نہیں ہیں۔ تقسیم شدہ مائکرو سروسز کو واضح ہیش پر مبنی درخواست لاکنگ کی ضرورت ہوتی ہے تاکہ اس بات کی ضمانت دی جا سکے کہ یکساں API دستخط ایک ہی اسٹیٹ مشین کے نفاذ میں حل ہوتے ہیں۔

ایکو ریپلے کے خلاف ویب ہک ڈیلیوری کو محفوظ بنانا

کسی واقعے کے دوران آؤٹ باؤنڈ API کالز کا انتظام کرنے کی طرح ان باؤنڈ ویب ہکس کو محفوظ طریقے سے ہینڈل کرنا بھی اتنا ہی اہم ہے۔ ڈیٹا بیس لاک مقابلے کی وجہ سے اگر آپ کا سرور 5xx خرابی واپس کرتا ہے تو غیر مطابقت پذیر DLR اپ ڈیٹس پروسیس کرنے والے کلائنٹس بھی لامتناہی لوپ میں پڑ سکتے ہیں۔ 300 سیکنڈ سے پرانے پرانے پेलोڈز کو ضائع کرنے کے لیے کریپٹوگرافک ٹائم اسٹیمپ کا استعمال کرتے ہوئے ایک سخت ویب ہک دستخط اور ری پلے ونڈو چیک لاگو کریں۔ یہ خودکار سسٹمز کو پرانے ڈیلیوری رسیدوں کے ساتھ آپ کے ڈاؤن اسٹریم اینڈ پوائنٹس کو ہتھوڑا مارنے سے روکتا ہے۔

لچکدار ٹرانزاکشن کنٹرول کے لیے IOSOR کے ساتھ شروع کریں

واقعہ ہفتے میں پہلے نئی آؤٹ باؤنڈ منجمد کریں۔ ہر اڑتی ارسال پر Idempotency-Key لگائیں، دوہری ڈیبٹ قطاریں برآمد کریں، خاموش کلائنٹ دوبارہ کوشش روکیں۔ پکڑنے کے لیے دوبارہ کوشش کا طوفان نہ کھولیں۔

IOSOR خلاصہ

کریں: غائب کنجیاں منجمد مانیں، پھر بھریں اور ledger ملائیں۔

نہ کریں: جب دوہرا DLR ابھی دوسرا ڈیبٹ ڈھال رہا ہو واقعہ بند کرنا۔ ٹکٹ حیثیت پیسے کی حیثیت نہیں।

کیا یہ گائیڈ مددگار تھی؟

متعلقہ رہنما