تكامل الأنظمة

Article header image with a square says "Integration between systems"

اليوم عشان تبني نظام جيد ويخدم المستخدمين بشكل افضل قد تحتاج تكامل مع بعض الأنظمة الخارجية. امثلة تكامل الأنظمة كثيرة و نعيشها بشكل يومي، مثل تكامل شركات التأمين و ابشر للسماح بتجديد إستمارة السيارة. التكامل بين المستشفيات و شركات التأمين الطبي. تختلف طرق التكامل بناءً على احتياجات كل تطبيق و حسب متطلبات الأعمال وحجم البيانات التي يتم تبادلها.

في هذه المقالة راح نستعرض انواع طرق التكامل و كيف اقرر ايش افضل طريقة استخدمها.

  • API
  • Webhook
  • Database Integration (ربط قواعد بيانات)
  • File Transfer (مشاركة الملفات)

تنبيه: جميع الأمثلة المذكورة او اسماء الجهات هي امثلة نظرية و ليست بالضرورة مطبقة في ارض الواقع و الهدف زيادة واقعية الأمثلة.


API

واجهة برمجة التطبيقات (APIs) مجموعة من الأوامر (Commands) والدوال (Functions) أو... طورت ليتم استخدامها من قبل المبرمجين لتطوير البرمجيات أو التفاعل مع أنظمة و/أو برمجيات أخرى. المرجع

الهدف الأساسي من تطوير التطبيقات هو نقل المعلومات، سواء من المستخدم للنظام أو من نظام لنظام آخر.

وقد تكون أفضل وسيلة اليوم لنقل المعلومات بين الأنظمة الحديثة هي الربط عن طريق واجهات برمجة التطبيقات (APIs).

لذلك، لبناء API في البداية أحتاج إلى معلومة قابلة للمشاركة مع المستخدم الذي سيتفاعل معي. ويجب أن تكون هذه المعلومة مخزنة في قاعدة بيانات أو شيء مشابه، بحيث يكون النظام قادرًا على الوصول إليها.

فعلى سبيل المثال، لو عندي نظامين:

  • نظام الجوازات السعودية
  • نظام وزارة الخارجية السعودية

المطلوب:

عند وصول أي زائر أجنبي، يتم الاستعلام برقم الجواز في نظام وزارة الخارجية للتأكد من وجود تأشيرة سارية تسمح بدخول الزائر.

هذا يعني أنني - كنظام الجوازات - لا أمتلك معلومات عن التأشيرة، وبالتالي سأحتاج إلى التواصل مع نظام آخر تتوفر لديه هذه المعلومة - نظام وزارة الخارجية.

طيب هذه العملية كيف تصير بشكل تقني؟

Image of an API architecture shows a client, server, and database

الرسم البياني يشرح لنا كيف المفروض يكون هيكل نظام الإستعلام عن البيانات بين النظامين.

في هيكل التكامل بين نظامين عن طريق API نحتاج وجود Web Server ممكن يكون مبني على لغة برمجية او حتى Framework زي Python FastAPI, NodeJS Express, .NET Core اي حاجة ممكن تستقبل HTTP Request

1- الطلب ينشأ من نظام الجوازات حسب الEvent المطلوب، مثلا لما موظف الجوازات يدخل رقم الجواز.

2- الطلب يوصل عن نظام وزارة الخارجية و يستعلم بالمدخلات الموجودة في الطلب.

3- يرجع المعلومة الصادرة عن نظام وزارة الخارجية إلى نظام الجوازات

4- نظام الجوازات يقرر ايش هي الخطوة التالية، سواء يوافق او يرفض دخول الزائر حسب متطلبات العمل

الوصول من منظور شبكات الوصول:

الإرتباط التقني في الحالة الطبيعية يكون عبر شبكة الإنترنت، بمعنى مقدم الخدمة (Publisher) يحتاج يفتح الوصول للإنترنت مع إضافة طريقة للتوثيق و التأكد من صلاحية وصول النظام المستعلم عبر إضافة Authentication Layer على الـ API.

لكن في حالة الإرتباط بين الجهات الحكومية، الهيئة السعودية للبيانات والذكاء الاصطناعي: سدايا تقدم الشبكة الحكومية الآمنة لتوفير وصول آمن بين الجهات الحكومية.

مزايا استخدام API:

تستطيع تحديث البيانات بشكل فوري و مباشر، يعتبر نظام الـAPI من أكثر الطرق فعالية و سرعة في تبادل البيانات بين الأنظمة. قد يتطلب تطوير و تكامل أكبر من الطرق الأخرى، لكنه يوفر مرونة و قدرة على التوسع. و يعتبر الخيار الأمثل في حالة الحاجة لتبادل البيانات بشكل متكرر.


Webhook

الويب هوك/الخطاف الإلكتروني: هو طريقة تسمح لك بإرسال بيانات محددة من متجرك إلى تطبيق أو موقع إلكتروني آخر بمجرد وقوع حدث معين، ليقوم التطبيق المستلم بعد ذلك بمعالجة البيانات وإتخاذ الإجراء المحدد بناءً على الحدث. المرجع

