قام مهندسو Airbnb بتفصيل بنية Sitar-agent، وهو برنامج جانبي من Kubernetes يوزع تحديثات التكوين الديناميكي عبر عشرات الآلاف من الكبسولات ويعالج تغييرات التكوين عدة مرات في الدقيقة. تم تصميم النظام للحفاظ على بيانات التكوين متاحة أثناء انقطاع الخدمة مع تمكين التحديثات من الانتشار عبر أسطول كبير من الخدمات الصغيرة في غضون عشرات الثواني.

قامت الشركة بتحديث Sitar-agent من خلال إعادة كتابة Java، وAmazon S3 snapshot bootstrapping، والانتقال من Sparkey إلى SQLite. تهدف التغييرات إلى تحسين الموثوقية وأداء بدء التشغيل والمرونة التشغيلية مع تقليل الاعتماد على البنية التحتية للتكوين المركزي.

يعد Sitar-agent جزءًا من نظام تكوين Sitar الداخلي في Airbnb، والذي يسمح للمهندسين بتعديل سلوك التطبيق من خلال تغييرات التكوين بدلاً من عمليات إعادة نشر الخدمة. نظرًا لأن تحديثات التكوين تحدث عدة مرات في الدقيقة عبر بيئة خدمات صغيرة كبيرة، فقد احتاجت الشركة إلى آلية لتقديم التغييرات بشكل متسق مع تقليل الاعتماد على البنية التحتية المركزية.

دورة حياة تسليم تكوين Sitar (المصدر: منشور مدونة Airbnb)

يعمل الجهاز الجانبي جنبًا إلى جنب مع حاويات التطبيقات في Kubernetes ويقدم بيانات التكوين محليًا من خلال نظام ملفات مشترك وذاكرة تخزين مؤقت في الذاكرة. بدلاً من مطالبة الخدمات بالاتصال مباشرة بمنصة التكوين، تقرأ التطبيقات قيم التكوين من السيارة الجانبية المحلية. وقالت Airbnb إن هذا النهج يوفر استقلالية اللغة عبر خدمات Java وPython وGo وTypeScript وRuby مع مركزية منطق تسليم التكوين في مكون واحد.

Bo T، مهندس برمجيات في Airbnb، في منشور على LinkedIn،

يعد التكوين الديناميكي قدرة أساسية في البنية التحتية لـ Airbnb، مما يمكّننا من التكيف وتقديم الابتكارات بسرعة.

وكجزء من عملية إعادة التصميم، قدم المهندسون سير عمل بدء التشغيل القائم على اللقطات. يتم إنشاء لقطات التكوين وتخزينها بشكل دوري في Amazon S3. عند بدء تشغيل حجرة جديدة، يقوم Sitar-agent باسترداد أحدث لقطة ثم يقوم بمزامنة التحديثات المتزايدة من الواجهة الخلفية لـ Sitar قبل السماح للتطبيق ببدء خدمة حركة المرور. وفقًا لـ Airbnb، فإن هذا يقلل من تكاليف بدء التشغيل ويمكّن الخدمات من مواصلة العمل حتى عندما تكون خدمة التكوين المركزية غير متاحة مؤقتًا.

قام الفريق الهندسي أيضًا بإعادة النظر في قرار استخدام البنية الجانبية بدلاً من تضمين منطق تسليم التكوين في مكتبات التطبيقات. في حين أن النهج القائم على المكتبة يمكن أن يقلل من استهلاك الموارد، فقد خلصت Airbnb إلى أن الحفاظ على جانب جانبي مخصص يبسط العمليات، ويقلل من جهد التنفيذ المكرر، ويضمن السلوك المتسق عبر لغات برمجة متعددة.

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

ناقشت Airbnb أيضًا استخدامها المستمر لنموذج توزيع التكوين القائم على السحب. يقوم Sitar-agent باستقصاء خدمة الواجهة الخلفية كل عشر ثوانٍ تقريبًا للحصول على التحديثات. أفادت الشركة أن التخزين المؤقت من جانب الخادم وتتبع التغيير المتزايد يساعدان في تقليل التحميل الخلفي مع توفير أوقات نشر التحديث المناسبة لسير عمل إدارة التكوين التشغيلي.



شاركها.
اترك تعليقاً