English

دراسة الحالة 03 · خدمات دورة الحياة الهندسية

نقل أكثر من اثني عشر تطبيقًا من GCP إلى Azure، خلف نظام هوية واحد

عملية ترحيل استغرقت شهرين، دفع إليها تشديد التحكم في الوصول على مستوى الشركة كلها، ووضعت كل تطبيق على Azure تحت Microsoft Entra ID، معرَّفًا في Pulumi، مع حفظ البيانات السرية في Doppler وKey Vault.

الشريك
شركة استشارية متعددة الجنسيات
المدة
شهران
تطبيقات مُرحَّلة
12+
تطبيقات Python نُقلت من GCP إلى Azure App Service
نظام هوية
1
كل التطبيقات خلف Microsoft Entra ID
مدة التسليم
شهران
التدقيق والتنظيف والترحيل والتسليم

التحدي

كانت الشركة تشدّد التحكم في الوصول على مستوى المؤسسة كلها، وأراد فريق تقنية المعلومات أن تخضع كل التطبيقات الداخلية للهوية والسياسات نفسها التي تحكم Microsoft 365. وكانت تطبيقاتها تعمل على Google Cloud وتُنشر يدويًا، دون بنية تحتية كرمز برمجي، ودون سجل كامل للموارد، وكانت البيانات السرية تُتداول بشكل غير رسمي.

ما بنيناه

تدقيق وتنظيف، ثم ترحيل أكثر من اثني عشر تطبيق Python إلى Azure، وكلها معرَّفة في Pulumi. تعمل التطبيقات في حاويات على Azure App Service مع قواعد بيانات خاصة، وتنتقل البيانات السرية من Doppler إلى Azure Key Vault، ويحمي Cloudflare Access مع Microsoft Entra ID كل تطبيق.

ما تم تسليمه

  • كل التطبيقات ضمن النطاق على Azure، معرَّفة بالشيفرة البرمجية ومنشورة عبر CI/CD
  • نظام هوية واحد ومجموعة واحدة من سياسات الوصول لكل التطبيقات
  • بيانات سرية محفوظة في Doppler وKey Vault بدلًا من تداولها بشكل غير رسمي

نبذة عن الشريك

شريكنا شركة استشارية متعددة الجنسيات يزيد عدد موظفيها على 1,000 موظف، يعملون في عدة مناطق لصالح مؤسسات بارزة. وكان موظفوها يعملون أصلًا في Microsoft 365 ويسجّلون الدخول عبر Microsoft Entra ID. وفي إطار توجه على مستوى الشركة كلها لتشديد التحكم في الوصول، طلب فريق تقنية المعلومات نقل كل تطبيق داخلي إلى Azure، بجوار نظام الهوية ذاك، لتغطيها جميعًا مجموعة واحدة من السياسات وسجل تدقيق واحد.

التحدي

سحابتان ونموذجان للوصول

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

إدارة سحابية مجزأة

أُنشئت الموارد على Google Cloud دون نظام مشترك لتوثيقها وإدارتها، فكان من الصعب معرفة ما هو موجود ولماذا.

بيانات سرية تُتداول بشكل غير رسمي

كانت مفاتيح API وبيانات الاعتماد تُتداول بشكل غير رسمي، وهو خطر كان يكبر مع نمو الفريق.

عمليات نشر يدوية

في غياب البنية التحتية كرمز برمجي وغياب مختص بها، كانت كل بيئة تُعدّ يدويًا، ما أطال المدة اللازمة لبدء المشاريع الجديدة.

تكاليف متصاعدة

تراكمت موارد غير مستخدمة وأخرى مكررة، دون رؤية واضحة لما يرفع الإنفاق.

الأهداف

  • إخضاع كل تطبيق داخلي لـ Microsoft Entra ID ولسياسات الوصول في الشركة
  • إدارة البنية التحتية بشيفرة يستطيع الفريق الحالي قراءتها وصيانتها
  • أتمتة تجهيز البيئات الجديدة
  • إزالة عمليات النشر القديمة والموارد غير المستخدمة قبل النقل
  • استبدال التداول غير الرسمي للبيانات السرية بإدارة مركزية لها

دورنا

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

النطاق والجدول الزمني

