هر روز میلیاردها پیام بین کاربران واتس‌اپ و دیسکورد رد و بدل می‌شود و این پلتفرم‌ها عملاً هیچ‌وقت از دسترس خارج نمی‌شوند. راز این پایداری، تکنولوژی‌ای است که در دهه ۱۹۸۰ برای سوئیچ‌های تلفنی طراحی شد: زبان ارلنگ و ماشین مجازی BEAM. آنچه این پشته را متمایز می‌کند فقط سرعت پردازش نیست بلکه توانایی تیم‌های چندنفره در مدیریت زیرساختی است که بیش از ۱۰۰ میلیون کاربر هم‌زمان را پشتیبانی می‌کند.

زایش در مخابرات و تکامل در اینترنت

پروژه ارلنگ در اواخر دهه ۱۹۸۰ در آزمایشگاه‌های اریکسون برای پاسخ به نیازهای حیاتی سیستم‌های مخابراتی آغاز شد. در آن زمان استاندارد قطع خدمات تلفنی زیر یک دقیقه در سال بود و مهندسان به زبانی نیاز داشتند که با همزمانی انبوه و در دسترس‌بودن مادام‌العمر سازگار باشد. طراحی ارلنگ بر سه پایه استوار است:

  • فرایندهای سبک‌وزن: امکان اجرای میلیون‌ها عملیات موازی بدون افت محسوس عملکرد سیستم
  • ارتباط پیام: ارسال داده بین فرایندها بدون اشتراک‌گذاری حافظه که پیچیدگی را حذف و تحمل خطا را افزایش می‌دهد
  • تحمل خطا در سطح معماری: فلسفه “Let it crash” که در آن به جای پیشگیری از همه‌ی خطاها سیستم‌ها طوری طراحی می‌شوند که پس از شکست فرایند نودهای نظارتی بلافاصله فرایند معیوب را جایگزین کنند. بررسی اصول طراحی استاندارد OTP در مستندات رسمی ارلنگ

در سال ۲۰۱۱ خوزه والیم با الهام از ارلنگ زبانی به نام الیکسیر را ارائه داد که نحو برنامه‌نویسی مدرن و قابلیت‌هایی مانند ماژول‌های پیش‌پردازشی را اضافه کرد اما تمام مکانیزم‌های همزمانی و تحمل خطای ماشین BEAM را حفظ نمود. همین ویژگی باعث شد تیم‌های دیسکورد و واتس‌اپ برای مقابله با ترافیک عظیم به سمت این فناوری سوق پیدا کنند.

پنج ویژگی کلیدی که BEAM را به سلاح مخفی تبدیل کرده است

انتخاب ماشین مجازی BEAM برای پیاده‌سازی لایه ارتباطی واتس‌اپ و دیسکورد تصادفی نبود. مهندسان این پلتفرم‌ها پنج فاکتور حیاتی را در این پشته یافتند:

1. تحمل خطای ذاتی

در سرویس‌های ۲۴/۷ خرابی یک فرایند نباید زنجیره‌ای از کرش‌های سراسری ایجاد کند. مدل Supervision Tree در OTP تضمین می‌کند که هندلرهای اتصال پردازشگرهای پیام یا سرویس‌های داخلی با شکست مواجه شوند و دقیقاً طبق استراتژی تعریف‌شده ریست شوند بدون آنکه ارتباط سایر کاربران مختل گردد.

2. مقیاس‌پذیری بدون پیچیدگی توزیع‌شده

اضافه کردن سرور به تنهایی مسئله حل نمی‌کند مدیریت ترافیک بین نودها چالش اصلی است. در معماری‌های کلاسیک پیاده‌سازی یکپارچگی داده و کشف نودها نیازمند پیچیدگی‌های زیادی است. BEAM این عملیات را به صورت بومی و با کدگذاری حداقلی پشتیبانی می‌کند. اسناد رسمی ماشین BEAM

3. توزیع بار جهانی

