Guest User
Join us today!
Login Register
Home
Courses
Blog
Veya ai chat
Features
About
Contact
Privacy
Terms
SETTINGS
English Arabic
SUPPORT
Help
Lavidya - AI Learning Platform
    • Courses
    • Features
    • Blog
  • Pricing
  • Veya AI Chat
  • EN | AR
Login Start free

Microservices بالعربي

  • Home
  • Home
  • Microservices بالعربي
0:00 / 0:00
Auto
1080p
720p
480p
360p
Instructor
Advanced Computer Science All Grades

Microservices بالعربي

مرحبًا بكم في دورة تدريبية شاملة ومميزة حول أنماط الاتصال بين السيرفيسز (Microservices Communication Patterns). هذه الدورة مقدمة لكم من قبل أحمد الإمام، خبير تقني يتمتع بخبرة تمتد لأكثر من 8 سنوات في مجال تطوير البرمجيات، وهو حاليًا يعمل لدى شركة Join في ألمانيا.

في هذه الدورة، سنتناول موضوعًا أساسيًا يُعتبر أحد الركائز الأساسية لفهم واستخدام المايكرو سيرفيسز بكفاءة: الاتصال بين الخدمات. إذا كنت قد بدأت رحلتك في عالم المايكرو سيرفيسز أو حتى لديك خلفية عنه، فمن المحتمل أنك واجهت...

مرحبًا بكم في دورة تدريبية شاملة ومميزة حول أنماط الاتصال بين السيرفيسز (Microservices Communication Patterns). هذه الدورة مقدمة لكم من قبل أحمد الإمام، خبير تقني يتمتع بخبرة تمتد لأكثر من 8 سنوات في مجال تطوير البرمجيات، وهو حاليًا يعمل لدى شركة Join في ألمانيا.

في هذه الدورة، سنتناول موضوعًا أساسيًا يُعتبر أحد الركائز الأساسية لفهم واستخدام المايكرو سيرفيسز بكفاءة: الاتصال بين الخدمات. إذا كنت قد بدأت رحلتك في عالم المايكرو سيرفيسز أو حتى لديك خلفية عنه، فمن المحتمل أنك واجهت تحديات في فهم كيفية تواصل هذه الخدمات مع بعضها البعض.

سنناقش بالتفصيل الفرق بين الاتصال المتزامن (Synchronous Communication) وغير المتزامن (Asynchronous Communication)، وكيف يمكن اختيار الأنماط المناسبة بناءً على متطلبات المشروع. كما سنستعرض الأمثلة العملية والمشكلات الشائعة التي قد تواجهك أثناء تنفيذ هذه الأنماط وكيفية حلها.

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


## ملخص الدورة:

تتناول هذه الدورة موضوع أنماط الاتصال بين السيرفيسز (Microservices Communication Patterns) بشكل عميق ومهني. يقدمها أحمد الإمام، الذي يمتلك خبرة طويلة في مجال تطوير البرمجيات، ويعمل حاليًا في شركة مرموقة بألمانيا.

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

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

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


نتمنى لكم تجربة تعليمية ممتعة ومفيدة!

What You'll Learn

الكورس يناقش مفهوم الميكرو سيرفس ومشاكلها. الميكرو سيرفس هي طريقة لبناء الأنظمة وليس تقنية جاهزة. المزايا تشمل قابلية التوسع والتطوير بشكل مستقل لكل خدمة. المشاكل تشمل التعامل مع البيانات المشتركة وضمان التزامن. النقاش يتطرق إلى كيفية إدارة التران잭شن بين الخدمات المختلفة. تم ذكر أدوات م...
  • الكورس يناقش مفهوم الميكرو سيرفس ومشاكلها.

  • الميكرو سيرفس هي طريقة لبناء الأنظمة وليس تقنية جاهزة.

  • المزايا تشمل قابلية التوسع والتطوير بشكل مستقل لكل خدمة.

  • المشاكل تشمل التعامل مع البيانات المشتركة وضمان التزامن.

  • النقاش يتطرق إلى كيفية إدارة التران잭شن بين الخدمات المختلفة.

  • تم ذكر أدوات مثل Kafka و Graphana لتحليل الأداء ومراقبة النظام.

  • أحد الحلول هو استخدام الكاش Redis لتقليل الحمل على قاعدة البيانات.

  • التحكم في الـ API rate limit يتم عبر أدوات مثل Redis.

  • النقاش يشمل كيفية نقل البيانات بين قواعد بيانات مختلفة دون وقت تعطل.

  • تم تقديم عرض عملي (Demo) لكيفية عمل النظام باستخدام Docker و Kubernetes.

  • Introduction to Kafka and its use cases.

  • Kafka is designed for high-throughput data processing, not just reading books.

  • Kafka's architecture includes brokers, topics, partitions, and offsets.

  • Data replication in Kafka ensures durability but requires significant storage.

  • Kafka uses Zookeeper for managing metadata and leader elections.

  • Kafka supports real-time data streaming and microservices communication.

  • Key concepts include producers, consumers, topics, and partitioning.

  • Producers write data to topics, while consumers read from them.

  • Kafka guarantees message ordering within a partition.

  • Consumer groups allow parallel processing of data across partitions.

  • Rebalancing occurs when consumers join or leave a consumer group.

  • Kafka stores data on disk in segments for efficient retrieval.

  • Configuration options affect performance, such as batch size and linger time.

  • Kafka handles failures through replication and leader re-election.

  • Common issues include data duplication and rebalancing delays.

  • Use cases discussed include order tracking, metrics aggregation, and event sourcing.

  • Kafka is suitable for complex, large-scale applications requiring reliable data delivery.

  • Introduction to the podcast discussing Kafka and its applications.

  • Discussion on Kafka's transaction concept and its implementation in distributed systems.

  • Explanation of the problem with message duplication in distributed transactions.

  • The scenario where a producer sends messages and faces issues like network failure or broker crash.

  • How Kafka handles message delivery assurance and the idempotent producer feature.

  • Detailed breakdown of Kafka's transaction mechanism, including transaction markers and offsets.

  • Challenges with reading uncommitted data and how Kafka consumers handle this using isolation levels.

  • Illustration of potential problems when mixing transactional and non-transactional producers.

  • Importance of understanding Kafka’s transaction feature before implementation.

  • Closing remarks encouraging questions from listeners for future discussions.

  • Introduction of the podcast host, Ahmed Imam, and guest, Eng. Mohamed Yehia.

  • Discussion on the importance of contributing to Arabic content in software engineering.

  • Eng. Mohamed Yehia shares his experience starting in software engineering in 2004 with Microsoft technologies.

  • The main topic is about separating read and write operations in a system for better data management.

  • Explanation of challenges faced when scaling applications and handling complex data operations.

  • Introduction to using different patterns like CQRS (Command Query Responsibility Segregation) to solve these issues.

  • Detailed discussion on implementing CQRS and its benefits in complex systems.

  • Importance of understanding business logic and validation before designing system architecture.

  • Challenges of maintaining data consistency across different databases and microservices.

  • Use of event sourcing as a solution to track changes and maintain data history.

  • Audience questions addressed, including the use of transactions with message brokers and examples of read model usage.

  • Closing remarks emphasizing the value of learning and sharing knowledge within the tech community.

  • Introduction of Moustafa Mansour, a respected software engineer working at Microsoft Copenhagen.

  • Discussion on distributed transactions and their importance in software engineering.

  • Explanation of the difference between queries and transactions in databases.

  • Importance of Atomicity, Consistency, Isolation, and Durability (ACID) properties in database transactions.

  • Detailed explanation of isolation levels and problems like Dirty Reads, Non-Repeatable Reads, and Phantom Reads.

  • Concurrency Control methods including Optimistic and Pessimistic approaches.

  • Real-life incident about GitLab data loss due to incorrect transaction handling and backup issues.

  • Explanation of locking mechanisms in transactions and how they affect performance.

  • Comparison between Orchestration and Choreography design patterns for microservices.

  • Advantages and disadvantages of using Orchestration vs. Choreography in distributed systems.

  • The role of Correlation IDs in tracking events across services in Choreography-based systems.

  • Closing remarks appreciating Moustafa for sharing his knowledge and insights.

  • The discussion is about the challenges and considerations of transitioning from a monolithic architecture to microservices.

  • The speaker emphasizes that microservices should not be adopted just for the sake of it but when there is a clear problem they can solve.

  • One major issue with monolithic systems is the difficulty in managing large teams and complex codebases, leading to slow release cycles.

  • Microservices introduce their own set of challenges, such as increased complexity in deployment, network communication, and data consistency.

  • The speaker discusses the importance of understanding domain boundaries before splitting services and ensuring that teams are aligned with these domains.

  • A common mistake is over-separation of services, which can lead to unnecessary coupling or dependencies between them.

  • The conversation highlights the need for strong communication and coordination between teams when working with microservices.

  • Technical decisions, like choosing programming languages or databases, should be based on team expertise and project requirements rather than trends.

  • The speaker shares practical advice on handling database migrations, versioning APIs, and managing backward compatibility during transitions.

  • The importance of security checks, automated testing, and enforcing best practices across teams is emphasized to avoid technical debt.

  • Martin Fowler’s concept of 'If you're not prepared for big bang, don't break things apart' is mentioned as a guiding principle.

  • The talk concludes by stressing the need for organizational alignment and a shift in mindset to successfully adopt microservices.

  • الكومونكيشن بين السيرفيسز في المايكرو سيرفيسز مهم جداً ويجب أن يكون واضحًا للجميع.

  • استخدام الكومونكيشن السنكروني يسبب مشاكل مثل توقف النظام عند حدوث فشل في أحد السيرفيسز.

  • يجب علينا استخدام أساليب غير سنكرونية لتحسين الأداء وتقليل التبعيات بين السيرفيسز.

  • الاعتماد على الـ REST API ليس دائمًا الحل الأمثل بسبب التكلفة العالية من حيث الأداء والموارد.

  • يمكن استخدام بروتوكولات أخرى مثل gRPC لتحل محل REST API وتحسن الأداء بشكل كبير.

  • الـ Event-Driven Architecture تساعد في حل مشكلة التبعية بين السيرفيسز باستخدام الكيو (Queues).

  • من المهم التعامل مع الإصدارات المختلفة للبيانات (Versioning) لضمان توافق الإصدارات القديمة والجديدة.

  • الـ Backward Compatibility وForward Compatibility ضروريان لتجنب تعطل النظام عند تحديث البيانات أو الهياكل.

  • وجود ميكانيزم Retry مهم جدًا لمعالجة الفشل المؤقت في استقبال الرسائل أو تنفيذ العمليات.

  • يجب التعامل مع مشكلة فقدان البيانات أو تكرارها باستخدام Dead Letter Queue (DLQ) لتخزين الرسائل التي لم يتم معالجتها بنجاح.

  • الـ Idempotency مهمة جدًا لضمان عدم تنفيذ العملية أكثر من مرة إذا تم إرسال نفس الطلب عدة مرات.

  • تقسيم الرسائل باستخدام Topics يساعد في تحسين الأداء ومنع ازدحام النظام.

  • الـ Protobuf يعتبر أفضل من JSON من حيث الحجم والأداء لأنه يوفر طريقة أكثر كفاءة لتسلسل البيانات.

  • الـ Schema Definition في gRPC يساعد في تحديد شكل البيانات بدقة مما يقلل من أخطاء الاتصال بين السيرفيسز.

  • التعامل مع الـ Streams في gRPC يسمح بإرسال واستقبال بيانات بشكل مستمر دون الحاجة إلى انتظار رد لكل طلب.

  • السلام عليكم، هذا بودكاست عن المايكرو سيرفيسز يركز على موضوع الـ Communication Patterns.

  • المشكلة الرئيسية التي ناقشناها هي كيفية تحسين التواصل بين الخدمات باستخدام أنماط اتصال مختلفة.

  • تحدثنا عن مشكلة الـ Synchronous Communication حيث يؤدي تعطل خدمة واحدة إلى توقف النظام بالكامل.

  • تم تقديم حلول مثل استخدام الـ Message Queue لتقليل التبعيات المباشرة وتحسين الأداء.

  • أوضحنا أهمية الـ Event-Driven Architecture لتفادي المشاكل المرتبطة بالتواصل المتزامن.

  • ذكرنا أمثلة عملية حول كيفية عمل الـ API Gateway مع الخدمات المختلفة باستخدام REST أو gRPC.

  • شرحنا مفهوم Backward Compatibility وForward Compatibility في التعامل مع الإصدارات المختلفة للبيانات.

  • تم التركيز على أهمية استخدام البروتوكولات الفعالة مثل Protocol Buffers بدلاً من JSON لتقليل حجم البيانات.

  • ناقشنا مشكلة فقدان الرسائل أو استلامها بشكل متكرر عند استخدام Queues وكيفية التعامل معها.

  • تم شرح كيفية تنظيم Topics وأهميتها في تصنيف الأحداث داخل النظام.

  • أظهرنا مثالاً عمليًا لكيفية بناء نظام Microservices باستخدام gRPC و Protocol Buffers.

  • أكدنا على أهمية وضع آليات Retry ومعالجة الأخطاء لضمان استقرار النظام.

  • تحدثنا عن تقسيم النظام إلى وحدات صغيرة وإعادة استخدام الكود لتحقيق كفاءة أعلى.

  • أوضحنا كيف يمكن إدارة الإصدارات القديمة والجديدة للبيانات دون إيقاف النظام.

  • ختمنا الحلقة بتوضيح أهمية تصميم جيد للنظام لتجنب المشاكل المستقبلية.

