المقدمة
كثيرًا ما نسمع عن ال Observability ولكن ما هي حقًا ، وما هي أهدافها وإزاي نستغلها لتوصيف وحل أي مشكلة في أي نظام؟!
ورقة وقلم وخلونا نبدأ بقصة طبية بسيطة تفهمنا كل حاجة عن الموضوع دا قبل ما ندخل في الكلام عنه.
توصيف الـ Observability في الحياة العملية
الإنسان لما بيتعب بيروح للطبيب اللي بدوره بيعمل عدة خطوات تساعده في تقييم الحالة وإيجاد العلاج المناسب:
- بيقوم بأخذ مؤشرات الشخص الحيوية
- بيسأل الشخص بعض الأسئلة عشان يقدر يوصف الأعراض
- وبيقوم بعمل أشعة على الجسم لتحديد مكان الألم
جسم الإنسان عبارة عن نظام متكامل ولكن هو كذلك عبارة عن أجهزة مختلفة بتتعاون مع بعض زي الجهاز الهضمي والتنفسي وإلخ.. والخطوات دي بتساعد الطبيب يعرف مصدر الشكوى ويحدد لها علاج مناسب وأساليب وقائية لمنع تكرارها.
أي Software في الدنيا زي الجسم بالظبط ، بيبقي نظام متكامل يتكون من عدة أنظمة أصغر.
هدف ال Observability الأساسي هو تحويل النظام من Blackbox إلى Glass Box.
أهم عناصر المراقبة (Pillars of Observability)
ولازم المبرمج يقوم بنفس خطوات التشخيص اللي قام بيها الطبيب عشان يحل أي مشكلة بتطرأ علي هذا النظام

Metrics
فالمؤشرات الحيوية عندنا عبارة عن ال Metrics :وهي مؤشرات رقمية تعطينا معلومات سريعة عن حالة النظام مثل ال CPU and Memory Usage, Transaction per second إلخ..
دور ال Metrics دائمًا هي التنبيه السريع في حالة حدوث مشكلة وخروج أرقام مؤشر ما عن الحدود المسموحة
وليها دور علي المدى الطويل وهي تحديد كفاءة الأداء وبتبين لنا إذا كان في فرص لل Optimisation.
Logs
خلاص عرفنا إن فيه مشكلة ، بس هي إيه؟
هنا يجي دور ال Logs لتوصيف الأعراض : وهي عبارة عن تسجيلات نصية بتوصف events أو errors بتحصل داخل النظام
ال Logs تساعد على فهم تسلسل الأحداث وأسباب الأخطاء.
Traces
عرفنا إن فيه مشكلة وعرفنا ماهيتها ولكن مش عارفين مكانها!
هنا يجي دور الـ Traces وهي Entries بتتبع مسار البيانات في النظام من مكون للآخر وعملية تتبع المسار ده تسمح لنا نعرف المشكلة حصلت في أي Service بل في أي Class أو Function داخل المكون دا.
فوائد الـ Observability
تنفيذ هذه الثلاث عناصر داخل أي نظام بتجعله قابل للرصد ووقتها بيكون حل أي مشكلة عملية براغماتية بخطوات ثابتة وده بيزود كفاءة النظام ككل وبيرحم المبرمجين من الحيرة وقت ال Investigation وال Debugging.
نقدر نلخص الفوائد في هذه النقاط:
- تحسين وقت الإصلاح: تقليل الوقت اللازم لاكتشاف الأخطاء وإصلاحها.
- زيادة الاستقرار: من خلال استباق المشاكل قبل تأثيرها على المستخدم.
- تحسين تجربة المستخدم: ضمان أداء سريع وموثوق.
مثال عملي
مثال عملي: في نظام تجارة إلكترونية E-Commerce App:
- قم بجمع مقاييس مثل زمن تحميل الصفحة وعدد الطلبات المكتملة وعدد الطلبات في الثانية .
- استخدم سجلات (Logs) لتوثيق طلبات العملاء ومعالجة الطلبات وتسجيل الأخطاء.
- تتبع مسار طلب العميل من خلال النظام باستخدام تتبع موزع Distributed Tracing لفهم أي تأخير أو فشل.
في الختام
بتطبيق هذه المبادئ، سنتمكن من بناء نظام مرن وسهل الاستكشاف!
Discussion