TuBrief
구독 채널
비디오
커뮤니티

كيف يتعامل مطور واجهة خلفية بخبرة 3 سنوات مع فقدان الويب هوك ومعالجة البيانات المكررة في بيئة التطوير المحلية

TuBrief 편집팀
2026년 8월 22일
0
Computing/Software

원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.

العربية한국어EnglishEspañol中文DeutschFrançaisPortuguêsРусскийBahasa Indonesia日本語हिन्दी

관련 영상

هندسة البرمجيات القائمة على الأحداث، فوضى الخطافات (Webhooks)، وصعود وكلاء الذكاء الاصطناعي | بودكاست Better Stack الحلقة 171:10:04

هندسة البرمجيات القائمة على الأحداث، فوضى الخطافات (Webhooks)، وصعود وكلاء الذكاء الاصطناعي | بودكاست Better Stack الحلقة 17

Better Stack

커뮤니티의 다른 글

사내 시스템에 llm api 붙일 때 마주하는 현실적인 한계와 대응법

2026년 9월 13일

레거시 백엔드에 GPT-6 Astra 붙일 때 예산 승인과 보안 통과를 먼저 끝내는 법이 있습니다

2026년 9월 13일

에이전트끼리 대화하다 6천만 원 청구서가 나오는 이유

2026년 9월 13일

사내 RAG 벡터 검색에 Okta 권한 필터를 직접 거는 방법

2026년 9월 13일

브라우저 에이전트에게 내 구글 계정을 통째로 넘기면 안 되는 이유

2026년 9월 12일

Apple Won the AI Race

2026년 9월 12일

댓글 (0)

Log in to leave a comment

아직 작성된 글이 없습니다

© 2026 . All rights reserved.

TuBrief
구독 채널
비디오
커뮤니티
로그인

كيف يتعامل مطور واجهة خلفية بخبرة 3 سنوات مع فقدان الويب هوك ومعالجة البيانات المكررة في بيئة التطوير المحلية

إذا سبق لك التعامل مع تكامل المدفوعات أو الإشعارات في نظام موزع، فستكون حتماً مرهقاً من حالات فقدان البيانات أو إرسالها بشكل مكرر بسبب تأخر استجابات الخدمات الخارجية أو انقطاع الشبكة. نظراً لأن الويب هوك (Webhook) يضمن التسليم مرة واحدة على الأقل، فإن عدم جاهزية الخادم المستلم يؤدي بشكل مباشر إلى تلف البيانات. تتناول هذه المقالة كيفية محاكاة حالات الأعطال في البيئة المحلية وتنفيذ منطق الحماية قبل النشر في بيئة الإنتاج.

بناء محاكاة لأعطال الويب هوك الخارجي في بيئة التطوير المحلية

للتحقق من حالات الأعطال الواقعية قبل النشر، تحتاج إلى إنشاء خط أنابيب لاختبار الفوضى (Chaos Testing) في بيئتك المحلية. يتيح لك الجمع بين نفق ngrok و Toxiproxy القائم على Docker إعادة إنتاج مهلات الاستجابة وانقطاع الشبكة من المزودين الخارجيين. بناء هذه البيئة يقلل الوقت المستغرق في تحليل أسباب الأعطال والاستجابة لها بمقدار ساعتين.

إليك الخطوات المتبعة لحقن أخطاء الشبكة باستخدام Toxiproxy:

  1. قم بربط تطبيق الواجهة الخلفية و Toxiproxy و ngrok باستخدام Docker Compose، واضبط الطلبات الواردة إلى عنوان URL العام لـ ngrok لتمريرها عبر منفذ Toxiproxy رقم 8666 إلى المنفذ 8080 للتطبيق.
  2. أرسل طلب cURL إلى واجهة برمجة تطبيقات إدارة Toxiproxy لحقن تأخير في الاستجابة مدته 25000 ميللي ثانية، مما يؤدي إلى تفعيل شروط انتهاء المهلة للخدمات الخارجية مثل Stripe.
  3. قم بتطبيق ميزة reset_peer toxic لإنهاء المقبس بالقوة والتحقق مما إذا تم استعادة مجموعة الاتصالات (Connection Pool) ورصد سجلات الأخطاء بنجاح.

تصميم قاعدة البيانات ومنطق التحقق لضمان الإدماج الذاتي (Idempotency)

