Graceful degradation يعني أنه عند فشل أحد التبعيات، يحافظ النظام على استمرار التدفق الأساسي من خلال تقديم تجربة مخفضة أو جزئية بدلاً من إرجاع خطأ. الهدف هو الفشل بسلاسة وليس الفشل الكامل: صفحة متدهورة أفضل من 500.
Graceful degradation يعني أنه عند فشل أحد التبعيات، يحافظ النظام على استمرار التدفق الأساسي من خلال تقديم تجربة مخفضة أو جزئية بدلاً من إرجاع خطأ. الهدف هو الفشل بسلاسة وليس الفشل الكامل: صفحة متدهورة أفضل من 500.
BAD (fail hard):
search() → backend timeout → throw → user sees HTTP 500 (whole page dead)
GOOD (fail soft):
result = search()
catch timeout → return cached_results OR empty + notice
page renders:
[ "Showing recent results — live search is temporarily unavailable." ]
+ cached listings, working nav, working checkout
→ user keeps browsing; core flow intact
بدلاً من صفحة ميتة، يحصل المستخدم على نتائج مخزنة مؤقتاً وإشعار صغير، بينما التصفح والدفع يستمران في العمل. الفشل محصور في ميزة واحدة فقط.
التبعيات ستفشل — واجهات برمجية خارجية وclusters البحث وخدمات التوصيات. بدون graceful degradation، أي فشل واحد ينتشر ويسبب انقطاعاً كاملاً. التصميم للفشل السلس (بيانات مخزنة مؤقتاً أو جزئية أو افتراضية)، وإيقاف المسارات غير الضرورية، والانتظار المحدود مع بدائل، وعزل الأعطال باستخدام bulkheads يبقي المنتج قابلاً للاستخدام أثناء الأعطال الجزئية — وهذا هو الفرق بين عطل بسيط وحادث كبير.