رحّل المشروع أكثر من اثني عشر تطبيق Python من إعداد على GCP لا يعتمد على الحاويات إلى حاويات على Azure، مع قواعد بياناتها وذاكراتها المؤقتة وطوابير الرسائل الخاصة بها، وكلها تُدار عبر Pulumi. وتم التسليم خلال شهرين.

مراحل الترحيل على مدى شهرين
مراحل الترحيل على مدى شهرين

المنهجية

هوية واحدة لكل شيء

وضع الانتقال إلى Azure كل تطبيق بجوار Microsoft Entra ID. ويستخدم Cloudflare Access نظام Entra ID مزوّدًا للهوية، فتحدد الحسابات والمجموعات وسياسات الوصول المشروط نفسها من يصل إلى كل تطبيق.

بنية تحتية كرمز برمجي بلغة مألوفة

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

التنظيف قبل النقل

حدد التدقيق أولًا الموارد المكررة وغير المستخدمة، فلم يُرحَّل إلا ما تدعو إليه الحاجة.

التنفيذ

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

التدقيق والتنظيف

حُددت موارد GCP المكررة وأُزيلت قبل الترحيل، فلم يُنقل أي مورد غير مستخدم.

الحوسبة والبيانات

وُضع كل تطبيق في حاوية ونُقل إلى Azure App Service. ونُقلت قواعد البيانات إلى Azure Database for PostgreSQL على شبكة افتراضية خاصة، إلى جانب Azure Cache for Redis وService Bus، مع Application Insights للمراقبة.

الوصول

يقع كل تطبيق خلف Cloudflare Access مع Microsoft Entra ID، فيُمنح الوصول حسب المجموعة ويُفحص مقابل سياسات الوصول المشروط في الشركة. ولا يقبل كل App Service حركة البيانات إلا من Cloudflare، ويتحقق من رمز Access، فلا يمكن الوصول إلى أي تطبيق بتجاوزه.

البيانات السرية

مزوّد Pulumi مخصص، مكتوب بلغة TypeScript، يقرأ البيانات السرية من Doppler ويكتبها في Azure Key Vault. وتقرأها التطبيقات عبر مراجع Key Vault، فلا تحمل إعدادات التطبيقات إلا مرجعًا إلى Key Vault، ولا تحمل قيمة البيانات السرية أبدًا.

دمج الواجهات الأمامية

أُدخلت الواجهات الأمامية المستضافة على Vercel في قاعدة شيفرة Pulumi، فأصبحت جميع البيئات تُدار من مكان واحد.

الأتمتة

رُبط Pulumi Cloud بمسارات الإصدار (CI/CD). ويعرض كل طلب دمج خاص بالبنية التحتية معاينة لتغييراته، وتحتاج تغييرات بيئة الإنتاج إلى موافقة.

الأدوات والتقنيات

الأداةالغرض
Pulumi وPulumi Cloudالبنية التحتية كرمز برمجي وأتمتة النشر
Azure App Serviceاستضافة الحاويات
Azure Database for PostgreSQLقواعد بيانات مُدارة وخاصة
Dopplerالإدارة المركزية للبيانات السرية
Azure Key Vaultالبيانات السرية التي تقرأها التطبيقات
Cloudflare Accessوصول قائم على الهوية إلى كل تطبيق
Microsoft Entra IDمزوّد الهوية والوصول المشروط
Vercelاستضافة الواجهات الأمامية، بإدارة Pulumi

ما تم تسليمه

تطبيقات مُرحَّلة
12+
نظام هوية
1
مراحل الترحيل
4
مدة التسليم
شهران
  • جميع التطبيقات ضمن النطاق تعمل على Azure تحت إدارة Pulumi
  • كل تطبيق خلف Microsoft Entra ID وسياسات الوصول في الشركة
  • إزالة الموارد السحابية غير المستخدمة والمكررة قبل الترحيل
  • إدارة مركزية للبيانات السرية وقراءتها من Key Vault

لماذا يهم ذلك

تبلغ قيمة الانتقال السحابي أقصاها حين يغيّر طريقة حوكمة البيئة التقنية، لا مكان تشغيلها فحسب. ووضع كل تطبيق خلف نظام هوية واحد، معرَّف بالشيفرة البرمجية، يعني أن الوصول يُراجع في مكان واحد، وأن المشروع التالي يبدأ من أساس معروف.

إذا كانت مؤسستكم تواجه تحديًا مشابهًا، يسعدنا أن نناقشه معكم.