كلنا نسمعوا عن Observability، لكن شنوّة هي بالضبط؟ وكيفاش نجموا نستخدموها باش نحلّوا المشاكل في النظام؟
الـ Observability، مفهوم مهم في عالم البرمجة، لكن برشة ناس مازال ما فاهميناش بالضبط. كيفاش نجموا نستغلّوه لتحليل ومعالجة أي مشاكل في الأنظمة الكبيرة؟ خلينا نبدأ بقصة طبية بسيطة عشان نفهمو الموضوع بشكل أفضل.
كيما الإنسان وقتما يمرض، يروح للطبيب، والطبيب يبدأ يعمل عدة خطوات باش يحدد السبب ويعالج المشكلة:
الجسم البشري هو نظام متكامل، مكوّن من أجهزة وأعضاء تعمل مع بعض. بنفس الطريقة، أي Software هو نظام متكامل، مكوّن من أجزاء تعمل مع بعض.
الهدف الأساسي من الـ Observability هو تحويل النظام من Blackbox (صندوق أسود) إلى Glass Box (صندوق زجاجي)، يعني نقدر نراه ونتفاعل معاه بشكل واضح.
كما الطبيب عنده خطوات لتشخيص المرض، المبرمج لازم يعمل نفس الشيء عشان يقدر يحل أي مشكلة تظهر في النظام.
المؤشرات الحيوية في جسم الإنسان هي نفسها Metrics في النظام، وهي أرقام تعطينا فكرة سريعة على حالة النظام:
مثلاً، CPU usage، Memory usage، Transaction per second، وغيرها.
Metrics تعطي تنبيه سريع إذا كان فيه مشكلة أو خرجت الأرقام عن الحدود المسموحة.
على المدى الطويل، هي تساعدنا نعرف إذا كان الأداء جيد ولا نجموا نعملوا Optimization لتحسين الكفاءة.
بعد ما نعرفوا إن فيه مشكلة، لازم نعرفوا إيش هي المشكلة.
هنا يجي دور الـ Logs، وهي تسجيلات نصية توضح الأحداث أو الأخطاء اللي تحصل داخل النظام.
Logs تساعدنا نفهم تسلسل الأحداث والأسباب اللي أدت للأخطاء.
الـ Logs تشرح لنا شنوّة المشكلة، لكن أين هي المشكلة؟
هنا يدخل دور الـ Traces، وهي entries تتبع مسار البيانات داخل النظام من مكوّن لمكوّن آخر.
باستخدام الـ Traces، نقدر نعرف إذا كان في مشكلة في Service معين، أو حتى في Class أو Function داخل المكوّن نفسه.
تطبيق الـ Metrics، Logs، و Traces داخل أي نظام يخليه قابل للرصد والتفاعل. هالشي يجعل حل المشاكل أسهل وأسرع، ويساهم في تحسين الكفاءة العامة للنظام.
الفوائد الأساسية هي:
في E-Commerce App مثلاً، ممكن نطبق الـ Observability كالآتي:
من خلال تطبيق هذه المبادئ، نجموا نبنوا نظام مرن وسهل الاستكشاف، يسمح لنا بتشخيص وحل المشاكل بسرعة وفعالية. الـ Observability هو الأداة الأساسية لأي مبرمج باش يقدر يتعامل مع الأنظمة المعقدة ويحسن الأداء.