چه زمانی، چگونه و چرا از nodejs در سمت سرور استفاده کنیم


شرکت هایAirbnb, LinkedIn, Walmart, Uber و حتی NASA از نود جی اس برای سرویس هایشان استفاده کرده اند. در این بین بسیاری از شرکت ها و استارتاپ های کوچک و بزرگ این تکنولوژی را در پروژه های خود به کار برده اند.نود جی اس مزیت های فرآوانی دارد ولی در کنار آن باید با معایب آن آشنا شوید.داشتن تصویری کلی از نود جی اس و اجتناب از اشتباهات جدی و بزرگ در توسعه در هزینه های شما صرفه جویی می کند.
Nodejs چیست ؟
نود جی اس یک برنامه ران تایم است که به شما این امکان را می دهد تا سمت سرور خود را با جاوااسکریپت بنویسید. از یک مدل I/O استفاده می کند که به طور فزاینده ای شرایط و برنامه را به شکلی مقیاس پذیر و به طور همزمان از سرور درخواست می کند.همچنین به شدت سبک و کارآمد است به طوری که با به کار گیری جاوااسکریپت در فرانت-اند و بک-اند روند جدیدی را در توسعه وب بوجود آورده است و به همین دلیل جای تعجب ندارد که بسیاری از شرکت ها از این ساختار در ارائه سرویس های خود استفاده می کنند. در این مقاله می خواهیم به این مسئله بپردازیم که چه زمانی از نود جی اس استفاده و چه زمانی استفاده از آن یک ایده مناسب و خوب نیست.
تفاوت های میان nodejs و javascript :
نود جی اس با جاوااسکریپت توسعه داده شده است و هر دو از نظر ساختار زبان یکسان هستند. جاوااسکریپت در مرورگر مورد استفاده قرار می گیرد و نود جی اس هم تقریبا به همین صورت ولی در نهایت در ساختار API ها باهم تفاوت هایی دارند.در مرورگر شما DOM/web API هایی دارید که از طریق آنها با UI کار کرده و از طریق آن به سخت افزار برای محدود کردن برخی فرآیندها دسترسی می دهید.از طرفی نود جی اس ابزاری است برای توسعه سمت سرور و دارای API های مختص به خود می باشد مثل fs برای کار با فایل سیستم ها، http برای کار با سرور، child processes و … البته مرورگر نیز برخی از این سرویس ها را البته محدود پشتیبانی می کند.
چرا استفاده از نود جی اس برای توسعه برنامه ها ارزشمند است؟
در ابتدا استفاده از نود جی اس به عنوان تکنولوژی سمت سرور ویژگی بزرگی را در اختیار شما قرار می دهد به این دلیل که از یک ساختار یکسان هم برای فرانت-اند و هم برای بک-اند استفاده خواهید کرد.که این خود باعث کارآمدی بشتر تیم توسعه خواهد شد و البته هزینه های توسعه را کاهش خواهد دارد.لازم به ذکر است که جاوااسکریپت یکی از محبوب ترین زبان های برنامه نویسی است و به همین دلیل کدهای برنامه ای که توسعه داده اید را سایر برنامه نویسان این حوزه به راحتی خواهند فهمید.شما می توانید در این شرایط قسمتی از کد خود را بین فرانت-اند و بک-اند به صورت اشتراکی مورد استفاده قرار دهید که این کار فرآیند توسعه شما را افزایش خواهد داد.علاوه بر این جامع نود جی اس پیوسته در حال بزرگ شدن می باشد به همین جهت دانش و تکنولوژی گسترده تری را در اختیار شما می گذارد.در حقیقت تکنولوژی نود جی اس متن باز (open source ) است و مسلما رایکان در اختیار شما قرار می گیرد.در انتها نود جی اس دارای یک پکیج منیجر قدرتمند همراه با پکیج های بیشمار open source است که در سریع ترین زمان ممکنم در اختیار شما برای توسعه قدرتمندتر قرار می گیرد.اینها تنها بخشی از ویژگی های نود جی اس است که شما باید برای توسعه برنامه های خود بدانید.
استفاده صحیح از nodejs
اپلیکیشن های بلادرنگ :
نود جی اس انتخاب بسیار مناسبی برای برنامه هایی است که حجم بالایی از ورودی و خروجی را در کمترین زمان ممکن دارند این چنین برنامه هایی را RTA می نامند و اینگونه برنامه ها با این پلتفرم به راحتی قابل توسعه می باشد.همچنین می توان از این ساختار برای برنامه های drawing/editing-type نیز استفاده کرد مانند (terllo, Dropbox, google docs) البته لیست برنامه های RTA مسلما طولانی تر از این می باشد.از معروف ترین آنها می توان به سرویس های پیام رسان اشاره کرد.البته نود جی اس می تواند برای یک برنامه کنفرانس ویدویی نیز که با قسمت خاصی از سخت افزار کار می کند مورد استفاده قرار گیرد.علاوه بر این می توانید از این ساختار برای به نوعی بازی های آنلاین و نرم افزارهای e-commerce استفاده کنید.این نشان می دهد که اگر اطلاعات آنلاین اهمیت زیادی داشته باشد نود جی اس می تواند به خوبی آن را مدیریت کند به طوری که درخواست های همزمان کاربران را مدیریت می کند، امکان استفاده مجدد از کتابخانه ها را می دهد و درنهایت همگام سازی داده ها بین کلاینت و سرور به سرعت اتفاق می افتد.
محیط سریع و مقیاس پذیر :
Ruby و Rails عملکرد خوبی از لحاظ سرعت ندارند اگر تعداد درخواست ها زیاد باشد.درحالی که نود جی اس در این شرایط عملکرد به مراتب بهتر و سریع تری نسبت به این دو دارد.نود جی اس می تواند به سرعت درخواست های همزمان را مدیریت کند و در کمترین زمان ممکن پاسخ لازم را دهد و داده ها را بین کلاینت و سرور به اشتراک گذارد پس می توان آن را مناسب برای برنامه هایی دانست که بیشترین پردازش در سمت کاربر اتفاق می افتد.به همین دلیل نود جی اس انتخاب برجسته ای برای سایت های تک صفحه ای (single page application(SPA)) است به همین دلیل که پردازش در سمت کاربر اتفاق می افتد و بک-اند تنها داده JSON را برای استفاده در صفحه آماده می کند.پس نتیجه می گیریم که برای پردازش فرآیندهای گسترده I/O بسیار مناسب می باشد و این درحالی است که برای درخواست هایی که به پردازش سنگین CPU نیاز دارند مناسب نمی باشد.
چه زمانی استفاده از nodejs مناسب نیست ؟
اگر چه نود جی اس در بسیاری از موارد برای ساخت برنامه ها مناسب است اما همچنان نباید در برخی موارد از آن استفاده کرد.
پردازش سنگین پردازنده :
نود جی اس از مدل رویداد محور (event-driven) و مسدود نشونده (non-blocking) و همچنین تنها از یک هسته CPU برای پردازش و اجرای فرآیندها استفاده می کند به این ترتیب پردازش سنگین پردازنده تنها درخواست ها را مسدود می کند و این باعث می شود که تمام مزیت های نود جی اس بی اثر باشد.اگر شما در تلاش هستید تا برنامه ای تولید کنید که وابسته به پردازش های بالای CPU است پس باید به شما بگویم بهتر است سایر ساختارهای برنامه نویسی که مطمئنا عملکرد بهتری از نود جی اس در این مورد خواهند داشت را امتحان کنید.
عملیات CRUD(create, read, update, delete) :
استفاده از نود جی اس برای ساخت برنامه هایی که در آنها باید تعداد زیاد عملیات CRUD بدون استفاده از API خاصی و به صورت مجزا صورت پذیرد بهتر است از ساختاری مشابه Ruby و Rails استفاده نمایید.
کیفیت پکیج ها :
قبل از شروع کار با نود جی اس موارد بیشتری را باید مورد بررسی قرار دهیم که یکی از آنها پکیج هایی است که در برنامه ها مورد استفاده قرار می دهیم.نود جی اس جامعه وسیعی از برنامه نویسان سرور را به خود اختصاص داده است و دارای پکیج منیجری با بیشمار پکیج که هر کدام با اضافه شدن به پروژه کاری را برای ما انجام می دهند با این تفاوت که برخی از این پکیج ها کیفیت مطلوبی ندارند و باعث ایجاد باگ های مختلف در برنامه ما می شوند.
از کجا شروع کنیم ؟
در ابتدا به سایت nodejs مراجعه کنید و فایل آن را دانلود نمایید سپس نیاز است تا پکیج منیجر نود جی اس (NPM) را هم با مراجعه به سایت آن دانلود کنید تا بتوانید از طریق آن علاوه بر دسترسی به دنیای پکیج ها بتوانید dependencies ها پروژه خود را کنترل نمایید.همچنین بهترین مرجع برای یادگیری نود جی اس documention سایت نود جی اس می باشد و از این طریق می توانید به بسیاری از سوالاتی که ممکن است برای شما به وجود آید پاسخ دهید.
بعد از این شما می توانید وارد دنیای نود جی اس شوید و برای توسعه برنامه های خود در کنار نود جی اس از یک فریمورک مانند Expressjs استفاده نمایید این فریمورک و یا هر فریمورک دیگری که از این ساختار استفاده می کند به شما در ایجاد برنامه هایی با عملکرد و مقیاس پذیری بالا و همچنین به راحتی قابل پشتیبانی و نگهداری کمک می کند.برای آشنایی بهتر با فریمورک Express به سایت این فریمورک مراجعه کنید و درنهایت با تولید برنامه های خود با این ساختار بیشتر از پیش آماده یادگیری آن خواهید بود.
مطالب زیر را حتما مطالعه کنید
video streaming در nodejs
بهترین فریمورک های بک اند(Backend) در 2021
استفاده از Socket.IO در NodeJS
استفاده از دیتابیس mysql در nodejs
بهترین زبان برنامه نویسی برای گرفتن شغل
10 کاری که برای اجرای Nodejs بر روی هاست باید انجام دهید-سری دوم
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
در رابطه با پردازش سنگین پردازنده که بهش اشاره داشتید که نود جی اس اونجا توصیه نمیشه مگه کتابخانه Cluster مسئله پردازش رو حل نمیکنه و اگر حل نمیکنه دلیلش رو به من بگید با تشکر و آرزوی موفقیت
سلام و درود
اجرا یک فرآیند توسط یک ترد و یک هسته انجام میشه. از طرفی فقط فرآیندهای I/O یه صورت موازی و async اجرا میشن و نه کد پس به مراتب داشتن برنامه ای با بار پردازشی بالا میتونه مشکل ایجاد کنه cluster میتونه این مورد رو برطرف کنه اما به شدت وابسته به سخت افزار هست.