فرض کنید وارد یک فروشگاه شدهاید که صاحب آن هیچ حرفی نمیزند. درواقع او درگیر لال بودن مادرزادی است و اصلا نمیتواند سوالی از شما یا دیگران بپرسد. قبل از پیدایش Node.js، چنین رویکردی در فضای اینترنت، بین مرورگر (مشتری) و سرور (صاحب فروشگاه) وجود داشت.
Node.js آمد تا ما بتوانیم هر کاری را بهراحتی در اینترنت انجام دهیم. حقیقت این است که داشتن بسیاری از قابلیتهای سایت، فروشگاه اینترنتی و پلتفرمهای آنلاین را مدیون حضور این پلتفرم هستیم.
پس بیایید با یکدیگر به درون جواب «Nodejs چیست» شیرجه بزنیم و اینبار کمی درباره کاربردهای Node.js، مزایا، معایب و چرایی استفاده از آن را یاد بگیریم.
Nodejs چیست؟
Node.js یک محیط Runtime جاوااسکریپت، متن باز و چندپلتفرمی است که به توسعهدهندگان اجازه میدهد کدهای جاوااسکریپت را خارج از مرورگر وب و در سمت سرور اجرا کنند.
Node.js که روی موتور جاوااسکریپت V8 کروم ساخته شده است، توسعه برنامههای سمت سرور را ممکن و ساده میکند. قابلیتی که کمبود آن، بهشدت توسط توسعهدهندگان Front-end احساس میشد.
این پلتفرم جاوااسکریپت را قادر میسازد تا هم برای توسعه Front-end و هم برای ساخت برنامههای Back-end استفاده شود. Node.js الگوی محبوب و مشهور “JavaScript Everywhere” را ترویج میکند.
Node.js در سال ۲۰۰۹ معرفی شد و به هیچ پلتفرم و مرورگری برای اجرای کدهای جاوااسکریپت وابسته و محدود نیست. واژه “Cross-platform” بهدلیل استفاده از Node.js در انواع سیستمعاملهای ویندوز، مک و توزیعهای گوناگون لینوکس به این پلتفرم اطلاق شد.
بیشتر بخوانید: هاست NodeJS چیست؟ + نصب نود جی اس روی هاست
عناصر اساسی معماری Node.js
درک عملکرد و جریان عناصر اساسی در معماری ماژولار Node.js بسیار مهم است. این عناصر ششگانه موفقیت برنامههای ساختهشده را براساس معماری Node.js هدایت میکنند.
1. درخواستها
درخواستها (Requests) در یک وب سرور، بستهبه وظایف خاصی که کاربران قصد انجام آن را دارند، میتوانند به دو دسته مسدودکننده (پیچیده) یا غیرمسدودکننده (ساده) طبقهبندی شوند.
2. سرور Node.js
سرور بهعنوان پایه و اساس معماری Node.js عمل میکند و در نقش یک پلتفرم سمت سرور ظاهر میشود. سرور Node.js نهتنها درخواستهای کاربران را میپذیرد، بلکه آنها را با دقت پردازش و پاسخهای مربوطه را ارائه میکند.
3. صف رویداد
“Event Queue” در سرور Node.js بهعنوان مکانیزم ذخیرهسازی برای درخواستهای ورودی کلاینت عمل میکند. سرور Node.js این درخواستها را یکییکی به حلقه رویداد برای پردازش بیشتر ارسال میکند.
4. حلقه رویداد
نشاندهنده یک حلقه بیپایان است که بهطور دائمی درخواستها را از صف رویداد دریافت میکند. پس از دریافت، هر درخواست را پردازش کرده و پاسخهای مناسب را به کلاینتها برمیگرداند.
این حلقه شامل شش مرحله مجزا است:
- تایمرها
- صدا زدن سرور توسط تجهیزات ورودی و خروجی
- انتظار/آمادهسازی
- نظرسنجی ورودی/خروجی
- تنظیم تماسهای فوری
- رویدادهای بستن ارتباط
این شش مرحله تا زمانی که اجرای کد کامل شود، تکرار میشوند.
5. Thread Pool
Thread Pool، یکی از اجزای حیاتی معماری باطن Node.js، Threadهایی را در خود جای میدهد که مسئولیت اجرای وظایف لازم برای پردازش درخواستهای کلاینت را بهطور موثر انجام میدهند.
6. منابع خارجی
منابع خارجی نقش مهمی در مدیریت مسدود کردن درخواستهای کلاینت دارند. آنها بهطورخاص برای مدیریت درخواستهای مسدودسازی متعدد مانند ذخیرهسازی دادهها و محاسبات، بدون ایجاد اختلال در عملکرد کلی سیستم طراحی شدهاند.
بیشتر بخوانید: معرفی بهترین نرم افزار امنیتی سرور در سال 2024
Node.js چه کاربردی دارد؟
این پلتفرم با ایجاد ارتباط دوطرفه بین مرورگر و سرور، امکان مشاهده تغییرات آنی را برای توسعهدهندگان فراهم میکند. پس بیایید کاربردهای Node.js را موشکافی کنیم تا به قابلیتها و قدرت این پلتفرم چندمنظوره پی ببریم.
1. وبسرورها و APIها
بهطورمعمول Node.js برای ساخت وب سرور و API استفاده میشود. مدل I/O غیرمسدودکننده (Non-blocking I/O Model) این پلتفرم به آن اجازه میدهد تا چند اتصال را بهشکل همزمان مدیریت کند. فریمورکهای محبوب Node.js مانند Express.js تعریف مسیرها، رسیدگی به درخواستهای HTTP و تنظیم منطق سمت سرور را برای وباپلیکیشنها و APIها آسان میکند.
2. سایتهای تکصفحهای (SPA) و پویا
Node.js برای ساخت بکاند اپلیکیشنها و سایتهای تکصفحهای (Single-Page Applications) مناسب است. ماهیت غیرهمزمان و توانایی مدیریت بارهای کاری سنگین I/O، از SPAهای ساختهشده با Node.js نسخهای سریعتر و کارآمدتر ساخته است. فریمورکهای Front-end محبوب مانند React، Angular و Vue.js اغلب با Node.js برای توسعه Back-end جفت و سازگار میشوند.
البتهکه این پلتفرم برای توسعه برنامههای آنلاین پویا هم مناسب است؛ سرویس جیمیل گوگل و توییتر دو نمونه بارز از سرویسهای SPA و درعینحال پویا هستند.
3. اپلیکیشنهای بلادرنگ
معماری رویدادمحور Node.js و پشتیبانیاز WebSockets، آن را به انتخابی عالی برای ساخت برنامههای بلادرنگ مانند پیامرسان، بازیهای آنلاین و ابزارهای مشارکتی تبدیل کرده است. کتابخانههایی مانند Socket.IO، توسعه سریع ویژگیهای بلادرنگ را امکانپذیر میکنند.
4. ابزارهای مشارکتی
ابزارهای مشارکتی مانند Trello یا Google Docs به همگامسازی بلادرنگ دادهها در بین کاربران نیاز دارند. Node.js با توانایی مدیریت چند اتصال بهطور همزمان، برای توسعه چنین برنامههایی مناسب است.
5. اپلیکیشنهای استریم
API استریم Node.js به آن اجازه میدهد تا بهطور کارآمد، استریم دادهها را در زمان واقعی و لحظه کنونی مدیریت کند. این ویژگی برای ساخت برنامههای پخش استریم، مانند تلویزیون و رادیوی اینترنتی ضروری است. دلیل اهمیت این ویژگی در پلتفرمهای استریم، همگامسازی سریع دادهها بین سرور و کلاینت است تا تجربه کاربری مناسبی رقم بخورد.
6. میکروسرویسها، اینترنت اشیا و چتباتها
Node.js بهخوبی در معماری میکروسرویسها ادغام میشود و با انواع هاست ابری سازگار است. توانایی این پلتفرم در پردازش و ذخیره مقادیر زیادی داده، آن را برای برنامههای IoT با حجم عظیمی از دادههای بلادرنگ دریافتشده از دستگاههای متصل، به گزینهای ایدهآل تبدیل میکند.
این پلتفرم مانند یک کوه قرص و استوار، در سناریوهایی که نیاز به تاخیر کم و قابلیتهای فشرده داده بالایی دارند، ایستاده است. تجربه مکالمهای روان و سریع در رباتهای گفتوگو بههمراه ساده کردن پردازش دادهها در زمان واقعی و ارتباطات تعاملی، از آن یک گزینه محبوب برای توسعه چتبات ساخته است.
7. ابزارهای خط فرمان
Node.js را میتوان برای ساخت ابزارها و ابزارهای خط فرمان استفاده کرد. اکوسیستم بزرگ بسته های آن که از طریق npm در دسترس است، افزودن عملکرد و به اشتراک گذاری کد را آسان می کند.
8. پردازش و تحلیل دادهها
Node.js در پردازش دادهها و وظایف تجزیهوتحلیل عملکرد بسیار موثری دارد. توانایی آن در مدیریت حجم زیادی از دادهها در زمان واقعی، آن را برای برنامههایی که نیاز به پردازش و آنالیز استریم داده دارند، مناسب میکند. دو نمونه از این پلتفرمها، ابزارها و سایتهای مالی و اپلیکیشنهای Big Data هستند.
9. برنامههای سازمانی
با توجه به مقیاسپذیری و عملکرد، Node.js بهطور فزایندهای در برنامههای کاربردی سازمانی مورد استفاده قرار میگیرد. سازگاری آن با سیستمهای مختلف پایگاه داده و توانایی بالا در مدیریت منطق تجاری پیچیده، آن را برای سیستمهای سازمانی مناسب میکند.
مزایا و معایب Node.js
Node.js در کنار مزایای خود، معایبی هم دارد که باید همزمان به آنها توجه کنیم. بنابراین این نقاط قوت و ضعف را در ادامه لیست کردهایم.
مزایای Node.js
- پاسخگوی تعداد زیادی کاربر و سرعت بالا
- پایین بودن زمان پاسخدهی
- خطایابی ساده و سریع
- جامعه کاربری بزرگ و وسیع
- متن باز
- سازگاری با سیستمعاملهای مختلف اعم از مک، ویندوز و انواع توزیعهای لینوکس
- پشتیبانیاز Caching
معایب Node.js
- وابستگی شدید هر برنامه به توسعهدهنده خودش
- عدم پشتیبانی کامل توسط بیشتر هاستهای اشتراکی
- معماری تکرشتهای و کاهش عملکرد CPU در پردازش کارهای فشرده و محاسبات سنگین
- پیچیدگی برنامهنویسی ناهمزمان و یادگیری دشوار برای تازهواردان
- کیفیت پایین برخی از npmها
- APIهای ناپایدار و نیاز به بهروزرسانیهای مکرر
- قرار گرفتن در معرض مسائل امنیتی مختلف ازجمله حملات تزریقی و اسکریپتهای متقابل سایت (XSS)
دیتابیسهای محبوب Node.js میان توسعهدهندگان
دیتابیس یا پایگاه داده ، محلی مجازی است که میتوانید دادهها و اطلاعاتتان را در آن ذخیره کنید. کدهای جاوایی که توسط توسعهدهندگان در محیط Node.js نوشته میشوند هم نیازمند دیتابیس هستند.
MongoDB محبوبترین انتخاب میان توسعهدهندگان مختلف این پلتفرم است. در کنار این پایگاه داده، دیتابیسهای زیر هم بیشترین تطبیق و سازگاری را با Node.js دارند:
چرا باید از node.js استفاده کنیم؟
این فناوری قادربه حل وظایف مختلف تجاری و بیزینسی – از کاهش زمان توسعه تا بهبود تجربه کاربری – است. بااینحال، دلایل بیشتری برای انتخاب و استفاده از Node.js وجود دارد که در این بخش به آنها خواهیم پرداخت.
1. قابلیت استفاده
Node.js درست زمانی بهکار میرود که نیازی به اختراع مجدد چرخ نیست. درنتیجه، سرعت توسعه افزایش مییابد و کد کمتری هم ایجاد میشود. علاوهبراین، چرخه توسعه وباپلیکیشنهای Node.js را میتوان با کمک ابزارها و فناوریهای موجود در Node Package Manager (NPM) بهتر از هر حالت دیگری بهینه کرد.
2. روند توسعه سریعتر
طبق اظهار اکانت PayPal در شبکه مدیوم، Node.js در مقایسه با رقیب نزدیک خود، یعنی جاوا بهعنوان یک فناوری بکاند مزایای بیشتری دارد:
- دو برابر زمان کمتر برای توسعه عملکردهای یکسان
- 33٪ خطوط کمتر در کدهای نهایی
- 40 درصد فایل کمتر
3. اکوسیستم غنی حاوی کتابخانهها و ابزارهای متعدد
بیشاز یک میلیون پکیج در رجیستری npm، حدود 42 هزار پکیج عمومی و بیشاز 10 هزار پکیج جدید با انتشار هفتگی، از Node.js یک اکوسیستم بسیار غنی ساخته است.
طبق اظهار وبسایت altexsoft، همین آمار نشان میدهد که 97 درصد از وباپلیکیشنهای مدرن، از ماژولهای npm تشکیل شدهاند.
با چنین تنوع گستردهای از ابزارهای رایگان که فقط با چند کلیک امکان استفاده دارند و منبع باز بودن این پلتفرم، امکان ساخت راهحلهای جدید را دارید. این راهحلها با مزایایی مانند کاهش هزینههای کلی توسعه و زمان عرضه به بازار همراه هستند.
4. زمینی مقیاسپذیر برای میکروسرویسها
ازآنجاییکه این یک ابزار فناوری سبکوزنی است، برای معماری میکروسرویسها یک انتخاب عالی بهنظر میرسد. این سبک معماری توسط مارتین فاولر (Martin Fowler) و جیمز لوئیس (James Lewis) به بهترین شکل توصیف شده است: «رویکردی برای توسعه یک اپلیکیشن واحد بهعنوان مجموعهای از خدمات کوچک، که هرکدام در فرآیند خاص خود اجرا میشوند و با مکانیسمهای سبک – اغلب یک API منبع HTTP – ارتباط برقرار میکنند».
بر این اساس، امکان شکستن منطق برنامه به ماژولهای کوچکتر بهسادگی فراهم است. در این حالت، میکروسرویسها بهجای ایجاد یک هسته یکپارچه بزرگ، انعطافپذیری بهتری از خود نشان میدهند. درنتیجه، اضافه کردن میکروسرویسهای بیشتر به سرویسهای موجود بسیار سادهتر از ادغام ویژگیهای اضافی به عملکرد اصلی برنامه است.
5. پشتیبانی یکپارچه JSON
اگرچه سایر فناوریهای بکاند مانند PHP و Ruby on Rails میتوانند از فرمت JSON برای ارتباط استفاده کنند، اما Node.js این کار را بدون تبدیل بین مدلهای باینری انجام میدهد. Node.js از جاوااسکریپت برای یکپارچهسازی فرآیند اجرای برنامهها با JSON استفاده میکند.
این موضوع زمانی مهمتر و مفیدتر میشود که شما نیاز به ساخت APIهای RESTful برای پشتیبانی از پایگاه داده NoSQL، مانند MongoDB دارید.
6. جامعه توسعهدهندگان بزرگ و منحنی یادگیری ملایم
در سال 2022، Node.js به رایجترین فناوری مهندسی وب تبدیل شد. در آن زمان، 42.12 درصد از پاسخدهندگان نظرسنجی توسعهدهندگان StackOverflow تایید کردند که از آن استفاده میکنند یا در حال یادگیریاش هستند. محبوبترین فریمورک Node.js هم Express است.
7. پشته فناوری قوی
جاوااسکریپت ثابت کرده است که در میان محبوبترین زبانهای برنامهنویسی، یک رهبر بیچونوچرا است. واضح است که نام Node.js هم در کنار این زبان برنامهنویسی میدرخشد. با استناد به گزارش W3Techs، این پلتفرم توسط 2.1 درصد از کل وبسایتهای اینترنت استفاده میشود؛ چیزی در حدود حداقل 30 میلیون وبسایت.
با استفاده از Node.js برای بکاند، شما بهطور خودکار از تمام مزایای توسعه برنامه با جاوااسکریپت بهرهمند میشوید؛ ازجمله:
- بهرهوری بهتر و کلی توسعهدهندگان
- بهاشتراکگذاری کد و استفاده مجدد از آن توسط سایر برنامهنویسان
- سرعت و عملکرد بالا
- ابزارهای رایگان زیاد
تمام این مزایا به یک چیز ختم میشوند: با زبان یکسان در بخشهای فرانتاند و بکاند، میتوانید با قرار دادن برنامههای Node.js در ماژولها و ایجاد سطوح جدیدی از انتزاع، از کدتان در هر دو بخش استفاده مجدد کنید.
8. مانیتورینگ بلادرنگ
یک ارائهدهنده SaaS را تصور کنید که میخواهد صفحه نظارت بر خدمات خودش را، مانند صفحه وضعیت GitHub به کاربرانش ارائه دهد. با حلقه رویداد Node.js، میتوانیم یک داشبورد قدرتمند مبتنیبر وب ایجاد کنیم که وضعیت سرویسها را بهصورت ناهمزمان بررسی و دادهها را با استفاده از WebSocket به کلاینتها ارسال میکند.
هم وضعیت خدمات داخلی و هم خدمات عمومی سازمان را هم میتوان با استفاده از این فناوری، بهصورت زنده و بلادرنگ گزارش کرد. ازآنجاییکه برنامههای Node.js روی Open Web Stack این پلتفرم در کنار WebSocket اجرا میشوند، میتوانیم نظارتبر برنامههای اپراتورهای مخابراتی، خدمات ابری، شرکتهای هاستینگ یا برخی از موسسات مالی را ممکن کنیم.
مشهورترین شرکتهای استفادهکننده از Node.js
ویژگیها و قابلیتهای قوی Node.js تعداد زیادی از شرکتها و استارتآپهای مطرح را به خود جذب کرده است. بسیاری از سایتهای محبوبی که روزانه استفاده میکنیم، با استفاده از Node.js ساخته شدهاند. پس در ادامه با این شرکتها آشنا میشویم.
1. پیپال
پیپال، یک سیستم پرداخت آنلاین جهانی، توسعه یکاند خود را از جاوا به جاوااسکریپت و Node.js منتقل کرده است. پیشازاین، تیمهای مهندسی در این شرکت به دو دسته تقسیم شده بودند: 1) کدنویسانی برای وباپلیکیشن و اجرای آن روی مرورگر و 2) متخصصانی که برای لایه برنامه کدنویسی میکردند.
این شیوه چالشها و موانعی را برای تیم توسعهدهنده PayPal ساخت. سپس مهندسان Full-stack به کمک این تیمها آمدند؛ اما همچنان مدل کارآمدی حاصل نشد.
درنهایت این کمپانی مشهور، با پذیرش Node.js مشکلاتش را حل کرد؛ چون با Node.js امکان نوشتن برنامهها را هم در فرانتاند و هم در بکاند، آن هم با یک زبان واحد – یعنی جاوااسکریپت – داشتند. درنتیجه، تیم PayPal توانست بهشکل یکپارچه مشکلات را در هر دو بخش برنامهها درک کند و به نیازهای مشتریان بهشکل موثری واکنش نشان دهد.
2. لینکدین
لینکدین، بزرگترین شبکه اجتماعی برای متخصصان، مدیران کسبوکارها و اشتغال در جهان، به Node.js اعتماد کرد. طبق اظهار وبسایت netguru، این کمپانی محبوب سال 2023 بخش بکاند اپلیکیشن موبایل خود را از Ruby on Rails به Node.js منتقل کرد.
اگرچه در آن زمان هنوز اپلیکیشن لینکدین محیطی بسیار نابالغ بود، اما ثابت شد که یک حرکت هوشمندانه برای شرکت رقم خورده است. برنامه جدید دو تا ده برابر سریعتر از نسخه قبلی خود بود. همچنین بسیار سبک بود که توانست توسعه بسیار سریعی را برای توسعهدهندگان لینکدین رقم بزند.
3. ناسا
بله، درست است. ناسا هم از Node.js استفاده میکند. تکنولوژی امروزه اهمیت بسیار بیشتری نسبتبه سایر حوزهها پیدا کرده است؛ چون جان انسانها را نجات میدهد و فضانوردان را در طول سفرهای فضایی خطرناک خود، ایمن نگه میدارد.
در سال 2014 اتفاق ناگواری برای یکی از فضانوردان ایتالیایی ناسا، آقای “Luca Parmitano” افتاد. این حادثه نادر بهدلیل عدم ارسال اطلاعات قبلی به مرکز فرماندهی ماموریت، درباره نشت آب در این ایستگاه رخ داد. آقای لوکا در این اتفاق ناگوار و دلخراش، درگیر پر شدن کلاه فضانوردی خود با آب و گرفتگی راه تنفسش از بینی و دهان شد.
ناسا پساز این حادثه با چالش جدیدی مواجه شد: انتقال دادههای مربوطبه لباسهای فضایی EVA به یک پایگاه داده ابری برای کاهش زمان دسترسی.
با استقرار سیستم جدید مبتنیبر Node.js، تعداد مراحل این فرآیند از 28 به 7 کاهش داده شد.
4. یاهو
تیم فرانتاند یاهو برای مدت طولانی از Node.js در تولید صفحات، برای ارائه آنها در اینترنت استفاده میکند. بسیاری از محصولات جدید آنها Single-Page-Applications یا سایتهای محتوایی، با Node.js ساخته شدهاند.
این کمپانی در هر ثانیه حدود 25 هزار درخواست را از سرورهای Node.js ارسال میکند. این میزان پردازش و ارسال مهر تاییدی بر مقیاسپذیری فریمورکهای جاوااسکریپت کارآمدی بسیار بالای آنها است.
Eric Ferraiuolo، مهندس نرمافزار اصلی یاهو میگوید: «هر Property که به پشته Node.js منتقل کردهاند، افزایش عملکرد خوبی داشته است.»
5. والمارت
والمارت، غول پیشرو سوپرمارکتهای دنیا، میخواست وبسایت تجارت الکترونیکی خود را برای عملکرد بهتر و درعینحال افزایش چابکی برای تیمهای توزیعشده، بهینه کند.
وبسایت تجارت الکترونیک و اپلیکیشن موبایل والمارت در یک ماه نزدیک به 80 میلیون کاربر را جذب میکند. بهطورحتم، این میزان کاربر به سیستمی قوی برای رسیدگی به بسیاری از درخواستها نیاز دارد.
حوزههایی که برای این کمپانی حیاتی بودند شامل سرعت بارگذاری بیشتر، بخش فرانتاند مبتنیبر HTML و تغییر معماری میکروسرویسهایی که برنامه فعلی JAVA آنها نمیتوانست پشتیبانی کند.
والمارت با کوچ کردن به Node.js توانست از مزایای این پلتفرم بهره ببرد؛ مزایایی مانند ماژولار کردن برنامه و وباپلیکیشن، بهبود فرآیند سئو و افزایش عملکرد بهینه اپلیکیشنهای موبایل که بهدلیل استفادهاز جاوا، عملکرد مطلوبی نداشتند.
6. نتفلیکس
نتفلیکس که بیشاز 277 میلیون مشترک در سراسر جهان دارد (آمار مربوطبه سپتامبر 2024)، تلاش مداومی برای بهبود سرعت بارگذاری رابط کاربری وبسایت و اپلیکیشن خود کرده است. این کمپانی تا سال 2015، از یک بکاند توسعهدادهشده با جاوا استفاده میکرد که برای مدیریت دادهها مفید بود؛ اما زمانهای انتظار برای کاربر بهطول میانجامید.
طبق اظهار وبسایت رسمی Netflix، با مهاجرت از جاوا به Node.js توانستند سرعت بارگذاری رابط کاربری را تا 70% افزایش دهند.
همچنین با استناد به ادعای وبسایت “The New Stack“، نتفلیکس توانست زمان راهاندازی 40 دقیقهای جاوا را با Node.js، به یک دقیقه کاهش دهد.
این برنامه به سمت میکروسرویس تبدیل شد، و تجزیه UI را در بخش های کوچکتر به جای یک بلوک بزرگ آسان کرد.
7. اوبر
Uber یکی از اولین پذیرندگان مقیاسپذیری Node.js در تولید محصولاتش است. این تاکسی اینترنتی دارای یک معماری توزیعشده با تعداد زیادی ماژول است که با API ارتباط برقرار میکنند. ازآنجاییکه اوبر میلیونها درخواست را در لحظه و بهصورت همزمان پردازش میکند، Node.js پلتفرمی مناسب برای آن بود.
چند کامپوننت در اپلیکیشن موبایل اوبر از Node.js برای عملیات حیاتی مانند اجرای سفر و اتصال بیشاز 600 API استفاده میکنند. اوبر درحالتغییر برخی از کامپوننتها به زبان Go است؛ اما Node.js همچنان نقش اساسی در پشته فناوری این تاکسی اینترنتی ایفا میکند.
اوبر از چند میکروسرویس تکهتکهشده برای تامین نیروی زیرساخت و رانندههای خود استفاده میکند. این میکروسرویس نیازمند پشتوانهای است که بتواند همهچیز را بههم متصل کند.
تجزیهوتحلیلهای پیشرفتهای روی حجم وسیعی از دادههای تولیدشده توسط پلتفرم، تعامل صحیح سرویسها و ایجاد سوپراپلیکیشنی قابلاعتماد، از دیگر اهداف این کمپانی بودند که با Node.js محقق شدند.
آنچه در Node.js خواندیم
Node.js پلتفرمی است که میتوان در آن برای سمت مقابل مرورگرها، یعنی سرورها، کدهای جاوااسکریپت نوشت. تا پیش از عرضه این پلتفرم، امکان انجام این کار وجود نداشت. مزایای فوقالعاده Node.js مانند سازگاری با انواع سیستمعاملهای ویندوز، مک و لینوکس، منجربه محبوبیت روزافزون آن شده است. است. مزایای دیگری مثل سازگاری بالا با NoSQL، Redis، امکان مانیتورینگ بلادرنگ و غیره هم در این لیست گنجانده میشوند. البتهکه باید معایب Node.js را هم هنگام انتخاب آن در نظر بگیریم؛ منحنی یادگیری تند، کیفیت پایین برخی از npmها و ناپایداری APIها، ازجمله معایب این پلتفرم هستند.
سوالات متداولی که شما میپرسید؟
- Node.js چیست؟
محیط اجرای جاوااسکریپت که امکان توسعه برنامهها را هم در بخش فرانتاند و هم در بخش بکاند فراهم میکند.
- از Node.js برای چه کارهایی استفاده میکنند؟
توسعه بکاند و فرانتاند وباپلیکیشن، ساخت ابزارهای مشارکتی و توسعه پلتفرمهای استریم داده، بهترین زمینهها برای بهکارگیری Node.js هستند.
- Node.js در کدام پلتفرمها استفاده میشود؟
اوبر، لینکدین و نتفلیکس، از مشهورترین پلتفرمهایی هستند که از Node.js استفاده میکنند.
- مزایای Node.js چیست؟
پشته فناوری قوی، امکان تحلیل دادههای بزرگ و پشتیبانی یکپارچه از JSON، از مزایای Node.js هستند.
- معایب Node.js چیست؟
وابستگی شدید هر برنامه به توسعهدهنده خودش، APIهای ناپایدار و نیاز به بهروزرسانیهای مکرر
و کیفیت پایین برخی از npmها از معایب Node.js هستند.
منابع:
4 دیدگاه. دیدگاه تازه ای بنویسید
سلام استاد
بنده درباره یک مسئله ای نزدیک به یک هفته تحقیق کرم ولی به نتیجه ای نرسیدم. ممنون میشم اگه کمکم کنید:
1- من میخوام یک سایت شبیه وبسایت آپارات ( وبسایت اشتراک ویدئو و استریم زنده ) طراحی کنم. با توجه به میزان بازدید بالا – حجم ویدئو ها و غیره: به نظر شما از node.js استفاده کنم یا php ؟ برای همچین سایتی درحال حاظر از چه زبانی استفاده کنم؟
2- حالا اگه باز بخوام یه سیستم چت سطح متوسط هم به سایت اضافه کنم چطور؟ حالا از چه زبانی استفاده کنم؟
3- یک وبسایت در سروری با رم 4 گیگابایتی و پردازنده 2 هسته ؛ با php و node.js هر کدوم چندتا کاربر میتونن همزمان در سایت کانکشن برقرار کنن و یا آنلاین باشن؟
4- اگر از php استفاده کنم و در کنارش از وب سرور Nginx هم داشته باشم ؛ میشه جای node.js رو پر کنم؟
5- نظر شما به طور کلی در این باره چیه؟
با تشکر ار شما استاد.
سلام
لطفا تیکتی به بخش فروش ارسال نمایید تا همکارانم بطور دقیق شما را راهنمایی کنند.
سلام.
ممنون از خانم بهاره.
علی آقا: مدل تعامل php با کلاینتهاش، مدل blocking i/o ه. بهاین معنی که (بنا به تئوری) هر کانکشن، تو یه Thread جدا با سرور ارتباط داره. Thread هم درگیری CPU داره و هم اشغال حافظه، بهعلاوهی اینکه ذاتا محدودیت هم از حیث شمار Thread های قابل اجرا در یک سیستمعامل هم وجود داره. درست مثل اینکه انگار تنها مخاطب یه سرور php، همون یک کلاینته. خوب این اقتضا میکنه که سرور شما از منابع کافی سختافزاری/نرمافزاری برخوردار باشه، اگه تراکنشهای بالایی داریی.
در نقطهی مقابل، فریمورکهایی مثل express، که روی NodeJS سوار میشن وجود دارند که روال Asynchronous I/O رو در قبال کلاینتها دارند. به این معنی که الزامی در Run کردن Thread بهازای هر Connection ندارند. عمدهی کارایی این فریمورکها هم تو شرایطییه که انبوهی از کلاینتها بخواهند با سرور ارتباط بگیرند اما Requestهای مکرر با سرور نداشته باشند (مثل سرورهای بازی). اگه ترافیک بالا و request های نهچندان بالا (مثل همین سروری که میخوای پیاده سازی کنی) داری، پیشنهاد میکنم سراغ Async ها بری (مثل express).
در ضمن به نظرم بهجای اینکه آپارات بعدی باشی، سعی کن bestshow.co بعدی باشی! آپارات هم بهترین کد دنیا رو نداره.
سلام مرتضی جان
یک دنیا ممنونیم از شما که وقت گذاشتین و به خوبی این موارد رو توضیح دادید.
به وجود مخاطبانی مثل شما افتخار میکنیم.