امروزه تکنولوژی های بسیاری برای طراحی صفحات وب معرفی شده تا روند توسعه وب با سرعت و کیفیت بیشتری پیش برود. نقش جاوااسکریپت در تکنولوژی های نوین انکار نشدنی است که توانسته سادگی، سرعت و کیفیت بهتر را به ارمغان آورد. اخیرا Angular، NodeJS و Express توانسته اند به سرعت جایی را برای خود در بین طراحان صفحات وب پیدا کنند و در کنار این سه، پایگاه داده جدیدی به نام MongoDB معرفی شده تا رقبای سنتی و با نفوذ خود را کنار بزنند، هر چند که کاری بسیار دشوار را پیش روی خود می بینند.
بسته LAMP که نام آن برگرفته از حروف اول کلمات MySQL، Apache، Linux و PHP می باشد هنوز انتخاب مطمئنی است که سال ها تجربه و توسعه را با خود همراه دارد که از پشتیبانی گسترده تر و نواقص کمتری برخوردار است، اما یکی از بزرگترین ضعف های این بسته عدم هماهنگی با نیاز ها و تکنولوژی های روز می باشد. PHP هنوز هم زبان قدرتمندی است اما پشتیبانی کاملی از درخواست های غیر همزمان به عمل نمی آورد اگر هم عمل می آورد بسیار پیچیده تر از تکنولوژی های جدیدتر است، مساله ی دیگر اینکه امروزه کار با داده های گسترده به صورت Real Time نیاز است اما پایگاه داده های ارتباطی هنوز از تطابق لازم برخوردا نیستند و دارای پیچیدگی های ارتباطی زیادی می باشند. بسته MEAN آمده تا به این نواقص و نقاط ضعف پاسخ دهد. نود و اکسپرس در کنار هم آمده اند تا به درخواست های غیر همزمان پاسخ دهند و تاخیر را به حداقل برسانند، MongoDB پایگاه داده غیر ارتباطی است که سرعت و سادگی را چاشنی کار کرده و دیگر خبری از طراحی های پیچیده جداول نیست، Angular که در سمت Front-End در حال یکه تازی است و باعث ساده شدن عملیات مربوط به نمایش شده است. در ادامه به طور مختصر هر یک از اجزای MEAN و LAMP را مقایسه می کنیم.
سیستم عامل:
انتخاب اول در هر بسته سیستم عامل است، در حالی که بسته LAMP تمرکز خود را روی انواع مختلف سیستم عامل لینوکس معطوف کرده است MEAN چنین محدودیتی را ندارد، لینوکس هنوز هم گزینه خوبی برای App های ایجاد شده توسط MEAN می باشد اما این بدین معنی نیست که تنها گزینه موجود است هر سیستم عاملی که قادر به اجرای NodeJS باشد می تواند جایگزین مناسبی باشد.
وب سرور:
در بسته LAMP وب سرور به وسیله Apache ارائه می شود در صورتیکه در پشته MEAN بوسیله NodeJS ارائه می شود که باعث بهبود کیفیت اپلیکیشن ها می شود زیرا NodeJS در درخواست های همزمان کاملا به صورت غیر انسداد (non-blocking) و مبتنی بر رویداد (event-based) می باشد، NodeJS به طور نسبی سبک و جدید است و در حالی که Plugin های بسیاری برایش نوشته شده است اما هنوز به اندازه Apache کامل نشده است و این بدین معنی است که شما باید برای قسمت هایی از NodeJS که قابلیت موردنظرتان را ندارد Plugin شخصی خود را بنویسید علاوه بر این همه کدهای سمت سرور به زبان جاوااسکریپت خواهد بود که در زمان توسعه Back-end جدید مشکلی را بوجود نمی آورد اما تبدیل یک Back-end دارای پیچیدگی های قایل توجهی خواهد بود.
ذخیره سازی داده:
بسته MEAN پایگاه داده MySQL (یا دیگر پایگاه داده های رابطه ای) را با MongoDB (یا پایگاه داده های غیر رابطه ای مشابه دیگر) جایگزین می کند، برای بسیاری از وب اپلیکیشن ها این مهمترین تغییر خواهد بود زیرا تبدیل داده ها و جداول SQL کاری کم و بیش پیچیده است و دوباره باید در ارتباط با ویژیگی ها و ساختار قرارگیری داده ها تصمیم گیری کرد که البته نیازمند یک مجموعه نرم افزار سفارشی خواهد بود اما پس از تبدیل، پایگاه داده جهت بازیابی داده ها بسیار سریعتر عمل خواهد کرد.
کد:
MEAN از اکسپرس در Back-end استفاده می کند که در LAMP از زبان هایی همچون PHP و Python به همراه فریمورک های مانند Zend و Django استفاده می شود، همچین MEAN در Font-end از AngularJS برای هدایت داده ها استفاده می کند هر چند که می توان از AngularJS در بسته LAMP هم بهره برد اما با سازگاری نسبتا کمتری. از مزیت های اکسپرس می توان به معماری بسیار ساده در Back-end و سبک بودن اشاره کرد علاوه بر این، استفاده از اکسپرس و Angular در NodeJS یک مزیت دیگر در بسته MEAN دارد و آن هم اینکه هر دو به طور کامل از یک زبان یعنی جاوااسکریپت استفاده می کنند و این بدین معنی است که توسعه دهندگان Front-end حالا قادر هستند تا بدون نیاز به یادگیری زبان دیگری کدها را ردیابی و بررسی کنند.
توضیح اضافه:
بزرگترین چالش پیش رو برای مهاجرت از LAMP به MEAN نحوه ذخیره سازی داده هاست در حالی که بسته MEAN برای کار با پایگاه داده های غیر رابطه ای طراحی شده است، Plugin هایی برای برقراری ارتباط با پایگاه داده های رابطه ای در NodeJS وجود دارد که به بسته اجازه می دهد تا از پایگاه داده های رابطه ای استفاده کند. در Front-end هم که همه چیز به صورت JSON خواهد بود، به طوری که اصلا مهم نیست که داده ها چطور ذخیره شده اند یا اینکه از چه نوع پایگاه داده ای بازیابی شده اند، هر یک از مدل های پایگاه داده مزیت های خاص خود را دارا هستند، پایگاه داده های رابطه ای با پشتیبانی از گزارش های ساخت یافته، به خوبی خود را برای انجام محاسبات پیچیده آماده می کنند و پایگاه داده های غیر رابطه ای در مدیریت کردن داده های عملیاتی مانند لیستی از اشیا در سیستم که دارای ساختار خاصی نیستند مناسب می باشد.
نتیجه گیری:
بسته MEAN مزایای زیادی را به همراه دارد که 3 تا از مهمترین آنها به شرح زیر است:
- استفاده از یک زبان (جاوااسکریپت) از بالا تا پایین بسته.
- انعطاف در سکوی استقرار
- افزایش سرعت بازیابی داده ها
هر چند این مهاجرت ساده و بدون هزینه نخواهد بود و دارای مسائلی مانند: تبدیل کدهای موجود به کدهای جاوااسکریپت می باشد که نیاز به صرف زمان و انرژی زیادی خواهد داشت. همچنین بسته LAMP هنوز هم انتخاب مطمئن و دارای ریسک کمتری نسبت به MEAN می باشد ولی بسته MEAN دارای انعطاف پذیری بالاتری نسبت به LAMP می باشد و در نهایت انتخاب یکی از این دو یا مهاجرت از LAMP به MEAN به اولویت های پروژه شما بستگی دارد.
MEAN | LAMP |