System Design & Distributed Systems
بناء الأنظمة الحديثة مش بس بيحتاج كود كويس، لكن كمان تصميم معماري ذكي يتحمّل النمو والتعقيد. في القسم ده، هنتعرف على إزاي تصمّم نظام يقدر يخدم آلاف أو ملايين المستخدمين بكفاءة واستقرار. وبنغوص في تصميم الأنظمة والأنظمة الموزعة.
SLOs Explained
في أي نظام حقيقي، السؤال مش بيكون: “هل السيستم شغال؟” لأن غالبًا الإجابة آه… بس السؤال الأهم هو: شغال قد إيه بشكل يعتمد عليه؟ هنا بتيجي فكرة الـ SLO — Service Level Objective.
Observability
بنسمع عن الـ Observability كتير ولكن ايه هي وايه هي أهدافها وإزاي نستغلها لتوصيف وحل أي مشكلة في النظام؟!
Distributed Tracing
الهدف الأساسي من الـ Distributed Tracing هو توفير رؤية واضحة لرحلة الطلب (Request) عشان لو فيه مشاكل أو بطء في الأداء نقدر نحدد مصدرها. بنقدر نعرف فين بالتحديد الـ bottleneck أو الخدمة اللي فيها مشكلة.
Top 24 System Design Terminologies
تعالوا نشوف مع بعض شوية من أهم المصطلحات المستخدمة في تصميم الأنظمة والـ (System Design) في مجال هندسة البرمجيات باللغة العربية ، مع شرح مبسط لكل مصطلح.
Protocol Buffer (ProtoBuf)
اختيار الـ Format المناسب للـ Data Serialization أصبح موضوع حيوي حاليًا خصوصًا في التعامل مع الأنظمة اللي بتتميز بكونها Large-Scale واللي الأداء فيها حيوي ومهم جدًا. ومن أشهر الـ Formats اللي فضلت موجودة على مر السنين
Uber's Docstore Architecture
قاعدة البيانات دي بتتميز بعدة مميزات من ضمنها انها بتوفر الـ Strict Serializability Consistency Model على مستوى الـ Partition وده كان من ضمن المتطلبات اللي Uber عاوزة تحققها وبالتالي نقدر نستنج هنا ان Uber بتضحي بالـ Availability في سبيل الـ Consistency
Strategies for Read Heavy Systems
لما نيجي نتكلم عن الأنظمة اللي بتركز على عمليات القراءة أكتر من الكتابة، يعني الـ Systems اللي بيكون فيها نسبة قراءة للبيانات أكبر بكتير من نسبة الكتابة، ففيه شوية استراتيجيات ممكن نستخدمها عشان نحسن من الأداء.
How to Avoid Double Payment
أحد أكبر المشاكل اللي ممكن نواجهها في تصميم الأنظمة الخاصة بالدفع , والمعاملات المالية هي أنك تدفع العميل أكتر من مرة, وعشان كده واحنا بنصمم Payment System محتاجين ناخد في الاعتبار ان عملية الدفع لازم نضمن انها هتتم مرة واحدة فقط لا غير.
WebSockets In a Nutshell
هي عبارة عن Communication Protocol مزدوجة الاتجاه بنقول عليها Full-Duplex Communication Channels وده كله من خلال TCP Connection واحد بس. وبالتالي بتسمح بعملية الـ Real-time والـ Event-Driven Connections بين الـ Client والـ Server.