الIntegration علم واسع. و ليس مجرد تعامل مع أدارة لإدارة للAPIs. على سبيل المثال إن كان هناك 23 نمط تصميم
للبرمجة فهناك اكثر من 60 نمط تصميم للIntergration. مجرد استخدام ادوات مثل Apigee او Tibco لا يعني بالضرورة ضمان بأنك تقوم بالعمل الصحيح.
هذه سلسلة عن التكامل Integration.
سأبدأ بالمرجع الأساسي و هو كتاب اُلف في بداية الالفينيات اسمه Enterprise Integration Patterns احصى مؤلفيه 65 نمط تصميم و قسموها إلى 9 مجموعات. اغلب ادوات الIntegration تكون متضمنة لأغلب تلك الPatterns و تظهرها كأنها Features للمنتج مما يجعلك لا تهتم لها.
مؤلفي الكتاب تأثروا بكتاب Martin Fowler Patterns of Enterprise Application Architecture و شجعهم على تأليف كتابهم. و كتاب Fowler أساس للApplication Architectures.
التعامل المباشرة مع أدوات الIntegration بدون فهم للأساسيات بعيداً عن الأدوات, اشبه بمن يعمل على برنامج محاسبة و هو ليس بمحاسب اصلاً. هل سيعمل؟ ممكن. لكن يكون واعياً بالطريقة الصحيحة او المثلى لمعالجة العمليات الحسابية.
نفس الشيء مع ادوات الIntegration فالجزء النظري العام مهم و يساعدك في اختيار الأداة المناسبة التي تتلائم مع عملك دون الحاجة إلى ان تأخذ افضل ما في السوق كالذي تصطفيه Gartner او Forrester و غيرها. ستختار ما يناسب عملك و ميزانيتك.
الأنظمة الكبيرة و الضخمة لا تختلف في اكوادها عن الانظمة الصغيرة, لكن التضخم يكون في الArchitecture و كيف تتخاطب تلك الانظمة الصغيرة مع بعضها و كيف يمكننا تضمين المزيد و المزيد من تلك الأنظمة الصغيرة بداخل تلك الArchitecture بسهولة.
الحاجة لوجود Integration platform سببها التعقيد المصاحب لتكامل الأنظمة و الحاجة للتحكم به و مراقبته. ايضاً هناك الكثير من الصيّغ و المعايير المختلفة لشكل البيانات و لا يوجد حل سحري آني لتلك المشاكل بل تحتاج المؤسسات لبناء و تطوير خطتها الاستراتيجية للتكامل مع يتوافق مع اهدافها.
اذا اردت تعلم اساسيات الIntegration و الIntegration Patterns ابدأ بتعلم شيء مثل الBPM و تعلم الـ BPMN فهي ما ترتب أفكارك و تفيدك في مناحي الحياة العملية و هندسة الأجراءات حتى بعيداً عن الIT. كثير من الأدوات الخاصة بالIntegration تستخدم نفس رموز BPMN كما في جزئية الOrchestration.
كوظيفة قد يكون المسمى Integration Engineer و هو الشخص المسؤول في المؤسسة عن تصميم و تنظيم حركة مرور كل البيانات من نظام إلى اخر و طريقة انسيابها و تخاطبها مع بعضها بصورة سليمة بالإضافة إلى الاختبار و التحكم و المراقبة لتخرج منها بInsights كثيرة مهمة لتطوير العمل.
بالنسبة للمبرمجين وجود Integration Engineer معهم يساعدهم كثيراً في تطوير انفسهم و برامجهم , يجهز لهم ما يحتاجونه للعمل مع معماريات مثل الSOA او الMicroservices
يساعدهم في تطبيق الEvent Driven Architecture و التعامل مع الِAPIs الخارجية المختلفة عبر نقطة و صيغة واحدة من خلال الESB.
بالسنبة للأدوات ابدأ باستخدام اداة Open Source مثل Apache Camel و هو ما بنت عليه RedHat منتجها الخاص بالAPI Management المسمى 3scale. فحتى لو كانت اداة المستقبل لم تبنى على Apache Camel فستجد انها اصبحت مألوفة لديك.
كانت هذه سلسلة تثقيفية قد تتبعها اخرى و أعتذر على الإطالة.
اداة* لإدارة ..
• • •
Missing some Tweet in this thread? You can try to
force a refresh
كيف نتعلم و تتقن لغة برمجة جديدة بطريقة احترافية ؟
هذا مجرد رأي قد يوافقني او يعارضني البعض و مرحب بآراء الجميع. المشكلة ان البرمجة طريق ننسى معالمه عندما نصل إلى نهايته. ليس الهدف هنا تعلم "البرمجة" بل لغة جديدة بافتراض اننا مبرمجين لكن بلغة أخرى. و ضعت 10 خطوات
( سلسلة )
لغتك القادمة التي سمعت بها او قرأت انها مطلوبة , يمكنك مبدئياً تشوف درس مما يسمى الCrash Course ساعة إلى ساعتين في اقصى حد. لأخذ فكرة عنها فقط. لكن اذا اردت الاحتراف فإليك هذه الطريقة الصعبة او الHard way.
اولاً: اللغة أداة أو مجموعة أدوات. مبدئياً تعلم اللغة بدون تطبيق.
خصص وقت لقرءاة الReference Manual من موقع اللغة الرسمي لتعرف امكانيات اللغة. و ليس بالضرورة أن تقارنها بما تعرف و لا تتخطى أي شيء معتقداً انك تعرفه فمعلوماتك السابقة عن لغة اخرى قد تضللك في لغتك الجديدة
هذه السلسلة عبارة عن 10 نقاط مختصرة من مستند كتبه مهندس برمجيات في اوائل 2017 و كان قد عمل في Google لمدة 10 سنوات و كتبه في 20 ورقة. هناك الكثير من التفاصيل لم اذكرها و لمن اراد الإستزادة عليه الرجوع للورقة المرفقة.
(سلسلة) arxiv.org/ftp/arxiv/pape…
1. لدى Google مخزن Repository للأكواد يضم اكثر من بليوني سطر. يتم عليه اكثر من 40 الف Commit يومياً. لكل مبرمج في الشركة حق الاطلاع و التعديل على أي كود حتى لو كانت خارج نطاق مشروعه. و يقبل بعد موافقة الCode Owner على التعديل.
2. لدى Google نظام يسمى Blaze لفحص Testing الكود و بنائه Build آلياً و لابد من وجود Unit Testing. و مراجعة الكود تتم عن طريق الويب بعد ارسال طلب من الCode Owner كرابط بريد الكتروني للمبرمجين . يفيد بوجود كود يحتاج مراجعة ولا بد من مراجعته على الأقل من قبل شخص اخر.
مصطلح الSQL و NoSQL هي تصنيفات للتسهيل لكن من وجهة نظر المختص فهي ACID و BASE أو Relational و Non Relational. هذه السلسلة سنتكلم اولاً عن الSQL Database او قواعد البيانات التي تجتمع فيها اربع خواص يرمز لها بالحروف ACID. لكن هنا تختلف قليلاً عن الACID المعروفة ( سلسلة )
الإختلاف هنا يعود إلى ان المقارنة بين قاعدة بيانات SQL مثل MySQL و NoSQL مثل Cassandra مثلاً لا يصح. لأن فكرة الNoSQL الأساسية هي ان تكون موزعة على اكثر من سيرفر, لذا يجب أن تكون المقارنة مع قاعدة بيانات SQL موزعة مثل MemSQL او ClustrixDB و Amazon Aurora و غيرها.
مبدئياً استحضر في في عقلك احد قواعد البيانات الSQL المشهورة مثل MySQL او Oracle او MSSQL و تخيل عملية معينة مثل عملية سحب نقدي من جهاز الصراف الآلي الATM لنرى من خلالها كيف جمعت و طبقت قواعد البيانات تلك خواص ACID الأربعة فيها.
استكمالاً لما سبق , الMVVM اختصار لModel View ViewModel Model و قد بُني على MVC و MVP من قبل مايكروسوفت لتقنية WPF مع انه كان هناك شيء مشابه له اختصاره MVPM كتب عنه Martin Fowlerفي بداية الالفين.
لنفهم فائدة الMVVM , مايكروسوفت عندما قدمت Silverlight و WPF او Xaml بشكل عام .هذه الادوات تحتاج لمسة من مصمم جرافكس محترف فبدل ان نعطي المصمم كل المشروع نستطيع ان نعطيه فقط هذه الجزئية و نعمل كمبرمجين على جانب الBackend.
اللي اشتغل على KnockoutJS بيكون الMVVM مألوف لديه حيث ان فكرته هي تقسيم المشروع إلى ثلاثة اقسام Model فيه مصدر البيانات بدون تشكيل و فيه View و ViewModel مهمته الValidation و اعادة تشكيل البيانات بما يتناسب مع الView.
سؤال لأحد المتابعين عن التقنية التي استخدمت في لعبة Pokemon Go و كيفية الدمج بين العالم الحقيقي و الافتراضي . هذه التقنية تسمى Augmented Reality اختصارها AR و ليس Virtual Reality VR. يمكن عمل تطبيقات لها عن طريق محركات الالعاب مثل Unity3D و Unreal . ( سلسلة )
تقنية الVR هي اسهلها و الفرق بينها و بين الAR انها فقط مجرد رسومات 3D بالكمبيوتر و يمكن التفاعل معها عبر الكمبيوتر بالكيبورد او عصا التحكم او الماوس مثل العاب Call of Duty كما يمكن دمج حساسات المكان و زاوية الرؤية الموجودة في الموبايل او نظارات الواقع الافتراضي مثل Oculus Rift .
هناك تقنية ثالثة و هي الأعقد هي الMixed Reality MR و هي دمج بين التقنيتين السابقتين بحيث ترى الشيء الافتراضي مع الواقع و يمكن التعامل معه بواسطة يديك او عينيك مباشرة و عادة تحتاج هذه التقنية لمعدات اعقد مثل HoloLense 2 و التي تكلف حوالي 3500 دولار غير الاشتراك الشهري .
هناك طرق كثيرة لتعلم البرمجة , القراءة , الدورات في الفصول أو الإلكترونية , مشاهدة دروس على اليوتيوب , قراءة اكواد اشخاص اخرين , الطلب من شخص ان يعلمك وجهاً لوجه او محاولة بناء برنامج و الضغط على نفسك حتى تنجزه . لكن هناك طريقة اخرى ( سلسلة )
هناك خلاف في الآراء حول إن كانت البرمجة عِلم أم فن ؟ . ربما الأثنان , احياناً البرمجة مثل لعبة الشطرنج , هناك استراتجيات لا تتعلمها إلا بالملاحظة المباشرة , لأنها شيء لو اراد الشخص الاخر تعليمك اياها سيعجز لأنها خبرة .
برأيي لاشيء افضل و اسرع في تعلم البرمجة من الجلوس بجانب مبرمج خبير يقوم بتطوير نظام حقيقي , و مراقبة ما يقوم به دون اسئلة و الأفضل لو كان ممن يتكلم مع نفسه اثناء عمله . لاتزعجه راقب كيف يبدأ بتأسيس المشروع , كيف يجهز الملفات , كيف يكتب الاكواد و يبحث عنها في النت و يستخدمها.