تتسبب المعاملات المكررة الناتجة عن إعادة إرسال الويب هوك في تلف البيانات أثناء عملية الموافقة على الدفع. الذاكرة المؤقتة (Memory Cache) غير مناسبة لأنها لا تمنع ظروف السباق (Race Conditions) في بيئات الخوادم الموزعة. لضمان منع التكرار بشكل قاطع، يجب استخدام معاملات قواعد البيانات العلائقية (RDBMS) القيود الفريدة (Unique Constraints) كبوابة للإدماج الذاتي.

خطوات تنفيذ التحكم في طلبات التزامن على مستوى قاعدة البيانات هي كالتالي:

  1. أنشئ جدول processed_webhooks وقم بتعيين قيد فريد (UNIQUE) على معرف الحدث الفريد الموجود داخل حمولة البيانات (Payload).
  2. في بيئة FastAPI و SQLAlchemy، استخدم عبارات الإدراج الذرية (Atomic Insert) لتسجيل الحالة على أنها "قيد المعالجة" والتقاط استثناء IntegrityError عند حدوث تعارض في التزامن.
  3. في حالة انتهاك القيد الفريد، تحقق من حالة السجل الموجود؛ وإذا كان الطلب قد عولج مسبقاً، فقم بإرجاع رمز الحالة 200 OK دون تعديل البيانات لإيقاف إعادة الإرسال من الخدمة الخارجية. يمنع هذا الهيكل حوادث تلف البيانات الناتجة عن الطلبات المكررة.

ممارسة كتابة نص برمجي للاسترداد اليدوي لقائمة الانتظار الميتة (Dead Letter Queue)

عند حدوث أعطال في التبعيات الخارجية أثناء معالجة الويب هوك، تتراكم الأحداث التي تجاوزت حد إعادة المحاولات ويتم عزلها في قائمة الانتظار الميتة (DLQ). ترك هذه الأحداث الفاشلة دون معالجة يؤدي إلى تراكم عدم تناسق البيانات، لذا يلزم وجود عملية دفعية (Batch Process) لإعادة حقنها بأمان عند استقرار النظام. يتيح لك بناء نص برمجي للاسترداد اليدوي بناءً على لغة بايثون توفير 3 ساعات أسبوعياً من أعمال الاسترداد اليدوي عبر SQL.

إليك خطوات تنفيذ النص البرمجي الدفعي لإعادة معالجة الأحداث الفاشلة المعزولة:

  1. أنشئ جدول dlq_webhooks لتسجيل الحمولة الأصلية، رسالة الخطأ، وعدد المحاولات، ثم استعلم عن البيانات التي تكون فيها قيمة is_resolved خاطئة (false).
  2. لتجنب ازدحام الشبكة أثناء إعادة المعالجة، انتظر لفترة تأخير محسوبة باستخدام خوارزمية التراجع الاسي (Exponential Backoff) والتشويش (Jitter).
  3. أرسل طلب HTTP إلى نقطة النهاية الداخلية، وقم بتحديث is_resolved إلى صحيح (true) عند النجاح، أو قم زيادة عدد المحاولات عند الفشل مع وضع حد أقصى لمنع الدخول في حلقات غير نهائية.

إعداد عتبات تنبيه مراقبة الويب هوك ومعايير الاستجابة العملية

للحفاظ على استقرار نظام الويب هوك، تحتاج إلى نظام قابل للمراقبة لتتبع معدل فشل الاستلام وعدد الحالات المتراكمة في قائمة الانتظار الميتة في الوقت الفعلي. لمنع إرهاق مهندسي التناوب (On-call) بالتنبيهات الليلة الناتجة عن الاهتزازات المؤقتة في البنية التحتية، يجب وضع سياسات تنبيه هرمية تعتمد على طبيعة الخطأ.

خطوات ضبط المراقبة لتقليل الإنذارات الكاذبة والاستجابة للأعطال الحقيقية هي كالتالي:

  1. احسب معدل فشل الويب هوك بناءً على إجمالي عدد عمليات الاستلام خلال الست دقائق الماضية مقابل استجابات HTTP 5xx واستجابات انتهاء المهلة.
  2. قم بفصل وعرض أخطاء البنية التحتية المؤقتة وأخطاء منطق الأعمال بشكل مستقل على لوحة المعلومات (Dashboard).
  3. قم بتفعيل مكالمات PagerDuty الطارئة فقط عندما يتجاوز معدل الفشل 15 بالمائة وتتجاوز قائمة الانتظار الميتة 100 عنصر، واجعل حالات انتهاء المهلة البسيطة صامتة ليلاً لتقليل إرهاق فريق التناوب.