Namespace چطور صدها MacBook رو تو دیتاسنتر راه انداخت
خلاصهٔ کاملتر
شرکت Namespace به مشتریهاش ماشینهای مجازی برای CI میده و خیلی از این مشتریها اپ iOS میسازن. بدون مک نمیشه اپ iOS ساخت، iOS Simulator فقط روی مک اجرا میشه و اپل برای انتشار تو App Store نسخهٔ جدید Xcode میخواد. نویسنده میگه Mac Mini انتخاب بهتری برای دیتاسنتره، ولی سفارش چندصدتاییشون ژانویه ثبت شد و جولای رسید. برای همین سراغ MacBook Pro رفتن.
هر MacBook به یه IP KVM (یعنی دستگاهی که صفحه و کیبورد رو از راه دور در اختیارت میذاره) وصله، چون بعضی کارهای نگهداری لپتاپ فقط از طریق رابط گرافیکی انجام میشه. یه کارت شبکهٔ 10G خارجی هم داره. مشکلها جایی نبودن که انتظار داشتن: MagSafe کم قطع میشد ولی کابل HDMI مدام درمیاومد. FileVault هم بعد از ریبوت ناخواسته رمز میخواد و این صفحه بعد از ۵ دقیقه محو میشه، حتی باز کردن از راه دور با SSH تو macOS Tahoe هم روی لپتاپ بعد از ۵ دقیقه منقضی میشه. نویسنده پیشنهاد میکنه برای ریبوت برنامهریزیشده از fdesetup authrestart استفاده کنی تا دیسک باز بمونه.
برای مجازیسازی از فریمورک Virtualization اپل استفاده میکنن که شبیه Firecracker یه موتور VM کامله. محدودیت معروفش اینه که اپل فقط دو VM مک روی هر ماشین فیزیکی اجازه میده. برای همین منابع رو نصف میکنن: ۶ یا ۱۲ هسته روی Mac Mini چهاردههستهای و ۸ یا ۱۶ هسته روی MacBook هجدههستهای. CPU مجازی هم تو یه پروسهٔ جدا اجرا میشه، پس هر تعامل با دستگاههای مجازی سفارشی یه رفتوبرگشت IPC (یعنی ارتباط بین دو پروسه) لازم داره.
چون روی این VMها کد ناشناس اجرا میشه، شبکه رو کامل خودشون مدیریت میکنن. یه استک TCP/IP تو userspace بر پایهٔ پروژهٔ gVisor گوگل ساختن که مثل gateway و فایروال کار میکنه و هر بسته رو نرمافزاری پردازش میکنه. با batch کردن بستهها و کم کردن IPC به حدود 4 Gbps پهنای باند آپلود رسیدن که هنوز از سرعت خط کمتره.
چالش بعدی ایمیجهاست. با چند runtime iOS و نسخهٔ بتای Xcode، یه ایمیج راحت به ۵۰۰ گیگ میرسه. تازه بتای Xcode نسخههای پایدار رو هم روی همون سیستم خراب میکنه، پس ایمیج با و بدون بتا لازمه. ساخت ایمیج با یه workflow YAML خودکاره که میتونه دستور شل اجرا کنه، ریبوت کنه یا از طریق VNC روی دکمهها کلیک کنه. ایمیجها تو رجیستری OCI خودشون با یه فرمت sparse (یعنی فضای خالی دیسک ذخیره نمیشه) و به صورت لایهلایه نگه داشته میشن.
برای پخش، به جای اینکه هر نود از رجیستری مرکزی دانلود کنه، یه سیستم peer-to-peer الهامگرفته از BitTorrent ساختن. روی دیسک هم از قابلیتهای APFS استفاده میکنن: فایل sparse و کپی با cp -c یا syscall clonefile که بلاکها رو بین فایلها شریک میکنه و فقط بلاکهای تغییرکرده فضا میگیرن. قدم بعدی تیم هم یه دستگاه سفارشیه که برق، شبکه و KVM رو با یه کابل USB-C به لپتاپ برسونه.
نکات کلیدی:
- سفارش Mac Mini از ژانویه تا جولای طول کشید و همین دلیل استفاده از MacBook شد.
- Virtualization اپل فقط دو VM مک روی هر ماشین فیزیکی اجازه میده.
- شبکهٔ VMها با استک userspace gVisor به حدود 4 Gbps آپلود میرسه.
- هر ایمیج مک با runtimeهای iOS میتونه به ۵۰۰ گیگ برسه.
- پخش ایمیجها peer-to-peer و ذخیرهشون با clone و فایل sparse روی APFS هست.




