MEAN vs. LAMP Stack: Pros and Cons
Bài đăng này đã không được cập nhật trong 3 năm
Web stacks đã phát triển qua nhiều thập kỷ với những tiến bộ trong công nghệ và ngôn ngữ backend. Hai Web stack phổ biến hiện nay là LAMP và MEAN. Chúng dựa vào hai công nghệ khác nhau cho ngôn ngữ backend, cơ sở dữ liệu và môi trường máy chủ.Thuật ngữ "stack" dùng để chỉ các công nghệ xếp chồng lên nhau để tạo môi trường máy chủ web.
Trong bài này, tôi muốn làm rõ hai web stack này bằng cách xem xét các lựa chọn công nghệ của chúng, cả thuận và nghịch.Trường hợp nào tốt hơn với mỗi stack? Và loại dự án nào sẽ được hưởng lợi nhiều nhất từ một trong hai lựa chọn? Nếu bạn chưa quen với công nghệ web hoặc chỉ muốn tìm hiểu về hai stack này thì hướng dẫn này có mọi thứ bạn cần.
LAMP Development truyền thống
Hầu hết các Developer nên biết về LAMP stack truyền thống vì nó đã được sử dụng làm web từ sớm. LAMP là viết tắt của Linux, Apache, MySQL và PHP. Mỗi trong số đó là các gói phần mềm riêng lẻ được kết hợp để tạo thành một giải pháp máy chủ linh hoạt. Lý do lớn nhất để gắn bó với LAMP là bảo mật và hỗ trợ rộng rãi. Nó đã ra đời khoảng nhiều thập kỷ, và đó là một phương pháp đã được chứng minh bới các hosting websites. Tất cả các công nghệ backend như PHP và Mysql là phổ biến và được hỗ trợ bởi các nhà cung cấp hosting lớn.Nếu bạn làm việc trên một LAMP stack , bạn về cơ bản có thể lưu trữ bất cứ nơi nào.Ngoài ra các CMS phổ biến nhất như Wordpress, Joomla, Drupal.. đều được phát triển trên nền PHP và Mysql. Có các tùy chọn tùy chỉnh trong kiến trúc LAMP như LEMP thay thế Apache với nginx. Bạn cũng có thể chạy một biến thể trên máy chủ Windows dưới dạng một WAMP stack. Tuy nhiên, tất cả phần mềm cốt lõi - bao gồm cả Apache, MySQL và PHP - đều có mã nguồn mở, và chủ yếu dành cho Linux. Đây là lý do tại sao Linux có ý nghĩa nhất đối với môi trường máy chủ và đó là lý do tại sao LAMP đã kiểm tra thời gian cho phát triển web hiện đại. Hầu hết các developer đi theo con đường này bởi vì đó là cách đơn giản nhất để làm được các website trực tuyến. Bạn sẽ tìm thấy rất nhiều hỗ trợ trên các diễn đàn bao gồm mọi thứ bạn cần để cấu hình và khắc phục sự cố môi trường LAMP. Ví dụ, bạn có thể kiểm tra câu hỏi ServerFault này để biết thêm thông tin.
JavaScript Backend với MEAN
Node.js là công nghệ mới nhất dành cho các developer được xác định để chạy các ứng dụng có thể mở rộng được xây dựng bằng JavaScript. Là một MEAN stack mạnh mẽ, và cung cấp một lợi thế chính: mọi thứ chạy trên một ngôn ngữ duy nhất. MEAN nghĩa là MongoDB, Express.js, Angular.js và tất nhiên là Node.js. Từ viết tắt này không yêu cầu hệ điều hành máy chủ hoặc phần mềm máy chủ. Một MEAN stack có thể chạy trên bất kỳ hệ điều hành nào, và Node thậm chí đi kèm với máy chủ riêng của mình để xử lý JS trên phụ trợ.
Bạn sẽ tìm thấy rất nhiều tài liệu và hỗ trợ trên trang web Mean.io.
Mặc dù stack này đã thu hút rất nhiều sự chú ý, nó vẫn không có số lượng hỗ trợ ổn định như là một LAMP stack truyền thống.
Vậy tại sao chúng ta nên làm quen với MEAN. Bởi vì chúng xử lí nhanh hơn và dễ dàng quản lý hơn. MongoDB là một cơ sở dữ liệu NoSQL tối ưu hóa các truy vấn. Việc sử dụng mã JavaScript cho cả frontend và backend cũng cải thiện việc phát triển ứng dụng. Cộng thêm nhiều JS frameworks đang xâm nhập thị trường như một giải pháp ổn định.Ví dụ: MEAN có thể được chuyển sang MEEN stack thay thế Angular bằng Ember.
Các lập trình viên sẽ yêu thích MEAN stack vì nó tách biệt mã để duy trì và phát triển. Điều này làm cho việc tổ chức các ứng dụng web JavaScript của bạn dễ dàng hơn để chúng chạy trong môi trường tự nhiên.
Có rất nhiều thứ để học về chủ đề này, và đó có lẽ là rào cản lớn nhất để nhập môn cho các developer mới. Học tất cả các công nghệ cần thiết để quản lý ứng dụng MEAN có thể mất vài tháng. Nhưng nếu bạn yêu thích Node, và muốn chạy tất cả mọi thứ trên JavaScript này cũng là giá trị nỗ lực.
Dưới đây là một số hướng dẫn dành cho người mới bắt đầu.
PHP vs. Node
PHP đã được khoảng từ giữa những năm 90, và thực sự là ngôn ngữ backend phổ biến nhất. Nhiều web developer bắt đầu bằng (hoặc cuối cùng tìm hiểu) PHP vì nó chiếm ưu thế trên các nền tảng web và các nhà cung cấp hosting. Nodejs là một framework mới hơn nhưng tính phổ biến của nó đã tăng nhanh bất thường. Điều này bao gồm sự phổ biến của NPM như là một package manager cho các web developer và mở rộng thêm vào các frontend frameworks mạnh như Angular 2. Lợi ích khác của Node là nó đi kèm với máy chủ web riêng của mình. JavaScript là thư mục gốc của mọi thứ trên một MEAN stack, vì vậy nếu bạn yêu thích JS thì bạn thực sự sẽ thích xây dựng ứng dụng web MEAN
Nhiều developer cảm thấy rằng PHP là một ngôn ngữ được thiết kế kém bởi vì người sáng tạo, Rasmus Lerdorf đã không thực sự thiết kế nó như một ngôn ngữ. PHP bắt đầu như là một giải pháp chung cho các trang web, và nhanh chóng phát triển thành một thư viện lớn các chức năng không liên quan.
Nhưng với PHP 7 cố gắng sửa nhiều lỗi của ngôn ngữ và với các frameworks OOP miễn phí, chẳng hạn như Laravel, PHP giờ đây tốt hơn bao giờ hết. Vì vậy, cuộc tranh luận ngôn ngữ đi đến sự lựa chọn cá nhân của bạn. Bạn có thực sự yêu thích viết JavaScript? Sau đó Node với một MEAN stack có thể được xem xét.
Nếu bạn đã biết PHP, và muốn gắn bó với những gì bạn biết, LAMP cũng là một con đường khả thi.
Overall Pros & Cons:
Có nhiều lớp của mỗi web stack để so sánh, bao gồm hệ điều hành, phần mềm máy chủ, cơ sở dữ liệu và ngôn ngữ backend. (1) MEAN stack cũng bao gồm Angular là một frontend framework. Không có bất kỳ framework nào được yêu cầu trong một LAMP stack, nhưng bạn luôn có thể thêm nó vào bất kỳ ứng dụng nào bạn tạo. (2) Liên quan đến hệ điều hành, các LAMP stack tìm một dẫn xuất của Linux. Linux thường là sự lựa chọn tốt nhất cho môi trường máy chủ bất kể stack, và nó cũng đúng với MEAN. (3) Bây giờ hệ điều hành của máy chủ chỉ là phần mềm máy tính, nhưng nó không phải là phần mềm máy chủ web. Để có được điều này bạn cần một chương trình như Apache hoặc nginx. LAMP sử dụng Apache vì đây là một trong những lựa chọn ổn định nhất hiện có. (4) MEAN sử dụng máy chủ Node.js là một phần của Node package. Nó vẫn còn khá mới, và không có một cộng đồng hỗ trợ đông đảo như Apache . (5) Ngoài ra một máy chủ Node yêu cầu một backend của JavaScript (không có phần mở rộng). Apache cho phép hầu hết các ngôn ngữ backend, và có nhiều phần mở rộng miễn phí để hỗ trợ tốt hơn. Nhưng bây giờ Apache không có gì hỗ trợ Node. (6) Cơ sở dữ liệu quản lý là nơi bạn sẽ tìm thấy sự khác biệt lớn nhất. LAMP sử dụng MySQL để lưu trữ relational data, trong khi MEAN sử dụng MongoDB mà là một non-relation data. Các DB non-relation nhanh hơn nhiều và cung cấp một phương pháp dễ dàng hơn với lưu lượng truy cập cao hơn. (7) Lưu ý rằng PHP không chỉ giới hạn ở MySQL. Nó có thể sử dụng MongoDB và các lựa chọn thay thế khác như PostgreSQL hoặc SQLite. Nó chỉ là phần lớn các developer PHP biết MySQL, vì vậy đó là đối thủ chính của một LAMP stack điển hình . (8) Cụm từ MEAN thường chạy nhanh hơn và có quy mô lớn hơn, nhưng cần nhiều thời gian và kiến thức máy chủ hơn để tìm hiểu hệ thống. LAMP stack đã được thử và kiểm chứng, và chúng có cơ sở hạ tầng cộng với cộng đồng hỗ trợ lớn hơn . (9) Ngôn ngữ lập trình tạo ra sự khác biệt lớn giữa hai stack. LAMP chủ yếu hoạt động trên PHP bao gồm WordPress và Laravel framework. MEAN hoạt động trên ExpressJS / NodeJS cho backend với AngularJS cho frontend. (10) MEAN là full-stack JavaScript , và có rất nhiều bạn sẽ cần phải học để có thể làm được nó. Đó là sự lựa chọn thường xuyên của những người mới khởi nghiệp sẵn sàng đẩy ranh giới phát triển ứng dụng web. LAMP là truyền thống hơn với JS fontend, PHP backend. Nó được làm cho những người chỉ muốn có được các trang web trực tuyến mà không có quá nhiều bận tâm. Vui lòng kiểm tra hướng dẫn so sánh này để tìm hiểu thêm một chút. Không phải sự lựa chọn là đúng hay sai, chỉ khác nhau và thực hiện cho các dự án khác nhau.
Chốt lại
Tôi muốn nói hầu hết các trang web được làm theo hướng LAMP stack vì nó được kiểm chứng, và có rất nhiều chủ đề Q & A hữu ích trên Google. MEAN vẫn đang phát triển và cũng có nhiều sự hỗ trợ, nhưng có thể là kỹ thuật cao hơn và cần thời gian tìm hiểu nhiều hơn. Bạn có thể thử cả hai và kiểm chứng chúng bởi chính mình. Có thể cài đặt cả hai thiết lập cục bộ trên máy tính của bạn, và xây dựng trên chúng mà không có máy chủ từ xa. Và nếu bạn đang tìm kiếm thêm thông tin về một trong hai stack, tôi đã thu thập một tập hợp các liên kết tiện dụng bên dưới.
- Learn to Build Modern Web Apps with MEAN (thinkster.io)
- Docker LAMP Stack Admin (jessesnet.com)
- How To Install Linux, Apache, MySQL, PHP (LAMP) Stack on Debian 8
Nguồn: hongkiat.com
All rights reserved