Designing Distributed Systems Book Recommendation

يتناول الكتاب أهم أنماط التصميم أو ما يعرف بالـ Design Patterns وأكثرها شيوعاً في تصميم النظم الموزعة، وأغلب الأمثلة بالفعل تم الاعتماد عليها في Kubernetes والـ Containerised Applications. 
Designing Distributed Systems Book Recommendation

في هذه الصفحة

معلومات عامة عن الكتاب

يعد هذا الكتاب من أفضل الكتب التي قرأتها مؤخرًا وذلك لإنه ينير العديد من الأفكار في العقل ويربط العديد من المواضيع ببعضها البعض، كما أنه ينمي لديك مهارة تصميم النظم الموزعة عن طريق العديد من الأمثلة بشكل يسهل استيعابه.

يتناول الكتاب أهم أنماط التصميم أو ما يعرف بالـ Design Patterns وأكثرها شيوعاً في تصميم النظم الموزعة، وأغلب الأمثلة بالفعل تم الاعتماد عليها في Kubernetes والـ Containerised Applications. 

مراجعة لمحتوى الكتاب

يبدأ الكتاب بمقدمة عامة ويوضح ما الذي يتناوله الكتاب ولمن هذا الكتاب، ومن ثم يدخل في أول جزء من أجزاءه وهو الـ Single Node Pattern، ويضم هذا الجزء من الكتاب ثلاثة أنماط شهيرة, من الممكن أن تكون قد تعاملت بها في عملك مسبقًا: 

١- الـ Sidecar Pattern 
2- الـ Ambassador Pattern 
٣- الـ Adapter Pattern

وتجتمع كل هذه الأنماط الثلاثة في هدف وغاية واحدة وهي كونهم عامل مساعد للتطبيق الأساسي عن طريق اضافة بعض الخصائص الجديدة, فعلى سبيل المثال في الـ Sidecar Pattern اذا افترضنا أننا نتعامل مع نظام قديم جدًا أو ما يعرف بالـ legacy System وكان هذا النظام يتعامل ببروتوكول الـ HTTP ونود اضافة SSL Layer حتى نتمكن من دعم HTTPS فيمكن أن يكون لدينا Container مساعد للـ Main Application Container يكون دوره الأساسي هو أنه يستقبل الـ HTTPS Requests ويقوم بدوره بنقلها بعد ذلك للـ Main Application حتى يقوم بتنفيذ المطلوب من الـ Request.

وهكذا هو الحال مع باقي الأنماط الثلاثة فكل نمط منهم يقوم بدعم وزيادة الخصائص التي يقوم بها التطبيق بالاضافة لإنه يمكن اعادة استعمالهم في أكثر من تطبيق مختلف.

ثم يتناول الكتاب في الجزء الثاني الـ Serving Patterns وهي مجموعة أخرى من الأنماط التي تؤدي وتساعد في تحقيق بعض الأهداف الأخرى ومن ضمن هذه الأنماط: 

١- الـ Sharding 
٢- الـ Replication 
٣- الـ Scatter & Gather 

 ليس هنالك غنى عن الـ Sharding والـ Replication فهم من ضمن الأنماط التي نحتك بها في تعاملنا مع أية نظم موزعة، ولكن نمط الـ Scatter & Gather هو مبدأ قد يكون غير مألوف لدى البعض ولكنه مشابه كثيرًا للـ Fork-Join Technique في معالجة البيانات بشكل متوازٍ أو ما يعرف بالـ Parallel Computing.

وهو نمط شهير يتضمن تقسيم المهمة إلى بضعة مهام أصغر وكل Node في النظام تقوم بتنفيذ المهم الصغيرة المطلوبة منها ثم يتم اعادة تجميع النتائج من كل الـ Nodes للحصول على النتيجة النهائية.

وبعد هذا الجزء يتناول الكتاب جزءًا آخر ومجموعة أخرى من الأنماط ألا وهي الـ FaaS أو ما يعرف بالـ Function as A Service والـ Event Driven, كما أنه تناول بعض المفاهيم الهامة التي تتضمن تحقيق مبدأ الملكية أو ما يعرف بالـ Ownership وتناول ذلك من خلال الـ Leader Election حتى تتم عملية التنسيق أو ما يعرف بالـ Coordination بين الـ Nodes الموزعة في النظام بشكل سليم.

في هذا الجزء تناول بعض من الأمثلة الواقعية كعملية الـ Two Factor Authentication وكيف لنمط الـ FaaS ان يكون مناسب لهذا المثال.

آخر جزء من الكتاب كان يتناول بعض الأنماط التي تندرج تحت الـ Queues والـ Working Queues مما أتاح له بأن يتحدث بشكل سلس وسهل عن معالجة البيانات دفعة واحدة أو ما يعرف بالـ Batch Processing , والتي أصبحت حاليًا متاحة بشكل كبير في أغلب الـ Frameworks خصوصًا في مجال معالجة تدفق البيانات أو ما يعرف بالـ Stream Processing وتناول بعض الـ Techniques المهمة كالـ Join, MapReduce, Filter والـ Copier وغيرهم. 

كما أنه شرح هذا الجزء بمثال جميل جدًا عن الـ Image & Video Processing وغيره. 

 اكتر حاجة كانت مميزة في الكتاب هي ذكر امثلة توضيحية لافكار ممكن تستغلها بالـ Patterns دي .. على سبيل المثال للـ FaaS كان بيكلم عن الـ Two Factor Authentication System .. وفي الـ Batch Processing كان بيكلم عن امثلة جميلة زي الـ Image & Video Processing Exampels .. وغيرهم كتيير ..

المميزات والانتقادات

المميزات:
١- مليء بالأمثلة الواقعية والصور التوضيحية مما يسهل عملية الفهم والاستيعاب.
٢- مليء بالـ Code Snippets الخاصة بـ Kubernetes ، إذا كنت تود التطبيق العملي مع القراءة فينصح بتجربتهم حتى تحظى بالفائدة كلها.
٣- أسلوبه سهل وبسيط ولا يحتاج إلى معرفة معقدة باللغة الانجليزية.

الانتقادات:
١- اعتماد الكتاب بشكل أساسي على Docker و Kubernetes.
٢- لا بد من معرفتك أو احتكاكك بـ Docker و Kubernetes بقدر ما حتى لو بسيط لكي تحظى باستفادة كبيرة من قراءتك لهذا الكتاب.

في الختام

إذا كنت من المستوى المتوسط فيما فوق وقد تعاملت مسبقًا مع Containerised Application فهذا الكتاب سينير عقلك بالعديد من الأفكار الرائعة التي من الممكن أن تحتاج إليها في عملك وخصوصًا في تصميم النظم. 

اشترك الآن بنشرة اقرأ-تِك الإخبارية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!
رائع! تحقق من بريدك الإلكتروني واضغط على الرابط لإكمال تسجيل الدخول.
حدث خطأ! من فضلك قم بادخال بريد إلكتروني صحيح!