الیکسیر برای پروژههای مخابراتی
از جمله مهمترین الزامات زیرساختهای مخابراتی، حفظ عملکرد سیستم در مواجهه با خطاها است. زبان ارلنگ در پاسخ به این نیاز طراحی شده است.
الیکسیر یک زبان برنامهنویسی همروند و تابعی، و مبتنی بر ماشین مجازی BEAM است. ماشین مجازی BEAM در خلال توسعه و بهبود زبان برنامهنویسی ارلنگ ایجاد شده است.
به عنوان مثال یک سرور ثبتکننده1 را در نظر بگیرد. این سرور وظیفه دارد با پردازش پیامهای SIP، نگاشت بین نام کاربری مشترک و نقطه اتصال او در شبکه را نگهداری کند. به عنوان نمونه این سرور میداند که کاربر با نام کاربری bob@example.com در آدرس 172.16.20.110:5060 در دسترس است. با توجه به تنوع نرمافزارهایی که کاربر میتواند برای این منظور استفاده کند، سرور ثبتکننده باید دقت کافی در پردازش پیامهای دریافتی را لحاظ کند و با رویکرد تدافعی انواع خطاهای احتمالی را بررسی کند. اما با تمام این ملاحظات باز هم ممکن است یک پیام ارسالی از طرف کاربر باعث ایجاد اختلال در عملکرد کل سرور شود. برای نمونه میتوان به این CVE در kamailio اشاره کرد که یک پیام با ساختار نامناسب میتوانسته عملکرد کل سرور را مختل کند.
زبان ارلنگ با الهام از مفهوم پردازهها2 در سیستم عامل و فراهم کردن زیرساخت مناسب برای شکستن کارهای پیچیده به سلسله مراتبی از کارهای سادهتر، بستر مناسبی برای توسعه نرمافزارهای پایدار در برابر خطاها ایجاد کرده است.
همانطور که پردازهها در سیستم عامل به صورت کاملا مجزا از یکدیگر اجرا میشوند و اختلال در یک پردازه تاثیری در عملکرد دیگر پردازهها ندارد، در زبان ارلنگ نیز پردازهها کاملا مستقل از یکدیگر اجرا میشوند. البته قابلیتهای link و monitor کردن پردازهها در ارلنگ وجود دارد. با استفاده از این قابلیتها یک پردازه میتواند در جریان وضعیت پردازه دیگر قرار بگیرد و در صورت بروز مشکل، رویههای لازم را اجرا کند. این دو مفهوم پایه و اساس بحث درخت نظارت3 در ارلنگ است که خود نیاز به مطلبی مجزا دارد.
تفاوت اساسی پردازههای ارلنگ با پردازههای سیستم عامل، هزینه و سربار بسیار پائین ایجاد و نگهداری آنهاست. به گونهای که میتوان در مدت زمان اندکی میلیونها پردازه ایجاد کرد و آنها به صورت همروند در حال اجرا باشند. این تفاوت اساسی امکان توسعه سیستمهای پایدار در برابر خطا را فراهم میکند.
در مثال سرور ثبتکننده که پیشتر بیان شد، اگر هر پیام دریافتی توسط یک پردازه مستقل پردازش شود، در صورت بروز خطا تنها عملکرد آن پردازه مختل میشود و عملکرد کلی سیستم دچار مشکل نمیشود. به این ترتیب با استفاده از مفهوم پردازهها میتوان دامنه انتشار خطا را به شدت محدود کرد و عملکرد سیستم در مواجهه با خطاهای مختلف را حفظ کرد. از آنجای ی که در سیستمهای مخابراتی عمدتا تعامل بین سیستمهای متنوع از شرکتهای مختلف وجود دارد و هر شرکت میتواند پیادهسازی متفاوتی از استاندارد داشته باشد، کاهش دامنه خطا امری حیاتی و ضروری است. این ویدئو به نقش این ویژگی اساسی در توسعه محصول SGSN/MME شرکت اریکسون و دستیابی به دسترسیپذیری ۹۹.۹۹۹٪ اشاره میکند.