Lambda Architecture
لو عندنا سيستم عليه كمية عملاء كبيرة وفيه كمية داتا ضخمة جدا Big Data زي سيستم "محفظة إلكترونية" مثلا وعاوزين نطلع لكل عميل مجموعة تقارير وإحصائيات مهمة ورصيده الحالي في اللحظة اللي يفتح فيها الموبايل أبليكيشن.
تقارير وإحصائيات زي مثلا:
- جراف يوضح معدلات الإنفاق آخر أسبوع مقارنة بآخر 4 أسابيع السابقة
-جراف يوضح معدلات الإنفاق على المنصات المشهورة بحيث يبقى واضح كل منصة تم تم الشراء منها بنسة كم من أمازون، نون، أوبر، ترينديول، نينجا،، كيتا، جوجل بلاي ...إلخ.
-تصنيف الإنفاق بحيث يبقى واضح كل نسبة تم إنفاقها تتبع ايه، كم تم إنفاقه على منصات التعليم، منصات الترفيه(Games, Filsms, etc)، السلع الأساسية، ...إلخ.
هنا يجي دور واحد من أشهر المعماريات للتعامل مع هذا السيناريو وهو "Lambda Architecture".
خلينا نتفق إن الداتا الأصلية عندنا (Raw Data) هي كل "قرش" دخل أو خرج من الحساب، مع شوية معلومات عن القرش ده، زي خرج إمتى واتصرف في أي منصة\متجر، وتصنيف الإنفقاق ده، ...إلخ.
فكرة الـ"Lambda Architecture" قائمة على ثلاث Layers للتعامل مع الداتا القديمة، الداتا الآنية، ودمج الاتنين مع بعض، كالآتي:
1. الـ Batch Layer
دي السيرفس اللي بتشتغل كل يوم الساعة 12 بليل مثلا. بتعمل إيه؟
بتمسك كل المعاملات اللي تمت من سنة لحد الساعة 12 بليل.
تحسب الإجمالي، الفوايد، الضرائب، والمصاريف الإدارية "بالمليم".
وتطلع نتيجة اسمها (رصيد الإغلاق): "رصيدك لحد امبارح بليل هو 10,000 جني".
تجهز الإحصائيات اللي بنحتاجها في التقارير والGraphs.
النتايج دي بتتحط في جدول جاهز وسريع (Batch View).
2. الـ Speed Layer (الرادار الصاحي)
دلوقتي الساعة 2 الظهر، والعميل راح اشترى "قهوة" بـ 50 جني وسحب "1000 جنيه" من الـ ATM وركب أوبر 4 مرات ب400 جني.
الـ Batch Layer نايمة، مش هتعرف الحاجات دي غير بليل.
الـ Speed Layer صاحية، لقطت المعاملات ده في نفس ثانية حدوثها وقالت: "في 1450 جني اتسحبوا دلوقتي".
بتخزن المعلومة دي في جدول سريع جداً (Real-time View).
3. الـ Serving Layer (لحظة فتح الأبليكيشن)
العميل فتح الموبايل الساعة 2:05 الظهر عشان يشوف رصيده، أو تقرير\جراف معين. السيستم بيعمل إيه؟
يروح للـ Batch View: "يا باشا، العميل ده كان معاه كام لحد امبارح بليل؟" .. الرد: 10,000 جني.
يروح للـ Real-time View: "في حاجة حصلت النهاردة؟" .. الرد: ايوه، عمليات بـ 1450 جنيه.
الـ Serving Layer تعمل العمليات الحسابية اللازمة بحيث تدمج بين ال2 views وتطلع الرصيد الحالي: (8550 جني).
ليه اللفة دي كلها؟
السرعة: العميل لما فتح الأبليكيشن، السيستم محسِبش تاريخه كله من سنة عشان يطلعله رصيده مظبوط والتقارير\الجرافز\الإحصائيات أب تو ديت، هو عمل عمليات بسيطة على 2 views جاهزين.
الدقة: لو الـ Speed Layer "هنجت" أو حصل أي خطأ فيها بسبب ضغط الشبكة، أول ما الساعة تيجي 12 بليل، الـ Batch Layer هتصحى وتراجع كل المعاملات الأصلية من الهارد ديسك وتصلح الرقم وتخليه دقيق 100% لليوم الجديد.
تخيل لو السيستم "Batch بس"؟
العميل هيسحب فلوس ويفتح الأبليكيشن يلاقي رصيده لسه زي ما هو مسمعش! (وده كان بيحصل زمان في البنوك).
تخيل لو السيستم "Speed بس"؟
لو السيستم وقع أو حصلت غلطة حسابية، رصيد العميل ممكن يضيع أو يتحسب غلط للأبد لأن مفيش "دفتر كبير" (Batch) بيرجع يراجع ورا الحسابات اللحظية.
Comments
Post a Comment