اتحاد GraphQL هو نهج بنائي موزع يُمكن المطورين من استخدام واجهة برمجة تطبيقات واحدة عبر خدمات GraphQL متعددة (أي الخدمات المكتوبة بلغة الاستعلام مفتوحة المصدر، GraphQL).
يقسم الاتحاد المخطط - العقد بين العمليات الخلفية والأمامية - إلى عناصر وخدمات مصغرة أكثر قابلية للإدارة، ما يسمح للفرق ببناء أجزاء من المخطط ونشرها وإدارتها بشكل مستقل، مع الحفاظ على رسم بياني موحد للبيانات للعملاء للتفاعل معها.
في بيئة GraphQL الموحدة، تدمج بوابة GraphQL مخططات متعددة - تُسمى أيضًا الرسوم البيانية الفرعية أو الخدمات - في رسم بياني واحد (أو جهاز توجيه). يحدد كل رسم بياني فرعي جزءًا من المخطط العام ويعالج منطق الأعمال واسترداد البيانات لأنواعه وحقوله. تقوم البوابة بعد ذلك بتجميع الرسوم البيانية الفرعية المستقلة معًا في رسم بياني فائق، ما يسمح للعملاء بالاستعلام عن مصادر البيانات عبر الخدمات كما لو كانوا يتفاعلون مع مخطط GraphQL واحد.
كانت إحدى الطرق الأساسية لدمج مخططات GraphQL المتعددة قبل الاتحاد هي تجميع المخططات، حيث يتم دمج المخططات والمحللات المختلفة يدويًا. تطلب الأمر من المطورين تحديد كيفية دمج المخططات وكيفية دمج البيانات معًا. وعلى الرغم من أن دمج المخططات يوفر حلاً موحدًا لمخطط GraphQL، إلا أنه كان معقدًا ومعرضًا للأخطاء، ما يجعل إدارته صعبة.
لمعالجة هذه المشكلات وتبسيط عمليات دمج المخططات، قام المهندسون القائمون على Apollo - تطبيق GraphQL لهندسة المنتجات والتطبيقات - بإنشاء اتحاد Apollo. قدم اتحاد Apollo كلمات رئيسية مثل ”مفتاح“ و”خارجي“ و”يتطلب“ و”يمتد“ لتحديد الروابط بين الأنواع في الخدمات المختلفة. مكّنت ميزات الربط التبادلي الجديدة المطورين من استخدام بوابة Apollo لإنشاء رسم بياني متماسك للبيانات من دون الاعتماد على منطق تجميع معقد للغاية.
مع ذلك، لم يكن اتحاد Apollo GraphQL مجرد مجموعة جديدة من الأدوات والمكتبات. كانت أيضًا مواصفات النظام التي تصف البنية وكيف يمكن للخدمات التواصل لتشكيل رسم بياني موزع. وقد مكن ذلك التطبيقات والأدوات الأخرى من تبني مبادئ الاتحاد وساعد على إنشاء معيار لبناء واجهات برمجة تطبيقات GraphQL الموحدة.
خضع اتحاد GraphQL للعديد من التحسينات منذ تقديمه. يمكن للاتحاد المدار، على سبيل المثال، تسهيل جمع المقاييس وتمكين تحديثات البوابة المؤتمتة عند تغيير الرسوم البيانية الفرعية، كل ذلك من دون تدخل يدوي أو حدوث فترة التعطل للنظام.
تشمل التطورات أيضًا تطوير الاتحاد 21، وهو ابتكار يبسط دمج المخططات من خلال الخدمات وتنفيذ الاستعلام، وزيادة النمطية لزيادة التحكم في تكوين المخطط، وتحسين رؤية الأخطاء لتسهيل التتبع والتصحيح.
يمثّل اتحاد Apollo تقدمًا كبيرًا في بناء أنظمة بنائية مبسطة لواجهة برمجة التطبيقات، ولا يزال خيارًا للشركات التي تتطلع إلى نشر بنيات تقنية المعلومات الموحدة.
ومع ذلك، فإن نهج الاتحاد القائم على Apollo يحصر المطورين في تطبيق مورد واحد، حيث يمكن للبيئات المستندة إلى Apollo أن تقبل فقط التوجيهات والأنواع المحددة من Apollo أو التقنيات الخلفية المتوافقة مع Apollo. بمعنى آخر، غالبًا ما يحد اتحاد Apollo من مرونة النظام، حتى مع ظهور تقنيات جديدة.
قد يفضل المطورون الذين يسعون إلى تعزيز المرونة مع الحفاظ على وظائف الطبقة الموحدة لاتحاد Apollo الاتحاد المفتوح. تُمكن مناهج الاتحاد المفتوح الأنظمة من دمج البيانات من أي مورد أو نوع من واجهات برمجة التطبيقات، بما في ذلك واجهات برمجة التطبيقات غير التابعة ل GraphQL. وباستخدام أدوات مثل IBM API Connect، يمكن للشركات تخصيص أصول تقنية المعلومات الخاصة بها وتوسيع نطاقها من دون قيود التوافق ومواصلة تبني الابتكارات من مجموعة من المجتمعات التقنية.
تساعد GraphQL العملاء على طلب البيانات التي يحتاجون إليها بالضبط من دون نقص أو زيادة في تزويد الموارد، ما يجعلها خيارًا رائعًا للشركات التي تتطلع إلى تعزيز الكفاءة التشغيلية.
ليس من الغريب أن تحظى لغة GraphQL بأهمية كبيرة كلغة استعلام ووقت تشغيل لواجهات برمجة التطبيقات نظرًا لمرونتها..2 ومع ذلك، نظرًا لأن تطبيقات الويب والأجهزة المحمولة أصبحت أكثر تعقيدًا، فإن نشر خادم GraphQL واحد متجانس (وجميع تبعياته) يمكن أن يصبح أمرًا لا يمكن الدفاع عنه. يبسط الاتحاد نظم GraphQL البنائية من خلال مساعدة الرسوم البيانية الفرعية المتباينة على العمل معًا كخدمة GraphQL واحدة متماسكة.
يتضمن تنفيذ بنية GraphQL الموحدة العمليات الرئيسية التالية.
يتضمن تحديد مخططات الرسم البياني الفرعي تحديد حدود المجال وكيفية تفاعل هذه الحدود.
يمثل كل مخطط رسم بياني فرعي في البنية الموحدة جزءًا محددًا من الرسم البياني الكلي للبيانات؛ فهو يحتوي على الأنواع والتكوينات والاستعلامات والطفرات والاشتراكات التي تنطبق على خدمة أو مجال. وقد تحتوي خدمة المنتج، على سبيل المثال، على مخطط رسم بياني فرعي يتضمن أنواعًا مثل المنتج والتقييم، بينما قد تحتوي خدمة المستخدم على أنواع المستخدمين وملفات التعريف الخاصة بهم.
يتم تحديد مخططات الرسم البياني الفرعي بنفس الطريقة التي يتم بها تحديد مخطط GraphQL القياسي ولكن مع إضافة توجيهات خاصة بالاتحاد. وتوفر توجيهات الاتحاد إرشادات حول كيفية قيام النظام بتوسيع الكيانات عبر المخططات وكيفية قيام البوابة بحل حقول محددة عبر الخدمات. كما أنها تحدد مفاتيح الكيانات المرجعية.
وكمثال على ذلك، يحدد التوجيه الرئيسي@ الحقول التي تحدد نوعًا ما عبر الرسوم البيانية الموحدة؛ وعند نشره، يطالب هذا التوجيه البوابة باسترداد كيان من الخدمة التي تمتلك النوع المحدد. يشير التوجيه الممتد@ إلى أن نوعًا معرّفًا في مخطط فرعي واحد يمد نوعًا ينشأ في نوع آخر، ما يسهّل امتداد النوع (بحقول إضافية) في خدمة أخرى.
تُعد خدمات الرسوم البيانية الفرعية خدمات خلفية تنفذ منطق العمل لواجهات برمجة التطبيقات الفرعية المقابلة. تحدد كل خدمة رسم بياني فرعي الجزء الخاص بها من الرسم البياني للبيانات وتعالج الاستعلامات والطفرات المتعلقة بمجالها. وتقوم أدوات الحل الخاصة بكل منها باستدعاء أي بيانات مرتبطة بها من مصادر البيانات أو قواعد البيانات أو واجهات برمجة تطبيقات REST المناسبة.
تكشف خدمات الرسم البياني الفرعي أيضًا عن نقاط نهاية GraphQL الخاصة بها إلى بوابة الاتحاد، والتي تستخدمها لإنشاء المخطط الموحد العام. ضع في اعتبارك أنه يمكن كتابة هذه الخدمات بأي لغة برمجة، على افتراض أن اللغة تدعم GraphQL.
تقوم بوابات الاتحاد بتنسيق تكوين المخطط وتخطيط الاستعلام. وتقوم البوابات، بمساعدة خوادم الاتحاد، بإخفاء الخدمات الفرعية الفردية، وتقديم واجهة برمجة تطبيقات موحدة للعميل.
تقوم الفرق عادةً لتكوين بوابة الاتحاد بتحديد موقع كل خدمة فرعية وإعداد البنية الأساسية اللازمة لاستدعاء المخطط وتخطيط الاستعلام والتنفيذ ومعالجة الأخطاء. وستقوم البوابة عند تشغيلها بإحضار المخططات باستمرار من الخدمات الفرعية للتأكد من أن لديها أحدث إصدار من المخطط الموحد.
عندما يتم تكوين خدمات الرسم البياني الفرعي وبوابة الاتحاد، يقوم المسؤولون بعد ذلك بنشر النظام بأكمله. ويتضمن ذلك توفير الأجهزة وموارد السحابة وإعداد مسارات النشر ومراقبة أداء النظام وضمان توافر الموارد بشكل كبير.
ليس من المدهش أن تكون المراقبة المتسقة في الوقت الفعلي أمرًا حيويًا لتحسين بيئة GraphQL الموحدة. فتمكّن المراقبة اليقظة فرق العمل من اكتشاف عقبات الأداء وأخطاء النظام وفترات التعطل غير المخطط لها وحلها قبل أن تتسبب في حدوث مشكلات أكبر. تتيح المراقبة أيضًا إمكانية تتبع الحالة الصحية لخدمات الرسوم البيانية الفرعية وبوابة الاتحاد.
يمثل اتحاد GraphQL تقدمًا كبيرًا في تطوير واجهات برمجة تطبيقات GraphQL للأنظمة الموزعة على نطاق واسع. فهو يمكّن الفرق من العمل على أجزاء مختلفة من مخطط GraphQL بشكل مستقل مع دمج عملهم بسلاسة في واجهة برمجة تطبيقات موحدة، كل ذلك من دون تعطيل تجربة المستخدم النهائي.
يشمل اتحاد GraphQL مجموعة واسعة من حالات الاستخدام، من نشر بنى الخدمات المصغّرة والتخزين المؤقت إلى تطوير المنتجات وتحسين الرؤى التشغيلية. وقد تبنّت هذا النموذج شركات مثل Netflix وAirbnb وGitHub وExpedia.
يسهل اتحاد GraphQL أيضًا:
يمكن للمطورين في البيئة الموحدة توزيع مسؤولية مجالات البيانات المحددة عبر خدمات متعددة، ما يسمح لهم بتنسيق الخدمات الفردية (ووظائفها) وتوسيع نطاقها بشكل أكثر سلاسة.
نظرًا لإمكانية إدارة الخدمات الموحدة بشكل مستقل، يمكن لأعضاء الفريق العمل على المجالات المعنية من دون التداخل مع بعضهم البعض.
على عكس بيئات واجهة برمجة تطبيقات REST ، يتيح اتحاد GraphQL للعملاء جلب جميع البيانات والموارد المطلوبة من خلال طلب واحد فقط، ما يُلغي التكرار ويُحسّن نشر الموارد.
جرِّب الإصدار التجريبي المجاني من IBM API Connect أو تواصَل مع خبرائنا لمناقشة احتياجاتك. سواء أكنت جاهزًا لتحسين إدارة واجهات برمجة التطبيقات لديك أو تريد معرفة المزيد، نحن هنا لدعم التحول الرقمي لمؤسستك.
اكتشف الإمكانات الكاملة لعمليات التكامل مع الحلول المدعومة بالذكاء الاصطناعي. حدِّد موعدًا لاجتماع مع خبرائنا أو استكشف وثائق منتجاتنا للبدء.
عزِّز أعمالك باستخدام حلول المراسلة الآمنة وعالية الأداء من IBM MQ. ابدأ تجربتك المجانية أو تواصَل مع خبيرنا لاستكشاف كيفية تحويل العمليات باستخدام IBM MQ.
جرِّب نقل الملفات بشكل أسرع وأكثر أمانًا—بأي حجم وأي مسافة. جرِّب IBM Aspera اليوم وتمكَّن من تبسيط سير عمل البيانات بكفاءة عالية السرعة.
يمكنك دمج تطبيقاتك وأتمتة العمل باستخدام منصة السحابة المتعددة الهجينة IBM webMethods.
أطلق العنان لإمكانات الأعمال مع حلول التكامل من IBM، وقم بربط التطبيقات والأنظمة للوصول إلى البيانات الحساسة بسرعة وأمان.
أطلق العنان للقدرات الجديدة وحفِّز مرونة الأعمال من خلال خدمات الاستشارات السحابية من IBM. اكتشف كيفية المشاركة في إنشاء الحلول وتسريع التحول الرقمي وتحسين الأداء من خلال إستراتيجيات السحابة الهجينة والشراكات مع الخبراء.
1 Apollo GraphQL Introduces Federation 2 to Get More Organizations to the Graph, BusinessWire, 03 November 2021.
2 Why GraphQL Needs an Open Federation Approach, The New Stack, 16 November 2023.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com, openliberty.io