انتقل إلى المحتوى الرئيسي
Fugen Services logo

هندسة البرمجيات

جعل أنظمةك تتواصل مع بعضها البعض، بشكل موثوق

تفشل معظم أعمال التكامل في المسار غير السعيد. يعمل العرض التوضيحي، ويعمل السيناريو السعيد، ثم يتعطل مزود الدفع في منتصف الطلب، أو يفرض مزود المحاسبة حدود معدل الوصول في نهاية الشهر، ولا يعلم أحد ما إذا تم إنشاء الطلب مرتين أم لم يتم إنشاؤه على الإطلاق. إن التعامل مع ذلك بشكل صحيح هو الوظيفة الحقيقية.

مؤشر

تكامل من £4,500؛ واجهة برمجة تطبيقات كاملة من £12,000

السعر الثابت متفق عليه كتابة قبل بدء أي عملية تطوير.

اطلب عرض سعر+44 7488 265083

المشكلة التي يحلها

سببان رئيسيان للألم في التكامل. استدعاء واجهة برمجة تطبيقات طرف ثالث بشكل متزامن داخل طلب ويب، بحيث يصبح يومهم البطيء انقطاعًا لك. وعدم وجود خاصية عدم التكرار (idempotency)، بحيث يؤدي إعادة المحاولة إلى إنشاء طلب مكرر أو فاتورة مكررة أو رسوم مكررة — وتستغرق عملية المصالحة يدويًا أكثر مما كان سيكلف بناءها بشكل صحيح.

ماذا ستحصل

تصميم قبل البناء

الموارد، الأفعال، رموز الحالة، أشكال الأخطاء، الترقيم والنسخ متفق عليها مسبقًا كمواصفة OpenAPI. تغيير واجهة برمجة تطبيقات منشورة مكلف؛ تغيير مستند ليس كذلك.

مصادقة تناسب المستهلك

OAuth 2.0 حيث يتصرف الأطراف الثالثون نيابة عن المستخدم، والمفاتيح الموقعة للخوادم إلى الخادم، ورموز قصيرة الأجل مع التجديد للعملاء المحمولين. تم اختيارها لتناسب من يتصل بدلاً من العادة.

عدم التكرار وإعادة المحاولة

العمليات الكتابية تقبل مفتاح عدم التكرار (idempotency key) بحيث لا يمكن لطلب معاد إنشاء سجل ثانٍ. تستخدم المكالمات الصادرة تراجعًا أسيًا مع قاطع الدائرة، بحيث لا يتسبب الاعتماد الفاشل في تدهور service بل يتحول إلى تدهور تدريجي.

ويب هوكس يمكن الوثوق بها

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

حدود معدل الوصول والحصص

حدود لكل مستهلك مع رؤوس واضحة ورموز 429، بحيث لا يتمكن عميل واحد من تدهور الخدمة للجميع. هذا ما يجعل واجهة برمجة التطبيقات آمنة لمنحها لشريك.

توثيق يبقى صحيحًا

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

كيف نعمل

  1. رسم الخريطة

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

  2. التحديد

    مستند OpenAPI مراجعة مع من سيستهلكه، قبل وجود الكود. يجد المستهلكون مشكلات في التصميم لا يمكن للمنتجين رؤيتها.

  3. البناء وفقًا للعقد

    التنفيذ بالإضافة إلى اختبارات العقد، بحيث يفشل التغيير المفسد في CI بدلاً من تكامل شريك.

  4. تأمين الأطراف

    مهلة زمنية، إعادة المحاولة، قواطع الدائرة، طوابير الرسائل الميتة وتسجيل الهياكل المنظمة.

  5. الاختبار ثم الإطلاق

    بيئة اختبار مع بيانات اعتماد تجريبية للمستهلكين لبناء التطبيقات عليها، ثم إطلاق مرحلي للإنتاج.

  6. الرصد

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

ما يجب أن تتوقعه

  • انقطاع الطرف الثالث يؤثر على ميزة واحدة بدلاً من تعطيل الموقع بالكامل
  • لا يمكن للمحاولات المتكررة إنشاء طلبات أو فواتير أو مدفوعات مكررة
  • يتكامل الشركاء من خلال الوثائق دون الحاجة إلى سؤال فريقك
  • يتم اكتشاف التغييرات المدمرة من خلال اختبارات العقد، وليس من خلال شريك

مبني باستخدام

  • Node.js
  • TypeScript
  • Laravel
  • PHP
  • Python
  • FastAPI
  • OpenAPI
  • GraphQL
  • REST
  • PostgreSQL
  • MySQL
  • Redis
  • RabbitMQ
  • Stripe
  • Xero
  • QuickBooks
  • Shopify
  • Twilio
  • SendGrid

Mainstream, well-supported technology — chosen so you can hire for it and so another team could take the project over.

تطوير ودمج الـ API — your questions

بما في ذلك الأسئلة المتعلقة بالتكلفة، والتي تتجاهلها معظم الشركات في صفحاتها.

عادةً ما تتراوح تكلفة التكامل الواحد المحدود جيداً — مثل مزود دفع واحد أو مزامنة مع نظام إدارة علاقات العملاء — بين £4,500 و£9,000. أما واجهة برمجة التطبيقات الكاملة للمستهلكين الخارجيين، مع المصادقة وحدود المعدل والبيئة التجريبية والوثائق، فتبدأ من £12,000. العامل المتغير هو مدى جودة سلوك النظام الآخر في الغالب.

REST هو الخيار الأفضل لمعظم الأمور، بينما يُستخدم GraphQL عندما يحتاج العميل حقاً إلى تشكيل استعلاماته الخاصة عبر البيانات المرتبطة — عادةً في تطبيق جوال يحاول تقليل عدد الجولات. يضيف GraphQL تعقيداً حقيقياً في التخزين المؤقت وحدود المعدل ومراقبة تكلفة الاستعلام، لذا فهو يحتاج إلى سبب يتجاوز التفضيل الشخصي.

غالباً، لكننا سنكون واضحين بشأن المقايضات. الخيارات هي تكامل على مستوى قاعدة البيانات إذا أمكن الوصول إليها، أو تبادل الملفات المجدول، أو كملاذ أخير، استخراج البيانات من الشاشة — وهو يعمل لكنه ينكسر كلما غيّر الطرف الآخر ترميزه. نضع سعر الاستخراج ضمن صيانة مستمرة بدلاً من كونه عملاً لمرة واحدة، لأن هذا هو ما عليه الأمر حقاً.

هذا مصمم له من البداية. تُنفذ المكالمات الصادرة عبر قائمة انتظار مع محاولات متكررة وقاطع الدائرة، لذا فإن فشل المزود يعني تأخير الإجراء بدلاً من فشل الطلب أو ظهور صفحة خطأ 500. Anything unrecoverable lands in a dead-letter queue with an alert, so nothing is silently dropped.

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

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

تحدث إلى من سبق له بناء هذا

A short call is usually enough to tell you whether this is the right service for your situation — including when it is not.