What You'll Learn

الكورس يناقش مفهوم الميكرو سيرفس ومشاكلها. الميكرو سيرفس هي طريقة لبناء الأنظمة وليس تقنية جاهزة. المزايا تشمل قابلية التوسع والتطوير بشكل مستقل لكل خدمة. المشاكل تشمل التعامل مع البيانات المشتركة وضمان التزامن. النقاش يتطرق إلى كيفية إدارة التران잭شن بين الخدمات المختلفة. تم ذكر أدوات مثل Kafka و Graphana لتحليل الأداء ومراقبة النظام. أحد الحلول هو استخدام الكاش Redis لتقليل الحمل على قاعدة البيانات. التحكم في الـ API rate limit يتم عبر أدوات مثل Redis. النقاش يشمل كيفية نقل ا...
  • الكورس يناقش مفهوم الميكرو سيرفس ومشاكلها.

  • الميكرو سيرفس هي طريقة لبناء الأنظمة وليس تقنية جاهزة.

  • المزايا تشمل قابلية التوسع والتطوير بشكل مستقل لكل خدمة.

  • المشاكل تشمل التعامل مع البيانات المشتركة وضمان التزامن.

  • النقاش يتطرق إلى كيفية إدارة التران잭شن بين الخدمات المختلفة.

  • تم ذكر أدوات مثل Kafka و Graphana لتحليل الأداء ومراقبة النظام.

  • أحد الحلول هو استخدام الكاش Redis لتقليل الحمل على قاعدة البيانات.

  • التحكم في الـ API rate limit يتم عبر أدوات مثل Redis.

  • النقاش يشمل كيفية نقل البيانات بين قواعد بيانات مختلفة دون وقت تعطل.

  • تم تقديم عرض عملي (Demo) لكيفية عمل النظام باستخدام Docker و Kubernetes.

  • Introduction to Kafka and its use cases.

  • Kafka is designed for high-throughput data processing, not just reading books.

  • Kafka's architecture includes brokers, topics, partitions, and offsets.

  • Data replication in Kafka ensures durability but requires significant storage.

  • Kafka uses Zookeeper for managing metadata and leader elections.

  • Kafka supports real-time data streaming and microservices communication.

  • Key concepts include producers, consumers, topics, and partitioning.

  • Producers write data to topics, while consumers read from them.

  • Kafka guarantees message ordering within a partition.

  • Consumer groups allow parallel processing of data across partitions.

  • Rebalancing occurs when consumers join or leave a consumer group.

  • Kafka stores data on disk in segments for efficient retrieval.

  • Configuration options affect performance, such as batch size and linger time.

  • Kafka handles failures through replication and leader re-election.

  • Common issues include data duplication and rebalancing delays.

  • Use cases discussed include order tracking, metrics aggregation, and event sourcing.

  • Kafka is suitable for complex, large-scale applications requiring reliable data delivery.

  • Introduction to the podcast discussing Kafka and its applications.

  • Discussion on Kafka's transaction concept and its implementation in distributed systems.

  • Explanation of the problem with message duplication in distributed transactions.

  • The scenario where a producer sends messages and faces issues like network failure or broker crash.

  • How Kafka handles message delivery assurance and the idempotent producer feature.

  • Detailed breakdown of Kafka's transaction mechanism, including transaction markers and offsets.

  • Challenges with reading uncommitted data and how Kafka consumers handle this using isolation levels.

  • Illustration of potential problems when mixing transactional and non-transactional producers.

  • Importance of understanding Kafka’s transaction feature before implementation.

  • Closing remarks encouraging questions from listeners for future discussions.

  • Introduction of the podcast host, Ahmed Imam, and guest, Eng. Mohamed Yehia.

  • Discussion on the importance of contributing to Arabic content in software engineering.

  • Eng. Mohamed Yehia shares his experience starting in software engineering in 2004 with Microsoft technologies.

  • The main topic is about separating read and write operations in a system for better data management.

  • Explanation of challenges faced when scaling applications and handling complex data operations.

  • Introduction to using different patterns like CQRS (Command Query Responsibility Segregation) to solve these issues.

  • Detailed discussion on implementing CQRS and its benefits in complex systems.

  • Importance of understanding business logic and validation before designing system architecture.

  • Challenges of maintaining data consistency across different databases and microservices.

  • Use of event sourcing as a solution to track changes and maintain data history.

  • Audience questions addressed, including the use of transactions with message brokers and examples of read model usage.

  • Closing remarks emphasizing the value of learning and sharing knowledge within the tech community.

  • Introduction of Moustafa Mansour, a respected software engineer working at Microsoft Copenhagen.

  • Discussion on distributed transactions and their importance in software engineering.

  • Explanation of the difference between queries and transactions in databases.

  • Importance of Atomicity, Consistency, Isolation, and Durability (ACID) properties in database transactions.

  • Detailed explanation of isolation levels and problems like Dirty Reads, Non-Repeatable Reads, and Phantom Reads.

  • Concurrency Control methods including Optimistic and Pessimistic approaches.

  • Real-life incident about GitLab data loss due to incorrect transaction handling and backup issues.

  • Explanation of locking mechanisms in transactions and how they affect performance.

  • Comparison between Orchestration and Choreography design patterns for microservices.

  • Advantages and disadvantages of using Orchestration vs. Choreography in distributed systems.

  • The role of Correlation IDs in tracking events across services in Choreography-based systems.

  • Closing remarks appreciating Moustafa for sharing his knowledge and insights.

  • The discussion is about the challenges and considerations of transitioning from a monolithic architecture to microservices.

  • The speaker emphasizes that microservices should not be adopted just for the sake of it but when there is a clear problem they can solve.

  • One major issue with monolithic systems is the difficulty in managing large teams and complex codebases, leading to slow release cycles.

  • Microservices introduce their own set of challenges, such as increased complexity in deployment, network communication, and data consistency.

  • The speaker discusses the importance of understanding domain boundaries before splitting services and ensuring that teams are aligned with these domains.

  • A common mistake is over-separation of services, which can lead to unnecessary coupling or dependencies between them.

  • The conversation highlights the need for strong communication and coordination between teams when working with microservices.

  • Technical decisions, like choosing programming languages or databases, should be based on team expertise and project requirements rather than trends.

  • The speaker shares practical advice on handling database migrations, versioning APIs, and managing backward compatibility during transitions.

  • The importance of security checks, automated testing, and enforcing best practices across teams is emphasized to avoid technical debt.

  • Martin Fowler’s concept of 'If you're not prepared for big bang, don't break things apart' is mentioned as a guiding principle.

  • The talk concludes by stressing the need for organizational alignment and a shift in mindset to successfully adopt microservices.

  • الكومونكيشن بين السيرفيسز في المايكرو سيرفيسز مهم جداً ويجب أن يكون واضحًا للجميع.

  • استخدام الكومونكيشن السنكروني يسبب مشاكل مثل توقف النظام عند حدوث فشل في أحد السيرفيسز.

  • يجب علينا استخدام أساليب غير سنكرونية لتحسين الأداء وتقليل التبعيات بين السيرفيسز.

  • الاعتماد على الـ REST API ليس دائمًا الحل الأمثل بسبب التكلفة العالية من حيث الأداء والموارد.

  • يمكن استخدام بروتوكولات أخرى مثل gRPC لتحل محل REST API وتحسن الأداء بشكل كبير.

  • الـ Event-Driven Architecture تساعد في حل مشكلة التبعية بين السيرفيسز باستخدام الكيو (Queues).

  • من المهم التعامل مع الإصدارات المختلفة للبيانات (Versioning) لضمان توافق الإصدارات القديمة والجديدة.

  • الـ Backward Compatibility وForward Compatibility ضروريان لتجنب تعطل النظام عند تحديث البيانات أو الهياكل.

  • وجود ميكانيزم Retry مهم جدًا لمعالجة الفشل المؤقت في استقبال الرسائل أو تنفيذ العمليات.

  • يجب التعامل مع مشكلة فقدان البيانات أو تكرارها باستخدام Dead Letter Queue (DLQ) لتخزين الرسائل التي لم يتم معالجتها بنجاح.

  • الـ Idempotency مهمة جدًا لضمان عدم تنفيذ العملية أكثر من مرة إذا تم إرسال نفس الطلب عدة مرات.

  • تقسيم الرسائل باستخدام Topics يساعد في تحسين الأداء ومنع ازدحام النظام.

  • الـ Protobuf يعتبر أفضل من JSON من حيث الحجم والأداء لأنه يوفر طريقة أكثر كفاءة لتسلسل البيانات.

  • الـ Schema Definition في gRPC يساعد في تحديد شكل البيانات بدقة مما يقلل من أخطاء الاتصال بين السيرفيسز.

  • التعامل مع الـ Streams في gRPC يسمح بإرسال واستقبال بيانات بشكل مستمر دون الحاجة إلى انتظار رد لكل طلب.

  • السلام عليكم، هذا بودكاست عن المايكرو سيرفيسز يركز على موضوع الـ Communication Patterns.

  • المشكلة الرئيسية التي ناقشناها هي كيفية تحسين التواصل بين الخدمات باستخدام أنماط اتصال مختلفة.

  • تحدثنا عن مشكلة الـ Synchronous Communication حيث يؤدي تعطل خدمة واحدة إلى توقف النظام بالكامل.

  • تم تقديم حلول مثل استخدام الـ Message Queue لتقليل التبعيات المباشرة وتحسين الأداء.

  • أوضحنا أهمية الـ Event-Driven Architecture لتفادي المشاكل المرتبطة بالتواصل المتزامن.

  • ذكرنا أمثلة عملية حول كيفية عمل الـ API Gateway مع الخدمات المختلفة باستخدام REST أو gRPC.

  • شرحنا مفهوم Backward Compatibility وForward Compatibility في التعامل مع الإصدارات المختلفة للبيانات.

  • تم التركيز على أهمية استخدام البروتوكولات الفعالة مثل Protocol Buffers بدلاً من JSON لتقليل حجم البيانات.

  • ناقشنا مشكلة فقدان الرسائل أو استلامها بشكل متكرر عند استخدام Queues وكيفية التعامل معها.

  • تم شرح كيفية تنظيم Topics وأهميتها في تصنيف الأحداث داخل النظام.

  • أظهرنا مثالاً عمليًا لكيفية بناء نظام Microservices باستخدام gRPC و Protocol Buffers.

  • أكدنا على أهمية وضع آليات Retry ومعالجة الأخطاء لضمان استقرار النظام.

  • تحدثنا عن تقسيم النظام إلى وحدات صغيرة وإعادة استخدام الكود لتحقيق كفاءة أعلى.

  • أوضحنا كيف يمكن إدارة الإصدارات القديمة والجديدة للبيانات دون إيقاف النظام.

  • ختمنا الحلقة بتوضيح أهمية تصميم جيد للنظام لتجنب المشاكل المستقبلية.

Uncategorized

7 videos

MicroServices Communication Patterns (Sync / Async / REST / gRPC / Protobuf) - تيك بودكاست بالعربي
#1
MicroServices Communication Patterns (Sync / Async / REST / gRPC / Protobuf) - تيك بودكاست بالعربي
61 min
Free
MicroServices Architecture بالعربي with Mohamed Sweelam & Ahmed Elemam - Tech Podcast بالعربي
#2
MicroServices Architecture بالعربي with Mohamed Sweelam & Ahmed Elemam - Tech Podcast بالعربي
121 min
Free
Kafka بالعربي With Mohamed Ragab & Ahmed Elemam - كافكا Tech Podcast بالعربي
#3
Kafka بالعربي With Mohamed Ragab & Ahmed Elemam - كافكا Tech Podcast بالعربي
129 min
Free
Kafka Transaction بالعربي With Mohamed Ragab & Ahmed Elemam - كافكا Tech Podcast بالعربي
#4
Kafka Transaction بالعربي With Mohamed Ragab & Ahmed Elemam - كافكا Tech Podcast بالعربي
62 min
Premium
CQRS بالعربي with Mohammed Yahia & Ahmed Elemam - Tech Podcast بالعربي
#5
CQRS بالعربي with Mohammed Yahia & Ahmed Elemam - Tech Podcast بالعربي
91 min
Premium
Distributed Transaction بالعربي With Mostafa Mansour & Ahmed Elemam - Tech Podcast بالعربي
#6
Distributed Transaction بالعربي With Mostafa Mansour & Ahmed Elemam - Tech Podcast بالعربي
60 min
Premium
From Monolith to Microservices بالعربي with Alaa Attya - Tech Podcast بالعربي
#7
From Monolith to Microservices بالعربي with Alaa Attya - Tech Podcast بالعربي
90 min
Premium
Limited Time Offer

