کنترلپلین، قهرمان بیسروصدای سرویسهای ابری
خلاصهٔ کاملتر
زک وندر مروه، مهندس AWS، تو این پست نزدیک ۱۴ سال تجربهاش تو ساختن کنترلپلین رو تعریف میکنه. به گفتهٔ خودش هر سرویس یه data plane داره که کار سنگین رو انجام میده و یه control plane که وضعیت واقعی رو دائم با اون چیزی که باید باشه تطبیق میده، شبیه یه ترموستات. اصلی هم که تو تیم EC2 مثل ورد تکرار میشد این بود: هر بلایی سر کنترلپلین بیاد، VMهایی که دارن کار میکنن باید کار کنن — چیزی که بهش میگن static stability.
ته همهٔ اون پیچیدگی یه دیتابیس MySQL بود که باید با واقعیت میخوند، و نویسنده میگه دردسرهاش برای خیلیها آشناست. مرگ سرور اصلی رو با یه standby داغ جبران میکردن، ولی همون چند ثانیه قطعی یعنی پیجر ساعت ۳ صبح. read replicaها بار خوندن رو کم کردن — و در عوض APIهای EC2 رو eventually consistent کردن — ولی هر نوشتن هنوز از یه نقطه رد میشد و آخرش مجبور شدن شارد کنن: اول AZهای مستقل، بعد شاردینگ داخلی به cellها.
به گفتهٔ نویسنده، Aurora DSQL دقیقاً برای همین دردها طراحی شده. بهجای یه head node، برای هر کانکشن یه میکرو-VM از جنس Firecracker بالا میاد، پس خرابی فقط همون کانکشن رو میزنه و کسی پیج نمیشه. read replicaها خودکار اضافه میشن و خوندنها همیشه strongly consistentان. پارتیشنبندی هم خودکاره، پس اون دوراهی «الان شارد کنیم یا بذاریم برای بعد» کلاً حذف میشه.
تیم DSQL کنترلپلین خودش رو هم روی DSQL بالا آورده و میگه دو سود داشته: دیتابیس دفترداریشون خودش با رشد مشتریها بزرگ میشه، و خرابی یه AZ دیگه آتشسوزی نیست چون دیتابیس کنترلپلین سرپا میمونه. نویسنده صادقانه میگه سرویس هنوز جوونه؛ مثلاً foreign key هنوز پشتیبانی نمیشه چون تو مقیاس بالا خطرناکه، و تأخیرش به خوبی Postgres تکنودی با کش گرم نیست، ولی در عوض با رشد اپلیکیشن قابلپیشبینی میمونه.
نکات کلیدی:
- کنترلپلین همون حلقهایه که وضعیت واقعی سیستم رو با وضعیت مطلوب تطبیق میده
- static stability یعنی حتی با خرابی کنترلپلین، منابع در حال اجرا باید سرپا بمونن
- درد اصلی EC2 مقیاسدادن به MySQL بود: standby، read replica و در نهایت شاردینگ به AZ و cell
- DSQL برای هر کانکشن یه میکرو-VM میسازه، read replica رو خودکار اضافه میکنه و خوندنها strongly consistentان
- کنترلپلین DSQL روی خود DSQL اجرا میشه؛ در عوض foreign key هنوز پشتیبانی نمیشه




