تُعَد منصة المطورين الداخلية (IDP) مجموعة مركزية من الأدوات والخدمات ومهام سير العمل الداخلية التي تُنشئها المؤسسة لتسهيل بناء البرمجيات ونشرها وتشغيلها من قِبل المطورين، دون الحاجة إلى إدارة جميع عناصر البنية التحتية الأساسية بأنفسهم.
فبدلًا من أن يبتكر كل فريق تطوير طريقته الخاصة لإعداد الخوادم والشبكات وبروتوكولات الأمان وعمليات نشر البرمجيات، يمكن للفِرق استخدام "مسارات جاهزة" تتوافق مسبقًا مع سياسات الشركة وأفضل الممارسات لديها. ويقتصر دور المطورين على اتِّباع هذه المسارات -مثل "إنشاء خدمة مصغرة جديدة" أو "توفير بيئة معاينة"- بينما تتولى المنصة تنفيذ بقية الخطوات من خلال الأتمتة الخلفية.
وتُعَد IDP وسيلة لتوحيد العمليات المتفرقة بحيث تتبع جميع فِرق التطوير داخل المؤسسة مجموعة متقاربة من القواعد والإجراءات. كما تتولى إدارة القرارات المتعلقة بالبنية التحتية الأساسية، ما يُتيح للمطورين نشر الأكواد دون الحاجة إلى خبرة متعمقة في البنية التحتية.
وعادةً ما تتولى فِرق عمليات التطوير أو العمليات أو هندسة المنصات تصميم منصات IDP وصيانتها، بينما يُعَد مطورو التطبيقات المستخدمين الرئيسيين لها. وتجمع المنصة بين عدة سلاسل من الأدوات والتقنيات المختلفة -مثل تنسيق الحاويات والبنية التحتية ككود (IaC) والتكامل المستمر والتسليم المستمر (CI/CD) وأدوات قابلية الملاحظة- في منظومة متكاملة.
ابقَ على اطلاع دائم على أبرز الاتجاهات في مجالات الذكاء الاصطناعي، والأتمتة، والبيانات، وغيرها الكثير من خلال رسالة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
توفِّر IDP قدرًا أكبر من التنظيم والاتساق لقدرات هندسة البرمجيات والتطوير والتسليم التي قد تكون متفرقة داخل المؤسسة. كما تمكِّن المؤسسات من إدارة التعقيدات المرتبطة ببيئات وممارسات تطوير البرمجيات، مع تبسيطها وتحسينها لتحقيق العديد من الفوائد.
تُعَد قدرة المهندس على الدخول في "حالة التدفق" والحفاظ عليها -وهي حالة من التركيز العميق أثناء العمل البرمجي الهادف- ذات قيمة كبيرة لأي مؤسسة تسعى إلى الابتكار في مجال البرمجيات. وفي هذه الحالة يكون التركيز كاملًا وغير مشتت، ويبدو التقدم في العمل متواصلًا وسلسًا. كما يتمكن المهندسون من معالجة مشكلات أكثر تعقيدًا بفضل الوقت المتواصل الذي يُتيح لهم التركيز عليها دون انقطاع.
إلا إن حالة التدفق هذه هشة بطبيعتها. فقد يضطر المطورون أحيانًا إلى الانتقال في السياق من نوع من المشكلات إلى نوع آخر، وهو تحول ذهني قد يعرقل تقدمهم في المشكلة الأولى ويجبرهم على البدء من جديد عند العودة إليها لاحقًا. على سبيل المثال، تخيَّل مطورًا يحاول تتبُّع سبب مشكلة وردت في تقرير أخطاء: لماذا لا تعرض أداة حجز الفنادق الأوقات والتواريخ وفق المنطقة الزمنية الصحيحة للمستخدم؟ إنها مشكلة معقدة ترتبط بالطريقة التي يتعامل بها JavaScript مع الوقت على مستوى أساسي. وليست مجرد مشكلة بسيطة في تنسيق العرض. فهو يتتبع كيفية انتقال الطوابع الزمنية بين الأنظمة الخلفية والواجهة الأمامية ثم وصولها إلى واجهة المستخدم. كما يفكر في إعدادات المتصفح المحلية وكيفية تصرُّف كائنات التاريخ والوقت في ظروف مختلفة. إنها كمية كبيرة من المعلومات التي يجب الاحتفاظ بها ذهنيًا في الوقت نفسه، لكنه بات قريبًا من التوصل إلى الحل.
ثم يضطر إلى مغادرة محرر الأكواد وفتح أداة التكامل المستمر/التطوير المستمر (CI/CD)، والبحث عن المسار الصحيح للخدمة المعنية، ومحاولة تذكر كيفية تعامل هذا المشروع تحديدًا مع عمليات النشر، وتعديل أحد ملفات التكوين، وانتظار اكتمال المسار، ثم فتح أداة مراقبة أخرى للتحقق من السلوك...
وهكذا ينتقل من التركيز على تحليل المشكلة إلى نمط مختلف من العمل يتطلب التعامل مع البنية التحتية والأدوات والإجراءات. وعندما يعود إلى الخطأ البرمجي، يكون الفهم الدقيق الذي كوَّنه للمشكلة قد تلاشى. ويجد نفسه مضطرًا للبدء من جديد. ويمثِّل ذلك وقتًا مهدورًا للمؤسسة ومصدرًا للإحباط بالنسبة إلى المهندس. وتقلل IDP هذا الهدر من خلال تولي المهام الجانبية، ما يؤدي إلى تسريع طرح المنتجات في السوق، وتعزيز إنتاجية المطورين، وتحسين تجربة المطورين.
ومع نمو المؤسسات، تصبح بيئات التطوير لديها أكثر تعقيدًا. فقد تعتمد بعض الفِرق أداة معينة، بينما تختار فِرق أخرى أداة منافسة مختلفة لإنجاز مهمة مشابهة. كما قد تطور الفِرق مهام سير عمل متباينة وتتخذ قرارات تتعلق بالبنية التحتية أو النشر أو الأمان تكون مفيدة لحالات استخدامها الفردية، لكنها تتسبب عند النظر إليها مجتمعة في تعارضات أو أوجه قصور في الكفاءة. ومع البيئات غير المتسقة، تزداد العوائق التشغيلية. كما تتراكم هذه الاختلافات بمرور الوقت، ما يجعل توسيع نطاق الأنظمة أكثر صعوبة. في المقابل، تحوِّل IDP مجموعة الممارسات المتفرقة وغير المتسقة إلى مهام سير عمل متماسكة وقابلة للتكرار للمطورين وعمليات تسليم البرمجيات.
ففيما يتعلق بعناصر مثل اصطلاحات التسمية، والممارسات الأمنية، ومسارات CI/CD، تعمل IDP على تقليل التباين من خلال توفير قوالب جاهزة وترسيخ مهام سير عمل موحَّد بالاعتماد على هياكل تأسيسية قابلة لإعادة الاستخدام. وبذلك لا يحتاج المطورون إلى البدء من الصفر، بل يمكنهم اختيار قالب يقوم تلقائيًا بإنشاء المستودع، وإعداد مسارات البناء والنشر، ودمج إمكانات المراقبة والأمان.
تدمج منصة المطورين الداخلية (IDP) وظائف الأمان والامتثال مباشرةً في مهام سير العمل الخاصة بها. فعلى سبيل المثال، يمكنها ضمان أن تتضمن جميع الخدمات آليات مصادقة مناسبة، وأن تلتزم بإعدادات الشبكات المعتمدة. وبهذه الطريقة لا يضطر المطور إلى إضاعة الوقت في التفكير فيما إذا كان نهج معين سيفي بالمتطلبات أم لا. فالبروتوكولات الصحيحة يتم تطبيقها تلقائيًا لأن الضوابط تُفرض بصورة متسقة، إذ تكون مدمجة في المنصة نفسها.
وعندما تتبع جميع الفِرق الأنماط نفسها، يصبح من الأسهل على المطورين فهم قواعد أكواد غير مألوفة والمساهمة فيها. كما تقلل الاتفاقيات المشتركة العبء الذهني المطلوب للانتقال بين المشروعات المختلفة، وتمكِّن المطورين الجُدُد من الاندماج في العمل بسرعة أكبر.
ومن دون إطار عمل متسق، قد يؤدي نمو المؤسسة إلى حالة من الفوضى، حيث تضيف كل خدمة جديدة مزيدًا من التنوع والتعقيد. وتوفِّر IDP أساسًا مستقرًا بمستوى مؤسسي يدعم التوسع ويساعد على تحسين تخصيص الموارد. كما يمكن نشر أفضل الممارسات تلقائيًا عبر مختلف الأنظمة، بل ويمكن حتى لفِرق هندسة المنصات الصغيرة نسبيًا التأثير في ممارسات التطوير داخل مؤسسة كبيرة.
لا تُعَد IDP مجرد أداة واحدة، بل هي منظومة من القدرات التي تعمل معًا لتلبية احتياجات المطورين المختلفة وتوفير تجربة تطوير أكثر سلاسة. وقد تختلف آليات التنفيذ، لكن فيما يلي أكثر العناصر شيوعًا.
بوابة المطورين (Developer Portal): ويُشار إليها غالبًا باسم بوابة المطورين الداخلية، وهي الواجهة الرئيسية التي يتفاعل معها المطورون. وغالبًا ما يتم بناؤها باستخدام أدوات مفتوحة المصدر مثل Backstage، وتوفِّر لوحة معلومات مركزية، وكتالوجًا للخدمات ووثائق وقوالب وإضافات ومهام سير عمل. وتُعَد لوحة التحكم الذاتية للمطورين داخل المنصة.
كتالوج الخدمات (Service Catalog): يُعَد كتالوج الخدمات سجلًا منظمًا لجميع الخدمات والأنظمة والموارد. فهو يحدد جهات الملكية والاعتماديات المتبادلة، ويوفر بيانات وصفية أخرى بحيث يعرف الجميع المسؤول عن كل عنصر وكيفية تفاعل الخدمات مع بعضها.
الهياكل التأسيسية والقوالب: وهي مخططات جاهزة مسبقًا لإنشاء خدمات جديدة، تُتيح للمستخدمين إنشاء مستودعات GitHub بسرعة وإعداد مسارات التكامل المستمر/التسليم المستمر (CI/CD) وتطبيق التكوينات القياسية ودمج التسجيل والمراقبة وغير ذلك. وتكون هذه المسارات مُعدة مسبقًا وقابلة لإعادة الاستخدام، مع تضمين أفضل الممارسات فيها، بحيث لا يضطر المطورون إلى تصميمها من الصفر.
توفير البنية التحتية: تتولى هذه الطبقة إنشاء البيئات والموارد وأعباء العمل التطبيقية وإدارتها عبر بنى هجينة أو متعددة السحابات تضم مزوِّدين سحابيين مختلفين، وغالبًا ما تستفيد من مبادئ GitOps لتحقيق الأتمتة.
إدارة البيئات: في كثير من المؤسسات، تتباعد بيئات التطوير والاختبار والإنتاج بمرور الوقت نتيجة اختلافات التكوين وعدم تطابق الاعتماديات وتفاوت البيانات. وتعالج IDP هذه المشكلة من خلال تعزيز الاتساق بين البيئات، وإزالة الغموض، وجعل البيئات أكثر قابلية للتنبؤ.
قابلية الملاحظة: تُدمج إمكانات الرؤية والمتابعة في سلوك النظام بصورة افتراضية، ما يوفر رؤى فورية تشمل السجلات والمقاييس وآثار التتبع.
إدارة الأسرار والتكوينات: تتم إدارة مفاتيح واجهات برمجة التطبيقات (API) وبيانات الاعتماد ومتغيرات البيئة بصورة آمنة، ما يساعد على ضمان عدم تضمين الأسرار مباشرةً في الكود، مع التحكم في الوصول إليها وإمكانية تدقيقه.
الحوكمة: يتم فرض سياسات الأمان والامتثال تلقائيًا، كما تحدد عناصر الحوكمة مثل بطاقات التقييم وآليات التحكم في الوصول القائمة على الأدوار (RBAC) من يملك حق النشر ومن يمكنه الوصول إلى الموارد المختلفة وكيفية اعتماد مهام سير العمل.
التوثيق: بدلًا من تشتت الوثائق في أماكن متعددة، يتم حفظها إلى جانب الخدمات نفسها وتكون قابلة للاكتشاف عبر البوابة.
ورغم أن مساعد البرمجة القائمة على الوكلاء لا يستطيع بمفرده إنشاء منصة IDP جاهزة للإنتاج، فإنه قادر على المساهمة بفاعلية في التخطيط والتوليد والتكرار عبر خطوات متعددة، ما يؤدي إلى تسريع العملية بأكملها، بدءًا من تأسيس المنصة ووصولًا إلى إنشاء المسارات الجاهزة ودمج الأدوات. ومع ذلك، تظل القرارات البنائية بحاجة إلى حكم بشري، لأنها لا تتعلق بالتقنية فحسب، بل ترتبط أيضًا بالبنية التنظيمية وهيكل الفِرق.
وبعد بناء المنصة، يمكن لمساعد البرمجة القائم على الوكلاء العمل داخل IDP، ليساعد على تحويلها من بوابة ثابتة إلى بيئة أكثر ديناميكية وتركيزًا على تنفيذ المهام. فعلى سبيل المثال، يمكن للمساعد IBM Bob التكامل مع عناصر المنصة والمساعدة على تنفيذ مهام مثل:
وهو أكثر بكثير من مجرد روبوت محادثة، فهو يعمل كواجهة ذكية للمنصة. فبدلًا من التنقل يدويًا بين النماذج ومهام سير العمل، يمكن للمطور أن يطلب إجراءً مثل "إنشاء خدمة جديدة"، فيساعده المساعد على تنسيق الخطوات اللازمة، مع الالتزام بالمعايير والضوابط والمسارات الجاهزة المعتمدة. وفي البيئات المحددة بوضوح، يمكنه الاستفادة من البيانات الوصفية الموجودة في كتالوج الخدمات والسياق المتاح لتوجيه إجراءاته، مع الإبقاء على المراجعة البشرية عند الحاجة.
خدمة مُدارة بالكامل ومستأجر واحد لتطوير تطبيقات Java وتسليمها.
استخدم أدوات وبرمجيات عمليات التطوير لإنشاء تطبيقات السحابة الأصلية ونشرها وإدارتها عبر أجهزة وبيئات متعددة.
إن تطوير تطبيقات السحابة يعني البناء مرة واحدة، والتكرار بسرعة، والنشر في أي مكان.