الخدماتII — تكييف البرمجيات والأنظمة القديمة ومعمارية الخدمات المصغّرة

خدمات مصغّرة للذكاء الاصطناعي

وتصميم معمارية الأنظمة الموزّعة

أي مشكلة يحلّها؟

انهيار تطبيقات الذكاء الاصطناعي الأحادية (monolithic) عند ارتفاع أحمال المستخدمين أو الطفرات المفاجئة في الحركة، وتعذّر توسّعها، وتسبّبها في تجمّد النظام بأكمله.

كيف نبنيه؟

نصمّم خدمات الذكاء الاصطناعي كخدمات مصغّرة مستقلة على بنية Docker/Kubernetes. وبفصل خوادم الاستدلال وقواعد بيانات المتجهات وطوابير المهام الخلفية بعضها عن بعض، نضع قواعد توسّع تلقائي. ومع موازنات الأحمال وإدارة عناقيد GPU نوزّع استهلاك الموارد وفق الطلب اللحظي.

ما الذي يتغيّر؟

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

متى يبدأ العمل؟

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

كيف نعمل؟

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

متى لا يكون مناسبًا؟

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

خدمات أخرى

OpenAIGeminiAnthropicQwenGrokKimiGoogleAmazon S3Windows 365MetaHugging FaceAmazonAppleAndroidVisual StudioLLM