VOL33: Distributed Tracing in Microservices
أهلًا وسهلا بكم في العدد الثالث والثلاثين من النشرة الأسبوعية لاقرأ-تِك 🎉
لا تنسوا أهلنا من صالح الدعاء,اللهم إنّا استودعناك اياهم، اللهم كُن عوناً لهم، اللهم انصرهم واحفظهم. 🇵🇸
أهلًا وسهلا بكم في العدد الثالث والثلاثين من النشرة الأسبوعية لاقرأ-تِك 🚀
سواء كنت مهندس برمجيات مبتدئ أو محترف، فنشرتنا هدفها انها تثري المحتوى التقني العربي سعيا للتطوير من جودة المحتوى باللغة العربية, من خلال تقديم أحدث المستجدات والتطورات في عالم البرمجيات، بالإضافة إلى أفضل الممارسات والنصائح القيمة, ونشر أحدث المقالات وترشيحات الكتب ومحتوى ورقة وقلم اللي بينزلوا بشكل مستمر في موقع اقرأ-تِك.
في الإصدار ده الفهرس هيكون كالآتي:
Distributed Tracing
Networks 101 : Introduction , Network Typologies , Router and Models
Message Queue
Clean Architecture in DotNet Core
Agile Methodology in Project Management
ستجدون أيضًا في هذه النشرة:
الشراكات - Sponsorship
قناة التليجرام مجانية للجميع حتى يصلك كل مقال جديد
كيفية كتابة مقالات معنا في اقرأ-تِك: والمقالات تكون متاحة ومجانية للجميع ومحفوظة باسم الكاتب بكل تأكيد
كيفية الاشتراك في اقرأ-تِك من خلال InstaPay و VodafoneCash
Distributed Tracing
في التطبيقات الكبيرة وخصوصًا اللي بتتعامل مع المايكروسيرفسز (Microservices)، بيبقى عندنا الـ System مُقسم لمجموعة خدمات (Services) صغيرة بتشتغل مع بعض عشان تنفذ المهام.
ولما بيجي طلب (Request)، بيعدي من خلال كذا خدمة، وأحياناً ممكن يعدي على سيرفرات مختلفة. هنا بيجي دور الـ Distributed Tracing، اللي هو عملية تتبع الطلب عبر النظام كله عشان نعرف مشواره من أول ما وصل لحد ما خلص.
والهدف الأساسي من الـ Distributed Tracing هو توفير رؤية واضحة لرحلة الطلب (Request) عشان لو فيه مشاكل أو بطء في الأداء نقدر نحدد مصدرها. بنقدر نعرف فين بالتحديد الـ bottleneck أو الخدمة اللي فيها مشكلة. الفكرة ببساطة إننا بنخلي النظام زي خريطة واضحة للـ flow بتاع الطلبات عشان نقدر نفهم كل خطوة.
وعشان نفهم اكتر رحلة الـ Request Flow ونتعرف ازاي الـ Distributed Tracing بيتم محتاجين نتعرف اصلا على الـ TraceID.
TraceID
وقت ما بتعمل Order من تطبيق توصيل للأكل الطلب بتاعك بيمر ب Services كتير من اول تحديد المطاعم المتاحة لحساب وقت التوصل و إرسال الطلبات لعامل التوصيل و خدمة تتبع الطلب إلخ…
فالـ Trace Id بيكون " مُعرف التتبع " بيكون مع الطلب و هو رايح لكل Service من دي عشان يميز الـ Order دا عن غيره و نعرف نتتبع مساره من أول خدمة لاخر خدمة.
ودا لأن كل Service بتعامل الـ Order كـ Request جديد وممكن متكونش عارفة حاجة عن الـ Service اللي قبلها او اللي بعدها.
الـ TraceID هو حاجة أساسية جداً في عملية التتبع دي. ده عبارة عن Identifier (معرف) بيبقى مميز لكل طلب، بيتولد مع أول خطوة بيعملها الطلب في النظام. الهدف منه إنه يخلي كل خطوة أو خدمة تشتغل مع الطلب ده تقدر تتعرف عليه.
وقت الـ Monitoring نقدر نستخدم الـ TraceID عشان نحصل علي ال Logs او الـ Errors المرتبطة بالطلب دا من كل الخدمات في نظامنا في مكان واحد.
Networks 101 : Introduction , Network Typologies , Router and Models
الشبكة هي وسيلة لربط جهازين أو أكتر بهدف نقل البيانات أو مشاركتها. يعني لما تبعت لصديقك صورة أو ملف، الشبكة بتكون هي الوسيلة اللي بتنقل البيانات دي من جهازك لجهازه. بس الموضوع أكبر من كده! الشبكات بتدخل في حياتنا اليومية أكتر مما نتخيل، زي لما تفتح الإنترنت من موبايلك أو تشغل الطابعة اللي في المكتب من جهاز الكمبيوتر.
مكونات الشبكة
الشبكات بتتكون من 3 مكونات أساسية، وكل جزء له دور مهم في عملية نقل البيانات:
الأجهزة النهائية (End Devices)الأجهزة النهائية هي الأجهزة اللي بنستخدمها بشكل مباشر، زي اللابتوب، الهواتف الذكية، الطابعات، وأجهزة الكمبيوتر الشخصية. دورها الأساسي إنها تستقبل البيانات أو ترسلها. مثال بسيط: لما موبايلك يستقبل صورة من صديقك، الموبايل بيشتغل كجهاز نهائي بيستقبل البيانات دي.
أجهزة الشبكة (Network Devices)أجهزة الشبكة زي الـ Switch، Hub، Router، و Bridge بتلعب دور الوسيط اللي بينظم حركة البيانات بين الأجهزة النهائية. يعني لما اللابتوب يبعت ملف للطابعة عبر الشبكة، جهاز الـ Router مثلاً هو اللي بيوجه البيانات دي من اللابتوب للطابعة.
Switch: بيوصل بين مجموعة من الأجهزة في نفس الشبكة المحلية.
Router: بيوصل بين شبكات مختلفة وينظم حركة البيانات بينها.
Hub: بيوزع البيانات المرسلة لكل الأجهزة في الشبكة لكنه أقل كفاءة من الـ Switch.
وسائل الاتصال (Media)الوسيلة اللي بتوصل بين الأجهزة النهائية وأجهزة الشبكة ممكن تكون أسلاك (Wires) أو إشارات لاسلكية (Wireless). مثلاً، الأسلاك بتوصل جهاز الكمبيوتر بتاعك بالراوتر، بينما الإشارات اللاسلكية بتوصل موبايلك بنفس الراوتر بدون الحاجة لكابلات.
الشبكات مش بس وسيلة لنقل البيانات، لكنها بقت جزء أساسي من حياتنا اليومية. في العمل، في البيت، وفي أماكن كتير، بنعتمد عليها لنقل المعلومات بسرعة وكفاءة. الشبكات بتساعدنا نوصل البيانات بسهولة بين الأجهزة، وتسمح للموظفين في الشركات يشتغلوا على نفس المشروع حتى لو مش في نفس المكان.
المقال الثاني عن الشبكات : Networks 101 - Network Topologies
المقال الرابع عن الشبكات : Networks 101 - Network Models TCP / IP and OSI Model
الشراكات - Sponsorship
بفضل الله أصبح متاح حاليا دعمنا من خلال الرعاة والشراكات وفعلنا الـ Sponsorship وتقدروا تشوفوا التفاصيل كاملة من هنا والـ Analytics بتاعتنا من خلال اقرأ-تِك والنشرة الأسبوعية 🚀
لا تدع شيء يفوتك!
بفضل الله قمنا بإطلاق قناة اقرأ-تِك على التليجرام مجانًا للجميع 🚀
آملين بده اننا نفتح باب تاني لتحقيق رؤيتنا نحو إثراء المحتوى التقني باللغة العربية ، ومساعدة لكل متابعينا في انهم يوصلوا لجميع أخبار اقرأ-تِك من حيث المقالات ومحتوى ورقة وقلم والنشرة الأسبوعية وكل جديد بطريقة سريعة وسهلة
مستنينكوا تنورونا , وده رابط القناة 👇
Message Queue
تخيلوا ان عندنا مطعم وشغال فيه اكتر من طباخ بيعملوا اكلات كتيرة ومتنوعة في نفس الوقت, وكل واحد شغال على الطبق اللي بيجهزه, فعشان الطباخين دول يبقى فيه بينهم تناسق وترتيب على حسب الاوردرات لازم يكون فيه نظام بيحققلهم ده فهم بيعملوا ايه ؟
بيحطوا الاوردرات كلها ورا بعض في شكل طابور، وكل طباخ بيلاقي اوردر متاح بياخد الاوردر اللي عليه الدور.
هو ده ببساطة الـ Message Queue
Message Queue
الـ Message Queue هو عبارة عن وسيلة تواصل بين الـ Services وبعضها البعض فيقدروا يتبادلوا المعلومات بشكل Asynchronous وعشان كده النوع ده من التواصل بنسميه Asynchronous Communication.
طب يعني ايه Async ؟
الـ Asynchronous Communication معناه ان الطرفين مش بيتواصلوا مع بعض In Real Time ومش محتاجين الاجابة تحصل بشكل Immediate زي الـ MailBox
فالـ Message Queue بيكون عبارة عن وسيط بين طرفين وبيضمنلك ان الرسالة هيتم استلامها من طرف واستقبالها من الطرف الآخر.
المكونات الأساسية لأي Message Queue
أول جزء هو الـ Producer : وده دوره انه يـ Create ويبعت الـ Message اللي عاوزة تتبعت للـ Message Queue
تاني جزء هو الـ Message : ودي الحاجة اللي الـ Producer بيبعتها للـ Message Queue عشان الـ Consumer يعملها Processing وممكن يكون ليها اكتر من شكل زي Data او Event حصل أو Task وكلهم عبارة عن Message في الأول والآخر ..
تالت جزء وهو الـ Message Queue : وده المكان اللي بتتخزن فيه الـ Message لحد ما يتم استلامها وعمل Processing عليها
رابع جزء هو الـ Consumer : وده دوره انه يستقبل الـ Message اللي اتبعتت ويعملها Processing بالشكل المطلوب
Clean Architecture in DotNet Core
عندما تتعقد عمليات تطوير البرمجيات، يصبح من المهم أن تظل التطبيقات قابلة للصيانة والتطوير مع مرور الوقت. وهنا تأتي هندسة البرمجيات النظيفة (Clean Architecture) كحل يتيح لنا بناء تطبيقات مرنة وسهلة التعديل.
ما هو الـ Clean Architecture
هندسة البرمجيات النظيفة هي مفهوم تم تطويره بواسطة روبرت مارتن، المعروف بـ "Uncle Bob"، وهي تعتمد على مبدأ أساسي وهو فصل المسؤوليات داخل التطبيق. الهدف الرئيسي هو بناء أنظمة قابلة للتعديل بسهولة، بغض النظر عن التغييرات التي قد تحدث في قاعدة البيانات، واجهة المستخدم، أو حتى الأنظمة الخارجية.
ما هي مبادئ الـ Clean Architecture
فصل الطبقات (Layers): يتم تقسيم التطبيق إلى عدة طبقات، كل طبقة تؤدي وظيفة محددة ومستقلة عن باقي الطبقات. هذا يساعد في سهولة الصيانة.
مبدأ عكس الاعتماد (Dependency Inversion Principle): يعني أن الطبقات الأساسية (مثل المنطق الداخلي) لا تعتمد على التفاصيل الخارجية مثل قواعد البيانات أو الواجهات.
الكائنات الأساسية (Entities): هي العناصر التي تمثل القواعد الأساسية للتطبيق ولا تتأثر بأي تغييرات خارجية.
الحالات أو الاستخدامات (Use Cases): تصف كيف يجب أن يعمل التطبيق في سيناريوهات معينة، وتتعامل مع الكائنات الأساسية.
الواجهات (Interfaces): تستخدم لتفصل بين المنطق الأساسي وتطبيقات الأنظمة الخارجية.
تطبيق الـ Clean Architecture in .NET
يمكن تطبيق هندسة البرمجيات النظيفة في .NET عبر تقسيم التطبيق إلى عدة مشاريع، كل مشروع يمثل طبقة معينة. إليك بعض الأمثلة:
Agile Methodology in Project Management
قبل البدء في أي مشروع أو تطوير أي منتج، من الضروري تبني منهجيات أو طرق فعالة لإدارة وتنظيم المشروع لتحقيق نتائج أفضل.
وتعد منهجية الأجايل (Agile) واحدة من أكثر المنهجيات شهرة وفعالية في إدارة المشاريع وتطوير البرمجيات، من خلال تركيز على مبدأ المرونة، التقييم، والتحسين المستمر طوال عملية التطوير.
نظرة عامة على منهجية Agile
تعتمد الأجايل على تقسيم المشروع إلى أجزاء صغيرة تُسمى التكرارات (iterations) أو السبرنتات (sprints)، حيث يمثل كل جزء دورة تطوير محددة بمدة زمنية معينة. هذه الطريقة تتيح للفريق تسليم أجزاء وظيفية من المنتج بشكل سريع، مع الحصول على ملاحظات للتطوير والتحسين المستمر.
الخطوات الأساسية في منهجية Agile
التخطيط للمشروع (Planing): يتم في هذه الخطوة وضع خطة متكاملة للمشروع وتحديد الأهداف النهائية التي يجب تحقيقها.
إنشاء خارطة طريق للمنتج (Creating the product roadmap): في هذه المرحلة، يتم تحديد جميع الميزات المطلوبة وترتيبها حسب الأولويات لضمان تحقيق المنتج النهائي بالشكل المطلوب.
إنشاء خطة تقديم المشروع (Planning the release): يتم تحديد كيفية ومتى سيتم تسليم المشروع، بالاعتماد على الأولويات وتوقعات العمل لضمان تسليم المنتج في الوقت المناسب.
تخطيط السبرنتات (Planning the sprint): يتم تقسيم المشروع إلى سبرنتات محددة زمنيًا، بحيث يكون لكل سبرنت أهداف واضحة ومدة زمنية لإكمال المهام المطلوبة.
الاجتماعات اليومية (Daily Stand-up Meetings): تُعقد اجتماعات قصيرة يومية للتأكد من سير العمل بشكل صحيح، ومناقشة المشاكل وتحسين سير العمل باستمرار.
مراجعة السبرنت والاجتماعات الاسترجاعية (Sprint review and retrospective meetings)
بعد نهاية كل سبرنت، يجتمع الفريق مع العميل لعرض الجزء المنتهي من المشروع والحصول على ملاحظات منه. بناءً على هذه الملاحظات، يتم إجراء التحسينات المطلوبة.
JobStack_ 2024 is Back
اقترب الآن موعد JobStack_ وهو عبارة عن تجمع لأكبر مجتمع تقني في الشرق الأوسط وأفريقيا اللي بيجمع خبراء التكنولوجيا، رواد الأعمال، المستثمرين، والشركات الكبيرة. فجهز نفسك علشان تستمتع بـ:
1- زيارة أكشاك الشركات المختلفة، تسليم السي ڤي، والتقديم على الوظايف المتاحة
2- حضور جلسات عن آخر التطورات في صناعة البرمجيات
3- التواصل مع خبراء تقنيين من أعلى مستوى في المنطقة.
تقدروا دلوقتي تشتركوا في اقرأ-تِك بخصم الـ 20% وتنضموا لمجتمع مهتم بالقراءة في هندسة البرمجيات بـ 50 جنيه بس 🎉
وتستمتعوا بحرية كاملة في قراءة المقالات في مواضيع مختلفة بجودة عالية زي:
Data Structure & Algorithms , System Design , Distributed Systems , Micro-Services, Clean Code, Refactoring, Databases , Web Development, DevOps وغيرهم كتير باللغة العربية!
بالاضافة لمحتوى ورقة وقلم اللي بنشرح فيه مفاهيم برمجية بطريقة سهلة وباستعمال صور توضيحية 🚀
ولو فيه مشاكل في الدفع الأونلاين فمتاح دلوقتي الاشتراك من خلال InstaPay و VodafoneCash 💪
تقدروا تتواصلوا معانا من خلال الـ WhatsApp Business أو من خلال الرسايل على مواقع التواصل الاجتماعي أو من خلال البريد الالكتروني contact@eqraatech.com 😍
رؤيتنا هي إثراء المحتوى التقني العربي وجعل التعلم من خلال القراءة أمتع، وذلك من خلال إثراء المحتوى التقني باللغة العربية وتشجيع المبرمجين على القراءة بلغتهم الأم والتفكير أيضًا بها.
لذلك اتحنا الفرصة أمام الجميع للمساهمة ومساعدتنا في نشر واثراء المحتوى التقني باللغة العربية, من خلال كتابة المقالات التقنية في مختلف مجالات هندسة البرمجيات.
وجب التنويه أنه لن يتم نشر كافة الأعمال التي تصل إلينا، وإنما سيتم الانتقاء منها ما يحقق هدفنا بإثراء المحتوى التقني العربي، ولذلك قد تُطلب بعض التعديلات من الكاتب قبل النشر.
لمعرفة المزيد بخصوص :
💬 المعايير العامة لكتابة ونشر المقالات
⚡️ كيفية الإرسال
🔥 التزامات اقرأ-تِك تجاه الكتاب
يمكنكم قراءة كافة التفاصيل من هنا 👇