به دلیل مقیاس پذیری، قابلیت اطمینان و پایداری، nodejs بهترین انتخاب برای برنامههای خدمات مالی، تجارت الکترونیکی، استریم، شبکه و اینترنت اشیا است.
nodejs اولین بار در سال 2009 معرفی شد و این روز به نقطه عطفی در زندگی جامعه جاوااسکریپت تبدیل شد. این رویا به واقعیت پیوست و جاوااسکریپت از یک زبان توسعه کاملا فرانت-اند به فول استک تبدیل شد. نود جی اس اولین قدم در جهت پیاده سازی جاوااسکریپت Isomorphic است که به آن جاوااسکریپت جهانی نیز گفته میشود.
امروزه از جاوااسکریپت میتوان برای توسعه هر نوع برنامه، به طور جزئی یا بخش به بخش استفاده کرد. قسمت انتهایی برنامههای جاوااسکریپت بیشتر در nodejs نوشته شده است. مواردی وجود دارد که توسعه برنامه nodejs کاملا منطبق با نیازهای پروژه است و مواردی که انتخاب آن چندان مناسب نیست. در این مقاله، نگاهی خواهیم انداخت به پنج نوع برنامه اصلی که میتوانید با کمک nodejs و چند نمونه از برنامههای واقعی ایجاد کنید.
برنامههای خدمات مالی
اولین نیاز برای هر برنامه مالی قابلیت اطمینان است. کاربر باید اطمینان داشته باشد که به محض ارائه برخی اطلاعات شخصی یا مالی به سیستم، به هیچ وجه نتوان آن را خدشه دار یا از آن سوءاستفاده کرد و یا حتی به سرقت برد. خوشبختانه قابلیت اطمینان و ایمنی داده چیزی است که nodejs ارائه میدهد. nodejs متن باز است، به این معنی که با بروز هرگونه خطا یا شکافی که ممکن است بر یکپارچگی دادههای کاربر تأثیر بگذارد، انجمن توسعه دهندگان به یک باره آنها را برطرف میکند.
در میان مشهورترین نمونه برنامههای ارائه خدمات مالی، PayPal وجود دارد.
PayPal
تعداد کاربران فعال: 325 میلیون نفر
سال انتشار: 1998
کشور توسعه دهنده: ایالات متحده آمریکا (پالوآلتو، کالیفرنیا)
PayPal هر روز به حدود 200،000،000 کاربر خدمات ارائه میدهد و این کار را یکپارچه انجام میدهد. این موفقیت شماره یک مدل غیر مسدود کننده nodejs است. با این وجود، بارگذاری زیاد دادهها تنها مشکلی نیست که nodejs به تیم PayPal کمک کرد تا آن را حل کند. در ابتدا، این پلتفرم با HTML ، CSS و JavaScript از سمت سرویس گیرنده و Java از سمت سرور ساخته شده است. دو تیم مختلف در قسمت فرانت-اند و بک-اند همکاری کردند که روند رشد را به شدت کند و پیچیده کردند. با گذشت زمان، این مسئله به یک مشکل آزار دهنده تبدیل شد، بنابراین این شرکت به دنبال گزینههای دیگری بود. پس از مدتی صرف تحقیق و نمونه سازی، آنها تصمیم گرفتند nodejs را امتحان کنند. آنها با ایجاد یک صفحه در nodejs شروع کردند، اما برای اجرا در یک قسمت امن، آنها همزمان این برنامه را در جاوا توسعه دادند. اگر مشکلی در برنامه Node رخ دهد، آنها یک طرح پشتیبان تهیه میکنند. بعدا این شرکت اعتراف کرد که اولین برنامه nodejs آنها 2 برابر سریعتر از برنامه مشابه Java نوشته شده است. از 40٪ فایل کمتر و 33٪ کد کمتر ساخته شده است.
تا آنجا که به عملکرد مربوط میشود، تیم PayPal آن را با نمودار زیر نشان داده است:
میانگین زمان پاسخگویی در nodejs حدود 35٪ کمتر از Java است و Node دو برابر بیشتر به درخواستها رسیدگی میکند.
طبق وبلاگ مهندسی پی پال:
"nodejs با امکان نوشتن برنامههای مرورگر و سرور در جاوااسکریپت به ما در حل این مسئله کمک میکند. این تخصص مهندسی ما را در یک تیم متحد میکند که به ما امکان میدهد نیازهای کاربران خود را در هر سطح از مجموعه فناوری درک کنیم و به آن واکنش نشان دهیم."
بنابراین nodejs به عنوان جلیقه نجاتی برای تیم PayPal تبدیل شده است، زیرا به آنها بهرهوری از توسعه، سرعت، راحتی و عملکرد بهتر را میبخشد.
برنامههای تجارت الکترونیک
برنامههای تجارت الکترونیکی باید پایدار باشند، آنها باید در برابر بار سنگین دادهها ایستادگی کنند. مانند زمانهایی که چندین کاربر در صفحات خود جستجو میکنند، سفارش میدهند یا پرداخت میکنند. nodejs به دلیل مدل ورودی / خروجی غیر مسدود کننده مبتنی بر رویداد، برای برنامههای بزرگ با چندین درخواست همزمان بسیار مناسب است. در میان معروفترین مثالهای برنامه تجارت الکترونیک eBay و Groupon وجود دارند.
eBay
تعداد کاربران فعال: 182 میلیون نفر
سال انتشار: 1995
کشور توسعه دهنده: ایالات متحده آمریکا (سان خوزه، کالیفرنیا)
در اصل eBay توسط فناوری مبتنی بر جاوا ساخته شده و کل گردش کار حول Java و JVM بود. به نظر میرسید این فناوری به دلیل بار سنگین اطلاعاتی که سیستم مجبور به تحمل آن است، یک انتخاب آشکار است. از این گذشته، برای دستیابی به ثبات و قابلیت اطمینان بهترین تصمیم این است که با یک فناوری تست شده و قابل اعتماد کار کنید. با این حال با محبوبیت بیشتر این تجارت، eBay مجبور شد پلتفرم خود را مقیاس بندی کند و مقیاس پذیری نقطه قوت جاوا نیست. این زمانی است که شرکت شروع به کاوش در nodejs کرد. آنها nodejs را به سه دلیل اساسی انتخاب کردند: چابکی توسعه دهنده، مقیاس پذیری سیستم و عملکرد برنامه.
به گفته Senthil Padmanabhan، معاون رئیس جمهور، همکار در eBay:
"ما دو نیاز اصلی برای پروژه داشتیم. اولین کار این بود که برنامه را تا حد ممکن به صورت real-time انجام دهیم. یعنی ارتباطات زنده را با سرور حفظ کنیم. دوم این بود که تعداد زیادی از سرویسهای خاص eBay را که اطلاعات را در صفحه نمایش میدهند، ترتیب دهیم. یعنی عملیات ورودی / خروجی را انجام دهیم با frontend stack که در nodejs اجرا میشود."
به نظر میرسد eBay هرگز رشد خود را متوقف نکرده است و nodejs در رشدی بی وقفه به eBay کمک میکند. تعداد زیادی از برنامهها از مقیاس پذیری nodejs لذت میبرند.
Groupon
تعداد کاربران فعال: 43.6 میلیون نفر
سال انتشار: 2008
کشور توسعه دهنده: ایالات متحده آمریکا (شیکاگو، ایلینویز)
در اکتبر 2013، تیم مهندسی گروپون گزارش داد که آنها تمام ترافیک وب خود را از یک برنامه قدیمی Ruby on Rails به یک برنامه وب جدید Node JS منتقل کردهاند. هنگامی که تیم تصمیم به بازنویسی برنامه وب و انتقال آن به یک معماری سرویس گرا را گرفت، آنها سه گزینه پایتون، پی اچ پی و نود را پیش رو داشتند. پس از برخی تحقیقات عمیق، تصمیم گرفتند که nodejs را به دلیل داشتن جامعه پر جنب و جوش، مقیاس پذیری آسان، عملکرد قدرتمند و NPM (مدیر بسته nodejs) انتخاب کنند.
طبق گفته شان مک کالو در مهندسی گروپون:
"گروپون یکی از بزرگترین استقرارهای تولید nodejs در سراسر جهان خواهد بود. ما در حال حاضر با سرعت rpm 50،000 در حال خدمت رسانی هستیم و زمان کلی پاسخ ما به طرز چشمگیری کاهش یافته است."
ظاهرا برای تیم گروپون، nodejs فرصتی برای احیای برنامه آنها، بهبود عملکرد آن و پیوستن به یک انجمن زنده از توسعه دهندگان و اعضای پشتیبانی nodejs شد.
برنامههای استریم (پخش آنلاین)
استریم به سرعت در حال تبدیل شدن به یکی از سودآورترین شاخههای صنعت سرگرمی است. مانند برنامههای تجارت الکترونیکی، این سیستمعاملها باید بتوانند از پس دادههای سنگین و چندین درخواست همزمان برآیند. خوشبختانه nodejs برای نجات اینجاست.
Netflix محبوبترین و پر استفادهترین پلتفرم استریم در جهان است که با nodejs ساخته شده.
Netflix
تعداد کاربران فعال: 182 میلیون نفر
سال انتشار: 1997
کشور توسعه دهنده: ایالات متحده آمریکا (اسکاتس، کالیفرنیا)
در ابتدا نتفلیکس با جاوا در قسمت بک-اند و جاوااسکریپت در قسمت فرانت-اند ساخته شد، اما نوشتن برنامه به دو زبان همزمان، روند توسعه را کند کرد. این شرکت ترجیح داد تا به جاوااسکریپت یونیورسال منتقل شود تا بتواند فرانت و بک آن را تحت همان زبان متحد کند و همچنین عملکرد و سرعت را بهبود بخشد. آنها برای بک-اند به nodejs و برای فرانت-اند به React روی آوردند. از این گذشته، چنین روشی به دلیل نوشتن ساده کد و عیب یابی و تعداد زیادی پکیج و ماژول متنباز، نوید این را میدهد که روند توسعه را تسهیل کند.
طبق وبلاگ فناوری نتفلیکس:
"با استفاده از Node و React، میتوانیم از سرور رندر بگیریم و متعاقبا پس از انتقال نشانه گذاری اولیه و کامپوننتهای React به مرورگر، تغییرات را کاملا روی کلاینت ارائه دهیم. این انعطاف پذیری به شما امکان میدهد تا خروجی را مستقل از محل ذخیره ارائه دهد. جدایی دیگر وجود ندارد و احتمال اینکه سرور وکلاینت متفاوت از یکدیگر باشند بسیار کمتر است."
از امروز نتفلیکس بزرگترین سرویس جریانی است که بیش از 182 میلیون نفر در سراسر جهان از آن استفاده میكنند. به طور خاص انتقال بهUniversal JS و nodejs به این شرکت اجازه داد تا نه تنها در برابر بار سنگین داده مقاومت کند، بلکه تجربه کاربری کارآمدتری را نیز فراهم آورد. همچنین به توسعه دهندگان این فرصت را داد تا هرگونه تغییر لازم را به سرعت و به راحتی انجام دهند.
برنامههای شبکه
برنامههای شبکههای اجتماعی باید قابل اعتماد و مقیاس پذیر باشند. از یک طرف آنها اطلاعات شخصی زیادی را اعم از شماره تلفن و آدرس ایمیل در بهترین حالت و اطلاعات مالی در بدترین حالت نگهداری میکنند. از طرف دیگر با بزرگتر شدن شبکه، سیستم باید بتواند گسترش یابد. nodejs فرصتی مناسب برای مقیاس پذیری افقی و عمودی ارائه میدهد. برای مقیاس بندی افقی، میتوانید گرههای جدیدی به سیستم موجود اضافه کنید. برای مقیاس گذاری عمودی، میتوانید منابع اضافی را به گرههای موجود اضافه کنید.
در میان معروفترین مثالهای برنامههای شبکهLinkedIn ، Twitter Lite، Medium و Trello به چشم میخورند.
تعداد کاربران فعال: 675 میلیون نفر
سال انتشار: 2002
کشور توسعه دهنده: ایالات متحده آمریکا (Mountain View، کالیفرنیا)
LinkedIn در ابتدا به عنوان یک سیستم مبتنی بر فرآیند Ruby on Rails ساخته شد. با گسترش شرکت و محبوبیت بیشتر پلتفرم، نیاز فوری به مقیاس پذیری برنامه ظاهر شد. بعدها مشخص شد Ruby on Rails مقیاس پذیرترین زبان نیست و تمدید پروژه به زمان و هزینه زیادی نیاز دارد. Ruby on Rails نمیتوانست عملکرد مورد نیاز LinkedIn را فراهم کند، برای ترجمه JSON بهینه نشده بود و توسعه برنامه LinkedIn تلفن همراه را پیچیده میکرد. تیم مهندسی به دنبال جایگزینی برای RoR با برخی از زبانها یا فریمورکهای رویدادی مانند EventMachine در روبی یا Twisted در پایتون بود. در نهایت آنها nodejs را انتخاب کردند.
به گفته Kiran Prasad، مدیر ارشد مهندسی تلفن همراه در لینکداین:
"در طول مسیر متوجه شدیم که Node تقریباً 20 برابر از آنچه ما استفاده میکردیم، سریعتر است و استفاده از حافظه آن نیز کمتر است. بدیهی است که nodejs مزایای دیگری فراتر از جنبههای فنی را نیز ارائه میدهد. جاوااسکریپت زبانی است که بسیاری از مردم از کد نویسی با آن راحت هستند."
Kiran Prasad همچنین اعتراف کرد که nodejs به دلیل سهولت و سرعت بخشیدن به روند کد نویسی، توجه او را جلب کرد. وی ادعا میکند که برای اجرای Node تنها 20 الی 100 میلی ثانیه طول میکشد و فقط 15 الی 30 ثانیه زمان برای اینکه کنسول Rails ظاهر شود، لازم است. علاوه بر این، nodejs در کل سبکتر، کم حجمتر و سریعتر است.
مهاجرت به nodejs یک تغییر عمده فنی در تیم لینکداین بود. با این حال این تغییر یک تصمیم خوبی بود. عملکرد عالی و قابلیت اطمینان پلتفرم لینکداین ثابت میکند که تیم مهندسی آن یک انتخاب عالی داشته است.
Twitter Lite
تعداد کاربران فعال توییتر: 321 میلیون نفر
سال انتشار: 2006
کشور توسعه دهنده: ایالات متحده آمریکا (سانفرانسیسکو، کالیفرنیا)
هر ماهه، دهها و صدها میلیون کاربر از نسخه تلفن همراه توییتر بازدید میکنند و با این وجود، Twitter Lite همچنان سریع و قابل اعتماد است. این شبکه انعطافپذیر است، در کمتر از 5 ثانیه روی شبکه نسل سه (3G) ارتباط میگیرد و از نظر منابع نیز کارآمد است. همچنین از 40٪ داده کمتری نسبت به قبل استفاده میکند. اخیرا Twitter Lite توسعه یافتهتر شده است، کد نویسی و استقرار تغییرات برنامه آسانتر و سریعتر است.
در واقع Twitter Lite یک PWA جاوااسکریپت در سمت کلاینت با یک سرور nodejs ساده است. سرور nodejs احراز هویت کاربر را مدیریت میکند، نمونه اولیه برنامه را میسازد، پوسته اولیه برنامه را به صورت HTML ارائه میدهد و پس از باز شدن برنامه توسط مرورگر، درخواست داده از API توییتر را انجام میدهد.
به گفته نیکلاس گالاگر مهندس توییتر:
"سادگی این معماری اساسا به ما کمک کرده است که قابلیت اطمینان و کارایی استثنایی خدمات را در مقیاس بزرگتری ارائه دهیم. همچنین اجرای Twitter Lite با هزینه کمتری در وبسایت به نسبت دسکتاپ توسط سرورهای ما ارائه شده."
nodejs به توییتر کمک کرد تا برنامه تلفن همراه خود را به سطح کاملا جدیدی برساند. عملکرد قدرتمند و یکپارچه آن تجربه کاربر را تا حد زیادی بهبود میبخشد. در همین حال، راحتی ابزارهای nodejs توسعه را بسیار تسهیل میکند.
Trello
تعداد کاربران فعال: 25 میلیون نفر
سال انتشار: 2011
کشور توسعه دهنده: ایالات متحده آمریکا (شهر نیویورک، نیویورک)
قسمت بک-اند Trello در nodejs ساخته شده است. این شرکت از همان ابتدا یک سرور مبتنی بر رویداد را هدف قرار داده، زیرا Trello نیاز به نمایش فوری به روزرسانیها دارد، بنابراین بسیاری از اتصالات باید بطور همزمان باز بمانند. در واقع، آنها حتی در مرحله نمونه سازی از nodejs استفاده کردند. سرور nodejs فقط یک کتابخانه از توابع بود که از طریق WebSocket فراخوانی میشد. نمونه سازی اولیه با nodejs انعطافپذیری و سرعت توسعه زیادی را به تیم اعطا کرد که برای نمونههای اولیه مهم است که به طور منظم با توجه به یافتههای تحقیقات بازار به روز شوند.
مطمئنا توسعه nodejs در Trello با مسائل و مشکلات آمیخته شده است. با این حال، تیم Trello موفق شد این چالشها را حل کند، به ویژه با استفاده از کتابخانه async برای کنترل کد.
به گفته brett در Trello Blog:
"Node عالی است و هر زمان جامعه توسعه دهندگان فعال کتابخانههای جدید و مفیدی را به وجود میآورند، بهتر میشود."
امروزه Trello یکی از محبوبترین و پر استفادهترین سیستم مدیریت کار استفاده میشود. همانطور که انتظار میرود هرچقدر تجارت آنها رشد کند، خود پلتفرم نیز مقیاسبندی میشود. خوشبختانه nodejs فرصت بزرگی را برای این کار فراهم میکند.
Medium
تعداد کاربران فعال: 60 میلیون نفر
سال انتشار: 2012
کشور راه توسعه دهنده: ایالات متحده آمریکا (سانفرانسیسکو، کالیفرنیا)
پلتفرم Medium بر اساس معماری سرویس گرا بنا شده است. سرورهای اصلی برنامه توسط nodejs نوشته شدهاند که فرصت مهمی را برای اشتراک کد بین سرور و کلاینت فراهم میکند. انتخاب nodejs برای بک-اند با برخی اشکالاتی در عملکرد همراه است، زیرا در بعضی موارد حلقه رویداد مسدود شده است. با این وجود، این مسئله با چندین نمونه در هر سیستم حل شده و نقاط انتهایی را به موارد خاص هدایت میکند. علاوه بر این، موتور V8 آن مزیت بزرگی را به وجود میآورد. مانند توانایی دیدن اینکه کدام بخشها بیشتر از سایرین اجرا میشوند.
طبق گفته Dan Pupius در مهندسی Medium:
"سرورهای اصلی برنامه ما توسط Node نوشته شدهاند، که به ما امکان میدهد کدها را بین سرور و کلاینت به اشتراک بگذاریم که از آنها در ویرایشگر و ارسال پست استفاده میکنیم."
در هر صورت nodejs بهترین گزینه موجود برای بک-اند است و قدرت خود را برای Medium به کار میبرد. با وجود هرگونه مشکل در توسعه، Medium به یکی از قدرتمندترین، محبوبترین و کاربرپسندترین پلتفرمهای وبلاگ در سراسر جهان تبدیل شده است.
اینترنت اشیا (IoT)
موضوع اینترنت اشیا آنقدر گسترده و مهم است که ارزش نوشتن یک مقاله جداگانه را دارد. در اینجا میخواهیم به nodejs در مبحث اینترنت اشیا بپردازیم. nodejs به دلیل موارد زیر از توسعه اینترنت اشیا سود میبرد:
- سریع و کارآمد است
- به راحتی با پروتکلهای اینترنت اشیا یکپارچه میشود
- توسعه اینترنت اشیا را با کمک ماژولهای اینترنت اشیا تسهیل میکند
- از نظر منابع کارآمد و مقیاسپذیر است
برای مثال برنامه nodejs در اینترنت اشیا، تعدادی از آنها وجود دارد که در KeenEthics توسعه داده شدهاند. اما بیشتر به پروژه حیوانات خانگی خود به نام آساما (سیستم ردیابی کارمندان) افتخار میکنند.
Asama
سال راه اندازی: 2019
کشور توسعه دهنده: اوکراین (Lviv)
آساما سیستمی برای ردیابی زمان کار تولیدی کارمندان در کارخانهها، انبارها، پروژههای ساختمانی، سوپرمارکتها یا سایر بخشهای بزرگ تجاری است. این سیستم از سه جز اصلی تشکیل شده است: ردیابهای تناسب اندام، چراغهای BLE و هوش مصنوعی. با پشتیبانی از nodejs، سیستم کاملا قابل اعتماد و کارآمد است و امکان مقیاسگذاری آسان را فراهم میکند.
جمعبندی
توسعه nodejs به دلیل مقیاس پذیری، قابلیت اطمینان و پایداری انتخاب شماره یک برای برنامههای خدمات مالی، تجارت الکترونیکی، استریم (پخش آنلاین)، شبکه و اینترنت اشیا است. چندین نمونه برنامه محبوب Node JS در سراسر جهان ثابت میکند که nodejs فریمورکی است که میتوانید به آن اعتماد کنید. از این گذشته، مفهوم جاوااسکریپت یونیورسال (یک زبان یکسان است که در هر دو بخش فرانت-اند و بک-اند پروژه استفاده میشود) توسط PayPal و Netflix اثبات شده و کارآمد است. به نظر شما، آیا میتوانید برنامه خود را با جاوااسکریپت در هر دو بخش فرانت-اند و بک-اند توسعه دهید؟
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید