الأصل وراء التقنية هو الـActor Model و هي طريقة برمجية يقسم فيها البرنامج إلى وحدات صغيرة اشبه بكمبيوترات مستقلة, كلObject يسمى هنا Actor فيه وحدة معالجة و تخزين و اتصال. يتوزعون عبر مجموعة Servers تهتم بنفسها بموضوع الScalability و الConcurrency. أي مناسبة للDistributed Systems
فكرة الActor Model طبقت في لغة Smalltalk و تمثل لب فكرة Alan Kay بشأن الOOP أي ان كل شيء مجرد Message بين Objects مثلما الخلايا تتخاطب مع نفسها لتكون بتخاطبها في النهاية الكائن الحي. كما ان الActor Model له استناد رياضي بعكس الOOP الحالية.
لغة Erlang مثلاً هي لغة Functional في الأصل , صرح مصممها Joe Armstrong بأنها اللغة الوحيدة الReal OOP و ذاك لانها تعتمد الActor Model و وافقه Alan Kay بأنها الأقرب لمفهومه عن الOOP. مع ان Erlang بدأت كمكتبة للغة Prolog لكن قوة الفكرة حولتها للغة مستقلة لها هذه الشهرة.
هناك مقولة "One Ant is no Ant" حيث أجري بحث على النمل و و جدوا ان النملة التي تعيش خارج مستعمرة النمل تعيش عُشر حياتها فيما لو كانت في مستعمرة بالرغم من توفير الغذاء و الماء لها. و من هنا نشأت تلك مقولة التي ستجدها تتكرر عندما يتم شرح الActor Model ( العمل الجماعي بين الObjects)
نعود لOrleans , الفكرة الأساسية هي بناء نظام جاهزة للCloud او مثل ما تكلمنا عنه في سلسلة سابقة Cloud Native لأنه ليس كل برنامج بالضرورة جاهز انه يكون مناسب للCloud. في الطرق العادية كل الApp يحصل له Scale لكن هنا فقط الObject الأكثر طلباً إن لزم الأمر.
عملياً بيكون عندنا مثلاً تطبيق يتخاطب مع Web API و هي بدورها تتكلم مع الSilos اللي قد تكون موزعة على اكثر من سيرفر لأجل إدارة الRequests بغض النظر عن مكان الGrain في طريقة اشبه بالData Sharding لكن هنا لدينا Objects Sharding اذا فشل احدها يقوم الاخر بالعمل على مستوى الObjects
بهذه التقنية لسنا بحاجة أن نقلق بشأن الThreads او الConcurrency بشكل عام او بالShared State , فهي هنا مضمنة و لا تحتاج لأي تدخل من المبرمج في تمكينها او ادارتها.
جاري تحميل الاقتراحات...