بدلاً من أن يقوم النظام الثاني بالاستعلام المستمر عن التحديثات (كما في حالة الـ API التقليدية)، يقوم النظام الأول بدفع المعلومات عند حدوث التغيير.

لنفترض وجود نظامين:

  • نظام منصة اعتماد للمناقصات الحكومية.
  • نظام شركة مقاولات ترغب في متابعة المناقصات الجديدة.

المطلوب:

عند طرح أي مناقصة جديدة على منصة اعتماد، يتم إخطار نظام شركة المقاولات تلقائيًا بالتفاصيل.

طيب هذه العملية كيف تصير بشكل تقني؟

Image of a webhook architecture between two systems to share data
  1. تسجيل عنوان Webhook: تقوم شركة المقاولات بتزويد منصة اعتماد بعنوان URL خاص بها لاستقبال الإشعارات (Webhook URL).
  2. حدث (Event) في النظام الأول: عند إضافة مناقصة جديدة في منصة اعتماد، يتم تفعيل حدث (Event) داخل النظام.
  3. إرسال البيانات: يقوم نظام منصة اعتماد بإرسال طلب HTTP POST إلى عنوان الـ Webhook المسجل، متضمنًا بيانات المناقصة الجديدة.
  4. استقبال ومعالجة البيانات: يستقبل نظام شركة المقاولات البيانات ويقوم بمعالجتها، مثل تخزينها أو إرسال إشعار إلى الموظفين المختصين.

مزايا استخدام Webhook:

  • فعّالية أكبر: لا حاجة للاستعلام المستمر عن التحديثات.
  • توفير في الموارد: تقليل عدد الطلبات بين الأنظمة.
  • تحديثات في الوقت الحقيقي: الحصول على المعلومات فور حدوثها.

إستخدامات واقعية للـWebhook


ربط قواعد البيانات (Database Integration)

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

يُعد هذا النوع من التكامل مفيدًا عندما تتطلب الأنظمة تبادل كميات كبيرة من البيانات بشكل متكرر. ومع ذلك، فإن من عيوبه أنه قد يكون بطيئًا في نقل المعلومات، كما أنه قد يكون تحديًا عند التعامل مع البيانات الحساسة زمنياً، حيث يحتاج إلى جهد ووقت لنقل البيانات بناءً على حساسيتها وحجمها.

مثال توضيحي:

  • نظام مستشفى حكومي.
  • نظام وزارة الصحة لمراقبة الإحصاءات الصحية.

المطلوب: تحديث بيانات المرضى والإجراءات الطبية في نظام وزارة الصحة بشكل مستمر.

كيف تتم هذه العملية تقنيًا؟

مزامنة قواعد البيانات: إعداد دوال أو أوامر تقوم بمزامنة البيانات بين النظامين، وعادةً ما يتم تشغيلها في نهاية اليوم أو خارج ساعات العمل لتجنب أي تأثيرات على الأداء وسرعة النظام الأساسي.

النسخ المتماثل (Replication): استخدام تقنيات النسخ المتماثل لتمرير البيانات الجديدة أو المحدثة

Image of a database architecture between a client and server
Image of a database architecture between a client and server with active active replication

الوصول المباشر: قد يتم منح وزارة الصحة وصولًا مباشرًا (قراءة فقط) إلى قاعدة بيانات المستشفى. و هذا يتطلب تنسيق مسبق للشبكات و سماح الوصول.


مشاركة الملفات (File Transfer)

مشاركة الملفات هي طريقة تقليدية لتبادل البيانات بين الأنظمة عبر تبادل ملفات بتنسيقات محددة (مثل CSV، XML، JSON). يتم نقل الملفات عبر بروتوكولات مثل FTP، SFTP، أو حتى عبر البريد الإلكتروني.

تستخدم هذه الطرق في حال طلب البيانات للأرشفة او حسب السياق المناسب لمتطلبات العمل


كيف أقرر أي طريقة تكامل أستخدم؟

يعتمد اختيار طريقة التكامل المناسبة على عدة عوامل:

  • حجم البيانات وتواترها: إذا كانت البيانات تحتاج إلى تحديثات فورية، قد يكون API أو Webhook هو الخيار الأنسب. إذا كانت البيانات كبيرة الحجم ولكن لا تحتاج إلى تحديثات فورية، قد يكون مشاركة الملفات مناسبًا.

  • القدرات التقنية: بعض المؤسسات قد لا تمتلك البنية التحتية لدعم APIs أو Webhooks، وبالتالي يكون مشاركة الملفات أو ربط قواعد البيانات أكثر ملاءمة.

  • الأمان والخصوصية: يجب مراعاة مستوى الأمان المطلوب، خاصة عند التعامل مع بيانات حساسة.

  • التكلفة والموارد: تنفيذ APIs و Webhooks قد يتطلب موارد تطويرية أكبر مقارنة بمشاركة الملفات.

Software Engineering
Integration
API