توسعه ی اپلیکیشن Node.js کار سختی نیست اما چالش واقعی وقتیه که ما اون رو گسترش میدیم. اینجا میخوایم یک لیست از کارهایی که باید درحالت production و در زمان اجرای اپلیکیشن Node.js انجام بدید رو نام می بریم.
1 - استفاده از پراکسی معکوس
من مطمئنم شما تابحال به پیام هایی مثل این :
“Listening to port 3000”
وقتی که اپلیکیشن Node.js درحال اجراست برخوردید. این در توسعه ی local بخوبی کار می کنه چون رفتن به مسیر localhost:3000 در مرورگر چالش بزرگی نیست.
اما در مورد حالت production چی؟ من مطمئنم شما نمیتونید از کاربرتون بخواهید که با استفاده از پورت به اپلیکیشن شما دسترسی پیدا کنه. ولی ما میتونیم اپ رو در پورت 80 اجرا کنیم و مرورگر بصورت خودکار این رو درک کنه. اما با این روش شما انعطاف کار رو از دست میدید و همچنین این باعث میشه بصورت مستقیم برای هرکسی قابل دسترس باشه و ریسک بزرگیه.
برای حل این مشکل از پراکسی معکوس استفاده کنید. نه تنها پیکربندی اپ مخفی میشه بلکه به شما اجازه میده چند اپلیکیشن رو با پورتهای مختلف در همان اجرا کنید.
Nginx در این زمینه بهترینه و شما میتونید این کار رو در Node.js انجام بدید. مطالعه بیشتر
2 - استفاده از ابزارهای نظارتی (مانیتورینگ)
استثنائات اتفاق میافتند و منجر به خطا در سرور می شوند. هروقت این اتفاق بیافته شما باید اولین نفر باشید که متوجهش میشید و این کار رو با ابزارهای نظارتی انجام میدید.
در حالت production ابزار نظارتی بهترین دوست شماست, پس اون رو به دقت انتخاب کنید. با کمک این ابزارها شما میتونید وضعیت اپ رو درهرجا چک کنید, گزارش گیری کنید, حافظه رو مدیریت کنید و از اتفاق هایی که ممکنه بیافته توسط ایمیل خبردار بشید.
دو انتخاب خوب برای این کار وجود داره :
- Keymetrics – by PM2.
- Trace – by RisingStack
3 - حذف حالات console.log
ما از استفاده ی دستور console.log لذت می بریم و این چیز بدی نیست, به ما کمک می کنه تا باگ ها رو در زمان کمتری پیدا کنیم. اما درحالت production این حالات وقت CPU رو میگیره و منابع رو هدر میده. بهتره که ازشون اون زمان کمتر استفاده کنیم.
4 - استفاده از ذخیره سازی خارجی
ذخیره سازی id سِشن ها, id سوکت ها و غیره در حافظه به عنوان ذخیره سازی موقت در حالت production کار نمی کنه چون هروقت شما سرور رو ری استارت کنید, اون اطلاعات رو از دست میدید. شما باید از ذخیره سازی خارجی مثل Redis برای این کارها استفاده کنید.
5 - استفاده از SSL
SSL با استفاده از تبدیل اطلاعات, یک لایه امنیتی برای شما فراهم می کنه.
در بیشتر مواقع توسعه دهندگان Node.js کلید SSL رو از فایل در سرور Node می خوانند اما شما باید از پراکسی معکوس (reverse proxy) برای این کار استفاده کنید.
SSL رو در پراکسی معکوس نصب کنید و اجازه بدید دنیای بیرون با اپلیکیشنتون ارتباط برقرار کنند.
6 - بازنگری در مسائل امنیتی
مطمئن بشید که اپلیکیشن شما از استاندارد های امنیتی برخورداره. در این مقاله میتونید لیستی از نکات مهم امنیتی که باید رعایت کنید رو داشته باشید.
همچنین همیشه Nodejs و NPM رو آپدیت نگه دارید, اونها شامل آپدیت های امنیتی زیادی هستند.
7 - اپ واقعی فقط در دسترس کاربران خاص
اگر اپلیکیشن شما روی آدرس XYZ.com و پورت 8080 درحال اجراست و از پراکسی معکوس استفاده می کنه, مطمئن بشید که فقط سرور پراکسی معکوس بتونه با اپلیکیشن شما ارتباط برقرار کنه و کسی از خارج اون نتونه نفوذ کنه. این باعث میشه از بسیاری حملات مختلف جلوگیری بشه.
8 - Node.js رو در حالت cluster اجرا کنید
Node.js درحالت پیشفرض از ویژگی های چند هسته بودن پردازنده استفاده نمی کنه, از این رو اگر شما اپ رو در حالت cluster قرار ندید, بازدهی سیستم کاهش پیدا می کنه.
Node.js cluster ماژولی هست که به شما اجازه میده از چندین فرزند فرآیند در همان فرآیند استفاده کنید. باعث میشه که افت کاهش یافته و دسترسی بالا بره.
9 - انجام بیشتر کارهای I/O و کمتر کارهای مربوط به CPU
همیشه به یاد داشته باشید, Node.js در یک چرخه رفتار رویدادها اجرا میشه و این برای اعمال مربوط به I/O بهترین موقعیته.
حتی اکر عملیات I/O زمان ببره, Node.js بخاطر طبیعت callback که داره سایر درخواست ها رو مدیریت می کنه, بهرحال اگر اپ شما زمن زیادی در اجرای وظایف CPU طی می کنه مثل محاسبات سنگین, Nodejs سایر درخواست ها رو نگه می داره و این باعث میشه سیستم بسیار کند بشه.
سعی کنید از Nodejs بیشتر برای کارهای I/O استفاده کنید.
10 - استفاده از مدیر فرآیند
اجرای اپ شما با node.app.js یا gulp یا غیره درحالت توسعه خیلی خوبه. اما وقتی به حالت production میرید شما باید برای اینکه اپلیکیشنتون همیشه درحال اجرا باشه از مدیر فرآیند استفاده کنید (process manager). این به شما کمک می کنه وقتی مشکلی پیش اومد اپلیکیشن رو ری استارت کنید.
ماژول هایی مثل forever , pm2 برای این کار وجود دارند اما ما pm2 رو پیشنهاد می کنیم.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید