پارس وب سرور و مسیر تکامل میزبانی Node.js؛ از VPS های پیچیده تا هاست ‌های تخصصی

چهارشنبه 17 تیر 1405 - 12:45
مطالعه 12 دقیقه
پارس وب سرور ۱
این مطلب صرفا جنبه تبلیغاتی داشته و زومیت هیچ مسئولیتی را در رابطه با آن نمی‌پذیرد
مدیریت زیرساخت برای پروژه‌های Node.js همیشه با چالش‌هایی همراه بوده است. پارس‌وب‌سرور در این میان، راهکاری میان مدیریت سرور و سادگی هاست ارائه می‌دهد.
تبلیغات

Node.js در سال های اخیر به یکی از محبوب ترین بستر های توسعه سمت سرور تبدیل شده است و علت آن را هم می توان در رویدادمحور بودن و عملکرد بسیار قدرتمند در پردازش درخواست های همزمان دانست.

اکوسیستم گسترده npm در کنار استفاده از زبان جاوا اسکریپت در هر دو سمت کلاینت و سرور باعث شد خیلی از توسعه دهندگان برای ساخت API ، سرویس های Real-time و برنامه های تحت وب به سراغ نود جی اس بروند.

اما توسعه دادن یک پروژه با نود جی اس در واقع نیمی از مسیر بود و مسیر اصلی و شاید مهم ترین تصمیم باقی مانده انتخاب زیرساخت مناسب برای استقرار پروژه بود، تصمیمی که می تواند روی عملکرد، پایداری، هزینه نگهداری و حتی سرعت توسعه نسخه های بعدی پروژه تاثیر بگذارد.

تا چند سال پیش، اجرای پروژه های Node.js تقریبا به معنای تهیه یک سرور مجازی بود! البته راهکار دیگری هم وجود نداشت، کاربر باید بین سرور اختصاصی با هزینه های سرسام آور و سرور مجازی مدیریت نشده، یکی را انتخاب می کرد و طبیعی بود که کاربران برای پروژه های نوپا خود سراغ سرور مجازی می رفتند.

با گذشت زمان راهکارهای جدیدی برای ساده تر کردن میزبانی پروژه های نود جی اس ارائه شد. راهکارهایی که تلاش کردند بدون نیاز به خرید و مدیریت سرور امکان اجرای پروژه های نود جی اس را روی سرویس های هاست فراهم کنند. اما آیا واقعا این راهکار ها گره کور ماجرا را باز کردند؟ و تمام نیاز های توسعه دهنده برطرف شد؟

در ادامه، مسیر تکامل میزبانی Node.js را از دورانی که خرید VPS یک اجبار بود تا ظهور هاست های تخصصی بررسی می کنیم و خواهیم دید که در هر دو چه مزایا و محدودیت هایی وجود داشته است.  

وقتی تنها راه، خرید یک VPS بود:

در سال هایی که Node.js به تدریج در میان توسعه دهندگان محبوب شده بود و افراد زیادی تازه یادگیری این فناوری را شروع کرده بودند، گزینه های میزبانی برای آن بسیار محدود بود.

برخلاف PHP که تقریبا روی هر هاست اشتراکی قابل اجرا بود اجرای یک پروژه Node.js معمولا به تهیه یک سرور مجازی یا اختصاصی نیاز داشت.

شاید بحث هزینه سرور های اختصاصی و مجازی کم ترین مشکل در این زمینه بود! چون پس از تهیه سرور تازه چالش های اصلی شروع می شدند؛ از مسئولیت راه اندازی و نگهداری آن گرفته تا نصب نسخه های مناسب Node.js ، کانفیگ های وب سرور، نصب SSL ، کانفیگ های تخصصی فایروال، بک آپ گیری های منظم و بروزرسانی های امنیتی بخشی از کارهایی بود که یک توسعه دهنده را درگیر می کرد.

خیلی از توسعه دهندگان شاید در بخش کدنویسی بسیار قوی بودند اما تخصص سمت سرور نداشتند و بعد از اتمام پروژه تازه درگیری های اصلی برای آن ها شروع می شد.

در پروژه های کوچک و متوسط و پروژه هایی که تازه قرار بود موفقیت یا عدم موفقیت آن ها تست شود این حجم از مدیریت و کانفیگ زیرساخت واقعا توجیه نداشت، بسیاری از توسعه دهندگان دنبال محیط هایی بودند که بتوانند بدون وابستگی به سرور پروژه خود را اجرا کنند بدون اینکه زمان و هزینه قابل توجهی صرف مدیریت سرور کنند.

در نتیجه نیاز به یک بستری احساس شد که بتواند سادگی هاست های اشتراکی را با امکان اجرای پروژه های نود جی اس ترکیب کند؛ تا توسعه دهندگان بتوانند بدون درگیری با سرور پروژه های خود را روی اینترنت بارگذاری کنند و به امکانات مورد نیاز خود برای اجرای یک برنامه Node.js دسترسی داشته باشند.

CloudLinux و آغاز تحول در میزبانی Node.js:

وقتی به مرور نود جی اس محبوب تر از قبل شد، توسعه دهندگان بخاطر مزایا استفاده از پروژه های مبتنی بر Node.js و فریمورک هایی نظیر NestJS ، Express ، Next.js و همچنین اپلیکیشن هایی Real-time بیشتر به سراغ توسعه پروژه های نود جی اس رفتند، خلا یک راهکار ساده برای استقرار این پروژه ها بیشتر از همیشه به چشم آمد!

هیچ هاست اشتراکی مبتنی بر PHP امکان راه اندازی این پروژه ها را نداشت و سرور های مجازی هم عمدتا بخاطر مشکلاتی که در بالا توضیح دادیم، برای هر پروژه ای انتخاب منطقی نبودند.

در این مقطع، تحول مهمی در دنیای هاستینگ رخ داد. کلادلینوکس با معرفی قابلیت Setup Node.js App برای سرور های مجهز به CloudLinux، امکان اجرای پروژه‌ های Node.js را روی هاست‌ های اشتراکی فراهم کرد. به لطف این قابلیت، کاربران هاست‌ های اشتراکی مبتنی بر cPanel توانستند بدون نیاز به سرور مجازی یا اختصاصی، پروژه‌ های نود جی اس خود را راه‌ اندازی و مدیریت کنند و مسیر تازه‌ ای برای میزبانی این نوع پروژه‌ ها روی هاست‌ های اشتراکی ایجاد شد.

این قابلیت شاید در ابتدا ساده به نظر می رسید اما در عمل یک تغییر بسیار مهم در تجربه توسعه دهندگان به وجود آورد، برای اولین بار تعریف یک اپلیکیشن نود جی اس در محیط هاست اشتراکی فراهم شد که می توانستند در زمان ساخت، نسخه Node.js و مسیر اجرای پروژه را مشخص کنند و بدون اینکه وارد خط فرمان شوند اپلکیشن را اجرا کنند.

این اجرای اپلیکیشن از طریق کنترل پنل باعث شد خیلی از پروژه های بزرگ و کوچک بدون نیاز به VPS قابل اجرا باشند و این به خصوص برای توسعه دهندگانی که همیشه روی کدنویسی تمرکز داشتند نه مدیریت سرور، یک تغییر بسیار قابل توجه بود.

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

به همین دلیل این مرحله یک نقطه عطف در تاریخ میزبانی Node.js بود؛ نقطه ای که برای اولین بار هاست اشتراکی وارد رقابت با سرور های مجازی در حوزه اجرای اپلیکیشن های نود جی اس شد.

با این حال با رشدی سریع که نود جی اس داشت و نیاز های جدیدی که در پروژه ها ایجاد شد کم کم مشخص شد که این مدل میزبانی نیز محدودیت های خاص خودش را دارد و این محدودیت ها در پروژه های واقعی و در مقیاس های بزرگ بیشتر هم خود را نشان داد.

محدودیت‌ های Setup Node.js app در پروژه‌ های واقعی:

قابل کتمان نیست که قابلیت Setup Node.js App در سرور های مبتنی بر کلادلینوکس مسیر اجرای پروژه های نود جی اس را هموارتر کرد، اما در عمل زمانی که پروژه ها از سطح یک API ساده نود جی اس فراتر رفتند، محدودیت های این ابزار هم بیشتر شد.

در پروژه های واقعی قرار نبود تنها یک سرور HTTP ساده اجرا شود و استفاده از دیتابیس هایی نظیر MongoDB و سیستم های کش مبتنی بر Redis ، و ارتباطات لحظه ای با WebSocket یا Socket.io و همچنین فریمورک های مدرنی مانند Next.js و NestJS نیاز به ساختاری منعطف تر و کامل تر داشتند.

بخشی از چالش ها این بود که در هاست های اشتراکی MongoDB و Redis اصلا روی سی پنل ساپورت نمی شدند و نیاز به نصب های جانبی مجزا روی سرور داشتند که به خاطر نداشتن پنل گرافیکی سمت سی پنل این مورد توسط شرکت های هاستینگ انجام نمی شد.

از طرف دیگر ابزار Setup Node.js app چون بر بستر PM2 پروژه ها را ران نمی کرد محدودیت های بیشتری در مدیریت کرش ها و ریستارت های خودکار داشت و برای همین مدیریت فرآیند ها نیز همیشه به شکل ایده آل در دسترس نبود!

مورد دیگر بحث لاگ ها و دیباگ کردن پروژه بود، در پروژه های واقعی این مورد یک بخش بسیار مهم در زمان توسعه و استقرار پروژه می باشد اما با ابزاری که کلادلینوکس معرفی کرده بود دسترسی به لاگ ها یا محدود بود یا به شکل اصولی لاگی ذخیره نمی شد و تجربه حل مشکل با آن ها برای پروژه های بزرگ و مواقعی که خطا رخ می داد کافی نبود.

در پروژه هایی که هم نیازمند به ارتباط لحظه ای بود امکان اجرای پایدار WebSocket یا Socket.io وجود نداشت و کلادلینوکس هم راهکاری برای آن ارائه نکرد بنابراین توسعه دهنده در این بخش هم دچار چالش جدی می شد.

مورد دیگر این بود که وقتی پروژه ها بزرگتر شدن محدودیت های منابع مانند RAM ، CPU و I/O و ... باعث می شدند که پروژه ها راندمان بالایی نداشته باشند چون کلادلینوکس تلاش می کرد با ایزوله سازی منابع پایداری را بالا ببرد و همین کیفیت نهایی پروژه ها را در محیط های پروداکشن کم می کرد.

در مجموع نمی توان از اینکه کلادلینوکس یک قدم بسیار مهم در ساده سازی میزبانی نود جی اس برداشت چشم پوشی کرد، اما خرید هاست برای پروژه های نود جی اس با استفاده از ابزار کلادلینوکس بیشتر برای پروژه های سبک و کوچک مناسب بودند و همین شکاف نیاز پروژه های واقعی و امکانات هاست اشتراکی باعث شد نسل جدیدی از سرویس های میزبانی شکل بگیرد، سرویس هایی که تلاش می کردند امکانات VPS را در قالبی ساده تر و مدیریت شده تر در همان بستر سی پنل ارائه دهند.

پارس وب سرور چگونه این چالش‌ ها را برطرف کرده است؟

محدودیت هایی که هاست های مبتنی بر کلادلینوکس داشتند باعث شد تیم فنی پارس وب سرور به جای پذیرش این محدودیت ها، به دنبال راهکاری برای برطرف کردن آن ها باشد.

هدف اصلی این بود که توسعه دهندگان بتوانند بدون مدیریت یک سرور مجازی، امکاناتی را داشته باشند که برای پروژه های بزرگ و واقعی نود جی اس مناسب و ضروری است.

بنابراین قدم اول، فراهم کردن سرویس هایی بود که خیلی از پروژه های امروز به آن وابسته هستند. به همین دلیل، با نصب MongoDB و Redis در هاست Nodejs خود در کنار توسعه پنل های گرافیکی برای ساخت این دیتابیس ها در سی پنل توسط خود توسعه دهنده، گام اول را برداشتند، تا نیاز نباشد برای این دیتابیس ها توسعه دهندگان نیاز به خرید سرویس مجزا یا استفاده از سرویس های خارجی داشته باشند.

اما مشخص بود که تنها اضافه کردن دیتابیس ها کافی نبود و تجربه هم نشان داده بود که خیلی از چالش هایی که توسعه دهندگان داشتند به نحوه مدیریت و اجرای پایدار اپلیکیشن ها برمی گشت، بنابراین در گام دوم به جای اینکه بر قابلیت های پیش فرض Setup Node.js App تکیه کنند اقدام به توسعه یک پنل اختصاصی به نام Nodejs Application کردند که در محیط سی پنل به شکل مستقیم در اختیار توسعه دهندگان قرار گرفت.

این پنل با هدف ساده سازی فرآیند استقرار و مدیریت پروژه های Node.js طراحی شد و امکاناتی را در اختیار توسعه دهنده قرار داد که در ابزار کلادلینوکس به صورت پیش فرض وجود نداشت.

فعالسازی سوکت روی دامنه و پورتی که Nodejs Application به صورت اختصاصی به هر پروژه اعطا می کرد از قابلیت های بسیار خوبی بود که این ابزار داشت.