زمان‌بند Scheduler این ماشین مجازی فرایندها را نه تنها روی هسته‌های CPU یک سرور بلکه به صورت شفاف بین سرورهای مختلف در یک شبکه توزیع می‌کند. برای افزایش ظرفیت تیم‌های عملیاتی تنها یک نود جدید به خوشه اضافه می‌کنند و خود سیستم فرایندها را بازتوزیع می‌کند. این مکانیزم نیاز به بلانسرهای پیچیده یا لایه‌های کشینگ سنگین را به شدت کاهش می‌دهد.

4. پاسخ‌دهی فوق‌سریع از طریق زمان‌بندی قطع‌پذیر

زمان‌بند مبتنی بر Reductions در BEAM فرایندهای طولانی را پس از شمار مشخصی فراخوانی متوقف و مجوز اجرا را به فرایندهای کوتاه‌تر و پیغام‌رسانی می‌دهد. در نتیجه یک عملیات سنگین آپلود ویدئو یا پردازش گرافیک هرگز باعث گرسنگی CPU فرایند دریافت تایپینگ یا پیام متنی نمی‌شود. این ویژگی برای تجربه کاربری آنی حیاتی است.

5. به‌روزرسانی زنده کد بدون توقف سرویس

سیستم فایل و ماشین مجازی ارلنگ اجازه می‌دهند ماژول‌های کد در حین اجرای عملیاتی سرویس جایگزین شوند. در پلتفرم‌هایی که پنجره نگهداری Maintenance Window ندارند این قابلیت اجازه می‌دهد پچ‌های امنیتی و بهبودهای عملکردی بدون هیچ‌گونه قطعی موقت یا ریستارت سرویس پیاده‌سازی گردند.

نمای معماری شبکه‌ی ارلنگ در زیرساخت‌های ابری واتس‌اپ

واتس‌اپ؛ مطالعه موردی بی‌نظیر معماری مقیاس‌پذیر

واتس‌اپ فعالیت خود را در سال ۲۰۰۹ با یک سرور XMPP ساخته شده بر پایه الیکسیر آغاز کرد. مهندسان اولیه با درک پتانسیل این پشته در مدیریت همزمانی به مرور زیرساخت را به یک معماری کاملاً سفارشی مبتنی بر OTP مهاجرت دادند. نتیجه آن شگفت‌انگیز بود: مدیریت میلیون‌ها مکالمه متنی و رسانه‌ای به‌صورت هم‌زمان با تیمی متشکل از چند مهندس زیرساخت و بدون وابستگی به کلان‌داده‌های سنگین یا کلاسترهای پیچیده. مقایسه عملکرد BEAM با سایر ران‌تایم‌ها نشان می‌دهد که در سناریوهای با فرایندزایی انبوه این ماشین مجازی با استفاده بهینه‌تر از رم و سوییچینگ کارآمدتر تا ۹۰ درصد هزینه سرورهای فیزیکی را کاهش می‌دهد. مقایسه فنی زبان ارلنگ با سایر پلتفرم‌های سمت سرور در ویکی‌پدیا

نگاه به آینده شبکه‌های هم‌زمان

با رشد سریع اپلیکیشن‌های اینترنت اشیاء (IoT) و ارتباطات لحظه‌ای تقاضا برای معماری‌هایی که همزمانی انبوه را با کسری از منابع نرم‌افزاری مدیریت کنند روزبه‌روز فزاینده‌تر می‌شود. پشته BEAM با حفظ اصول طراحی مخابراتی قرن پیش و تلفیق آن با ابزارهای مدرن برنامه‌نویسی همچنان به عنوان یکی از پایدارترین گزینه‌ها برای زیرساخت‌های حیاتی عمل می‌کند. احتمالاً در آینده نزدیک شاهد استفاده گسترده‌تر از این ماشین مجازی در پروژه‌های مالی، پلتفرم‌های بازی آنلاین و حتی لایه‌های ارتباطی ربات‌های هوشمند خواهیم بود.