Ready to Start Learning?

Join thousands of students already learning with us. Get instant access to all course materials, lifetime updates, and a certificate upon completion.

7 video lessons
Lifetime access
Mobile friendly
Certificate included
Free
No credit card required
Login to Enroll

Instructor

Course Instructor

What You'll Learn

الكورس يناقش مفهوم الميكرو سيرفس ومشاكلها. الميكرو سيرفس هي طريقة لبناء الأنظمة وليس تقنية جاهزة. المزايا تشمل قابلية التوسع والتطوير بشكل مستقل لكل خدمة. المشاكل تشمل التعامل مع البيانات المشتركة وضمان التزامن. النقاش يتطرق إلى كيفية إدارة التران잭شن بين الخدمات المختلفة. تم ذكر أدوات مثل Kafka و Graphana لتحليل الأداء ومراقبة النظام. أحد الحلول هو استخدام الكاش Redis لتقليل الحمل على قاعدة البيانات. التحكم في الـ API rate limit يتم عبر أدوات مثل Redis. النقاش يشمل كيفية نقل ا...
  • الكورس يناقش مفهوم الميكرو سيرفس ومشاكلها.

  • الميكرو سيرفس هي طريقة لبناء الأنظمة وليس تقنية جاهزة.

  • المزايا تشمل قابلية التوسع والتطوير بشكل مستقل لكل خدمة.

  • المشاكل تشمل التعامل مع البيانات المشتركة وضمان التزامن.

  • النقاش يتطرق إلى كيفية إدارة التران잭شن بين الخدمات المختلفة.

  • تم ذكر أدوات مثل Kafka و Graphana لتحليل الأداء ومراقبة النظام.

  • أحد الحلول هو استخدام الكاش Redis لتقليل الحمل على قاعدة البيانات.

  • التحكم في الـ API rate limit يتم عبر أدوات مثل Redis.

  • النقاش يشمل كيفية نقل البيانات بين قواعد بيانات مختلفة دون وقت تعطل.

  • تم تقديم عرض عملي (Demo) لكيفية عمل النظام باستخدام Docker و Kubernetes.

  • Introduction to Kafka and its use cases.

  • Kafka is designed for high-throughput data processing, not just reading books.

  • Kafka's architecture includes brokers, topics, partitions, and offsets.

  • Data replication in Kafka ensures durability but requires significant storage.

  • Kafka uses Zookeeper for managing metadata and leader elections.

  • Kafka supports real-time data streaming and microservices communication.

  • Key concepts include producers, consumers, topics, and partitioning.

  • Producers write data to topics, while consumers read from them.

  • Kafka guarantees message ordering within a partition.

  • Consumer groups allow parallel processing of data across partitions.

  • Rebalancing occurs when consumers join or leave a consumer group.

  • Kafka stores data on disk in segments for efficient retrieval.

  • Configuration options affect performance, such as batch size and linger time.

  • Kafka handles failures through replication and leader re-election.

  • Common issues include data duplication and rebalancing delays.

  • Use cases discussed include order tracking, metrics aggregation, and event sourcing.

  • Kafka is suitable for complex, large-scale applications requiring reliable data delivery.

  • Introduction to the podcast discussing Kafka and its applications.

  • Discussion on Kafka's transaction concept and its implementation in distributed systems.

  • Explanation of the problem with message duplication in distributed transactions.

  • The scenario where a producer sends messages and faces issues like network failure or broker crash.

  • How Kafka handles message delivery assurance and the idempotent producer feature.

  • Detailed breakdown of Kafka's transaction mechanism, including transaction markers and offsets.

  • Challenges with reading uncommitted data and how Kafka consumers handle this using isolation levels.

  • Illustration of potential problems when mixing transactional and non-transactional producers.

  • Importance of understanding Kafka’s transaction feature before implementation.

  • Closing remarks encouraging questions from listeners for future discussions.

  • Introduction of the podcast host, Ahmed Imam, and guest, Eng. Mohamed Yehia.

  • Discussion on the importance of contributing to Arabic content in software engineering.

  • Eng. Mohamed Yehia shares his experience starting in software engineering in 2004 with Microsoft technologies.

  • The main topic is about separating read and write operations in a system for better data management.

  • Explanation of challenges faced when scaling applications and handling complex data operations.

  • Introduction to using different patterns like CQRS (Command Query Responsibility Segregation) to solve these issues.

  • Detailed discussion on implementing CQRS and its benefits in complex systems.

  • Importance of understanding business logic and validation before designing system architecture.

  • Challenges of maintaining data consistency across different databases and microservices.

  • Use of event sourcing as a solution to track changes and maintain data history.

  • Audience questions addressed, including the use of transactions with message brokers and examples of read model usage.

  • Closing remarks emphasizing the value of learning and sharing knowledge within the tech community.

  • Introduction of Moustafa Mansour, a respected software engineer working at Microsoft Copenhagen.

  • Discussion on distributed transactions and their importance in software engineering.

  • Explanation of the difference between queries and transactions in databases.

  • Importance of Atomicity, Consistency, Isolation, and Durability (ACID) properties in database transactions.

  • Detailed explanation of isolation levels and problems like Dirty Reads, Non-Repeatable Reads, and Phantom Reads.

  • Concurrency Control methods including Optimistic and Pessimistic approaches.

  • Real-life incident about GitLab data loss due to incorrect transaction handling and backup issues.

  • Explanation of locking mechanisms in transactions and how they affect performance.

  • Comparison between Orchestration and Choreography design patterns for microservices.

  • Advantages and disadvantages of using Orchestration vs. Choreography in distributed systems.

  • The role of Correlation IDs in tracking events across services in Choreography-based systems.

  • Closing remarks appreciating Moustafa for sharing his knowledge and insights.

  • The discussion is about the challenges and considerations of transitioning from a monolithic architecture to microservices.

  • The speaker emphasizes that microservices should not be adopted just for the sake of it but when there is a clear problem they can solve.

  • One major issue with monolithic systems is the difficulty in managing large teams and complex codebases, leading to slow release cycles.

  • Microservices introduce their own set of challenges, such as increased complexity in deployment, network communication, and data consistency.

  • The speaker discusses the importance of understanding domain boundaries before splitting services and ensuring that teams are aligned with these domains.

  • A common mistake is over-separation of services, which can lead to unnecessary coupling or dependencies between them.

  • The conversation highlights the need for strong communication and coordination between teams when working with microservices.

  • Technical decisions, like choosing programming languages or databases, should be based on team expertise and project requirements rather than trends.

  • The speaker shares practical advice on handling database migrations, versioning APIs, and managing backward compatibility during transitions.

  • The importance of security checks, automated testing, and enforcing best practices across teams is emphasized to avoid technical debt.

  • Martin Fowler’s concept of 'If you're not prepared for big bang, don't break things apart' is mentioned as a guiding principle.

  • The talk concludes by stressing the need for organizational alignment and a shift in mindset to successfully adopt microservices.

  • الكومونكيشن بين السيرفيسز في المايكرو سيرفيسز مهم جداً ويجب أن يكون واضحًا للجميع.

  • استخدام الكومونكيشن السنكروني يسبب مشاكل مثل توقف النظام عند حدوث فشل في أحد السيرفيسز.

  • يجب علينا استخدام أساليب غير سنكرونية لتحسين الأداء وتقليل التبعيات بين السيرفيسز.

  • الاعتماد على الـ REST API ليس دائمًا الحل الأمثل بسبب التكلفة العالية من حيث الأداء والموارد.

  • يمكن استخدام بروتوكولات أخرى مثل gRPC لتحل محل REST API وتحسن الأداء بشكل كبير.

  • الـ Event-Driven Architecture تساعد في حل مشكلة التبعية بين السيرفيسز باستخدام الكيو (Queues).

  • من المهم التعامل مع الإصدارات المختلفة للبيانات (Versioning) لضمان توافق الإصدارات القديمة والجديدة.

  • الـ Backward Compatibility وForward Compatibility ضروريان لتجنب تعطل النظام عند تحديث البيانات أو الهياكل.

  • وجود ميكانيزم Retry مهم جدًا لمعالجة الفشل المؤقت في استقبال الرسائل أو تنفيذ العمليات.

  • يجب التعامل مع مشكلة فقدان البيانات أو تكرارها باستخدام Dead Letter Queue (DLQ) لتخزين الرسائل التي لم يتم معالجتها بنجاح.

  • الـ Idempotency مهمة جدًا لضمان عدم تنفيذ العملية أكثر من مرة إذا تم إرسال نفس الطلب عدة مرات.

  • تقسيم الرسائل باستخدام Topics يساعد في تحسين الأداء ومنع ازدحام النظام.

  • الـ Protobuf يعتبر أفضل من JSON من حيث الحجم والأداء لأنه يوفر طريقة أكثر كفاءة لتسلسل البيانات.

  • الـ Schema Definition في gRPC يساعد في تحديد شكل البيانات بدقة مما يقلل من أخطاء الاتصال بين السيرفيسز.

  • التعامل مع الـ Streams في gRPC يسمح بإرسال واستقبال بيانات بشكل مستمر دون الحاجة إلى انتظار رد لكل طلب.

  • السلام عليكم، هذا بودكاست عن المايكرو سيرفيسز يركز على موضوع الـ Communication Patterns.

  • المشكلة الرئيسية التي ناقشناها هي كيفية تحسين التواصل بين الخدمات باستخدام أنماط اتصال مختلفة.

  • تحدثنا عن مشكلة الـ Synchronous Communication حيث يؤدي تعطل خدمة واحدة إلى توقف النظام بالكامل.

  • تم تقديم حلول مثل استخدام الـ Message Queue لتقليل التبعيات المباشرة وتحسين الأداء.

  • أوضحنا أهمية الـ Event-Driven Architecture لتفادي المشاكل المرتبطة بالتواصل المتزامن.

  • ذكرنا أمثلة عملية حول كيفية عمل الـ API Gateway مع الخدمات المختلفة باستخدام REST أو gRPC.

  • شرحنا مفهوم Backward Compatibility وForward Compatibility في التعامل مع الإصدارات المختلفة للبيانات.

  • تم التركيز على أهمية استخدام البروتوكولات الفعالة مثل Protocol Buffers بدلاً من JSON لتقليل حجم البيانات.

  • ناقشنا مشكلة فقدان الرسائل أو استلامها بشكل متكرر عند استخدام Queues وكيفية التعامل معها.

  • تم شرح كيفية تنظيم Topics وأهميتها في تصنيف الأحداث داخل النظام.

  • أظهرنا مثالاً عمليًا لكيفية بناء نظام Microservices باستخدام gRPC و Protocol Buffers.

  • أكدنا على أهمية وضع آليات Retry ومعالجة الأخطاء لضمان استقرار النظام.

  • تحدثنا عن تقسيم النظام إلى وحدات صغيرة وإعادة استخدام الكود لتحقيق كفاءة أعلى.

  • أوضحنا كيف يمكن إدارة الإصدارات القديمة والجديدة للبيانات دون إيقاف النظام.

  • ختمنا الحلقة بتوضيح أهمية تصميم جيد للنظام لتجنب المشاكل المستقبلية.

Login to Enroll

Share Course

Share this course with others

Lavidya - AI Learning Platform

Lavidya makes learning easier and more enjoyable. AI that deeply understands education.

Copyright © 2026 Lavidya. All Rights Reserved.

Privacy • Terms • Features • Contact