مشاهده لاگ های در زمان اجرا به همراه امکان اجرای بیلد به شکل دستی در محیط کامند لاین در کنار امکان بررسی لاگ های آخر قبل از قطعی پروژه از امکانات دیگری بود این ابزار در اختیار توسعه دهندگان قرار می داد و توسعه دهندگان می توانستند متغییر های محیطی خود را به شکلی ساده وارد پروژه کنند.

در طراحی این پنل تلاش شده است نیازهای واقعی توسعه دهندگان در نظر گرفته شود؛ نیازهایی که معمولا هنگام استقرار پروژه‌ های مبتنی بر Express، Next.js، NestJS و سایر فریمورک‌ های رایج Node.js با آن‌ ها رو به‌ رو می‌ شوند.

نتیجه این رویکرد ایجاد بستری بود که توسعه دهنده توانست به جای صرف زمان برای مدیریت و کانفیگ سرور ها، تمام تمرکز خود را روی توسعه و بهبود نرم افزار بگذارد.

هاست Nodejs پارس وب سرور؛ فراتر از اجرای ساده یک اپلیکیشن:

هدف از توسعه هاست Nodejs در پارس وب سرور تنها فراهم کردن امکان اجرای یک پروژه نود جی اس روی هاست اشتراکی نبوده است. این سرویس با این رویکرد طراحی شد که توسعه دهنده بتواند بخش قابل توجهی از امکاناتی را تنها روی سرور مجازی امکان راه اندازی داشت را بدون نیاز به تهیه سرور روی هاست ها در اختیار داشته باشد!

پنل اختصاصی Nodejs Application:

اصلی ترین تفاوت هاست نود جی اس پارس وب سرور با سایر رقبا وجود ابزار Nodejs Application در سی پنل می باشد.

این پنل به‌ صورت اختصاصی توسط تیم فنی پارس وب سرور توسعه داده شده و مستقیما در محیط cPanel قرار گرفته است تا مدیریت پروژه‌ های Node.js ساده‌ تر و کاربردی‌ تر از ابزار پیش‌ فرض CloudLinux باشد هرچند که ابزار Setup Node.js App هم همچنان روی این هاست قرار دارد و کاربر می تواند بسته به انتخاب خود از آن ها استفاده کند.

از طریق Nodejs Application، توسعه‌ دهندگان می‌ توانند پروژه‌ های خود را ایجاد و مدیریت کنند، نسخه Node.js را تغییر دهند، متغیر های محیطی را تنظیم کنند، وضعیت اجرای برنامه را بررسی کنند و بدون نیاز به انجام تنظیمات پیچیده، پروژه خود را مدیریت کنند.

پشتیبانی از MongoDB و Redis:

بیشتر پروژه‌ های جدید نود جی اس به یک دیتابیس و در بسیاری از موارد به یک سیستم کش نیاز دارند. به همین دلیل، در هاست نود جی اس پارس وب سرور امکان استفاده از MongoDB و Redis فراهم شده است.

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

مشاهده لاگ‌ های برنامه:

یکی از قابلیت‌ هایی که در فرآیند توسعه و نگهداری پروژه اهمیت زیادی دارد، دسترسی به لاگ‌ های اجرای برنامه است. در پنل اختصاصی Nodejs Application امکان مشاهده لاگ‌ های برنامه، بررسی خطا ها و مشاهده آخرین وضعیت اجرای اپلیکیشن فراهم شده تا فرآیند عیب‌ یابی با سرعت و دقت بیشتری انجام شود.

فعال‌سازی WebSocket:

پروژه‌ های مبتنی بر Socket.io و سایر فناوری‌ های Real-time برای عملکرد صحیح به پشتیبانی از WebSocket نیاز دارند. در هاست Nodejs پارس وب سرور این قابلیت در اختیار توسعه دهنده قرار گرفته است و توسعه دهنده می تواند، ارتباطات WebSocket را روی دامنه و پورت اختصاصی پروژه خود فعال کند.

انتخاب نسخه‌ های مختلف Node.js:

با توجه به اینکه هر پروژه ممکن است به نسخه متفاوتی از Node.js وابسته باشد، امکان انتخاب و تغییر نسخه Node.js برای هر اپلیکیشن در این سرویس فراهم شده است. این موضوع باعث می‌ شود توسعه‌ دهندگان بتوانند پروژه‌ های مختلف خود را بدون نگرانی از ناسازگاری نسخه‌ ها اجرا کنند.

تفاوتی که انتخاب نسخه های نود جی اس در ابزار اختصاصی Nodejs Application با Setup Node.js App دارد این است که در پنل اختصاصی Nodejs Application با نصب یک نسخه نود جی اس دستورات NPM و PM2 برای کل هاست فعال می شود و نیاز به وارد کردن دستور Source Activate پروژه ها در ترمینال نیست که تنها در همان محیط مجازی پروژه قابل استفاده باشد!

اجرای دستورات و مدیریت فرآیند بیلد:

خیلی از فریمورک های جدید در زمان استقرار نیاز به تهیه بیلد دارند و وقتی پروژه در قسمت Nodejs Application ران می شود ابتدا بعد از نصب کتابخانه به سراغ تهیه بیلد براساس تگ بیلد در Package.json می رود و بعد از اتمام بیلد پروژه ران می شود.

در هر صورتی اگر در زمان تهیه بیلد مشکل یا خطایی وجود داشته باشد کاربر به سادگی در مسیر پروژه با دستور npm run build می تواند به شکل دستی و لحظه ای بیلد را تهیه کند و خطا های احتمالی را مورد بررسی قرار دهد.

امکان راه اندازی پروژه های PHP در کنار Node.js:

با وجود اینکه بسیاری از پروژه‌ های جدید به سمت Node.js حرکت کرده‌ اند، هنوز بخش قابل توجهی از پروژه های وب براساس PHP توسعه داده می‌ شود و فریمورک‌ هایی مانند Laravel همچنان یکی از محبوب‌ ترین انتخاب‌ های توسعه‌ دهندگان می باشند.

در بسیاری از تیم‌ ها نیز پروژه‌ های Node.js و PHP به‌صورت همزمان مورد استفاده قرار می‌گیرند؛ برای مثال ممکن است API یا سرویس‌ های Real-time با Node.js توسعه داده شوند و وب‌ سایت یا پنل مدیریت با Laravel پیاده‌ سازی شوند.

به همین دلیل، در هاست نود جی اس پارس وب سرور امکان راه‌ اندازی پروژه‌ های PHP نیز در کنار اپلیکیشن‌ های Node.js فراهم شده است. توسعه‌ دهندگان می‌توانند بدون نیاز به خرید هاست لاراول ، پروژه‌ های مبتنی بر PHP و فریمورک Laravel را در همان محیط هاست نود جی اس مدیریت کنند.

نصب کتابخانه ها حتی در زمان اختلال اینترنت بین‌ الملل:

یکی از مشکلاتی که توسعه دهندگان در سال های اخیر بارها با آن مواجه شدند، اختلال یا قطع کامل دسترسی به ریجستری اصلی npm در زمان بروز مشکلات اینترنت بین الملل و قطعی آن می باشد.

در چنین شرایطی توسعه دهندگان نمی توانند کتابخانه های پروژه را نصب کنند و روند توسعه و استقرار با تاخیر شدید رو به رو می شود.

برای کاهش این وابستگی در هاست Nodejs پارس وب سرور امکان نصب پکیج ها از طریق Mirror های جایگزین Runflare (پلتفرم ابری توسعه داده شده توسط پارس وب سرور) فراهم شده است و حتی در شرایطی که دسترسی به رجیستری اصلی npm با اختلال مواجه است، توسعه‌ دهندگان همچنان بتوانند وابستگی‌ های مورد نیاز پروژه خود را نصب کرده و فرآیند استقرار یا انتشار نسخه‌ های جدید را بدون وقفه ادامه دهند.

در قطعی های اخیر رخ داده نزدیک به 500 هزار یونیک IP از میرور های رانفلر برای دریافت کتابخانه ها استفاده کردند که نزدیک به 99.6 درصد این دانلود ها کاملا رایگان بوده است.

پرده آخر:

در نهایت، مسیر میزبانی Nodejs نشان می‌ دهد که این فناوری دیگر صرفا یک انتخاب برای توسعه نیست، بلکه بخشی جدایی‌ ناپذیر از زیرساخت بسیاری از محصولات نرم‌ افزاری شده است. همین موضوع باعث شده انتظارات از سرویس‌های میزبانی نیز تغییر کند و صرفا اجرای یک برنامه دیگر کافی نباشد.

امروز توسعه‌ دهندگان به محیطی نیاز دارند که بتواند میان سادگی و توانمندی تعادل ایجاد کند؛ محیطی که در آن، پیچیدگی‌ های زیرساختی به حداقل برسد و تمرکز اصلی روی توسعه محصول باقی بماند. این همان نقطه‌ ای است که نسل جدید سرویس‌ های میزبانی تلاش می‌کنند به آن نزدیک شوند.

نظرات