Drupal, Joomla hay Wordpress - Việc lựa chọn CMS có quá quan trọng?

Drupal, Joomla hay Wordpress - việc lựa chọn CMS có quá quan trọng?

Việc lựa chọn Content Management System (CMS) để xây dựng Website vừa đáp ứng được nhu cầu hiện tại, vừa có khả năng mở rộng trong tương lai có vẻ như làm rất nhiều người đau đầu. Nhưng điều đó liệu có quá quan trọng? Câu trả lời sẽ có ở cuối bài viết, sau khi so sánh 3 CMS phổ biến nhất hiện nay Drupal, Joomla, Wordpress qua 3 góc nhìn cũ nhưng với những luận điểm mới.

Stability and Security - Sự ổn định và bảo mật

Cả 3 đều được phát triển bởi cộng đồng hàng trăm, thậm chí hàng ngàn developer, mỗi khi 1 developer "đóng góp" một đoạn code, nó lại phải trai qua hàng loạt các bài unit test, functional test nên bạn có thể yên tâm về sự ổn định.

Về vấn đề bảo mật, nhiều bài viết cho rằng Wordpress quá phổ biến nên tính bảo mật của nó không cao. Luận điểm này có cơ sở nhưng thiếu thuyết phục. Các lỗi bảo mật nghiêm trọng thường không nhiều tới nỗi một người dùng phổ thông có thể "may mắn" tìm ra trong quá trình sử dụng, chúng thường được tìm thấy một cách chủ động bởi các lập trình viên kinh nghiệm. Nên nhớ cả 3 CMS đều free download nên bất kỳ ai muốn tìm ra lỗ hổng trong bảo mật để khai thác đều có khả năng như nhau.

Một số bài viết khác cho rằng các website Wordpress bị tấn công nhiều nhất, Drupal và Joomla thì ít hơn nên Wordpress bảo mật kém hơn, điều này cũng không hợp lý, chính vì phổ biến nhất nên nó là đối tượng chính của các attacker.

Core của Drupal, Joomla được bảo mật tốt hơn Joomla và Wordpress. Các module, theme, plugin do người dùng cung mới là nơi ẩn chứa các lỗi bảo mật nghiêm trọng, dễ bị khai thác.

Việc gia cố thêm các lớp bảo vệ để tăng mức độ bảo mật cho Open Source cũng không quá phức tạp, bạn có thể CHMOD, CHOWN, thay đổi file config, chuyển file config sang một directory khác (có thể nằm ngoài root directory của mã nguồn!) thậm chí là mang thông tin config lên RAM và vô số cách khác nữa.

Hack, Hacker không phải là những định nghĩa có thể sử dụng tuỳ tiện, tràn lan như ở Việt Nam hiện nay.

Flexibility and Customizability - Mức độ mềm dẻo và khả năng tuỳ biến

Drupal có phần giống một CMF (Content Management Framework) hơn là một CMS, nói vậy để thấy rằng Drupal rất linh hoạt và mạnh mẽ trong khả năng tuỳ biến. Drupal chiếm được cảm tình của các lập trinh viên chuyên nghiệp bởi kiến trúc tuyệt vời của nó cho phép họ can thiệp sâu vào core thông qua bộ API đồ sộ, bạn có thể thay đổi mọi thứ bằng cách ngắt luồng xử lý qua các Hook hoặc overidding template bằng Naming Convention.

Tuy nhiên cơ chế Hook của Drupal cũng tồn đọng nhiều hạn chế, lấy ví dụ một hạn chế dễ nhận thấy: Bạn có 5 module thực hiện những chức năng khác nhau (có chuỗi xử lý khác nhau), nhưng cả 5 module có tồn tại một xử lý giống nhau (đều hook vào một hàm) để thực hiện cùng mục đích, vậy quá trình xử lý đó sẽ phải thực hiện thêm 4 lần không cần thiết.

Joomla và Wordpress hướng tới các đối tượng người dùng phổ thông hơn, chúng cũng rất dễ dàng để tuỳ biến nhưng trong một số trường hợp bạn phải dùng các hack, trick để thực hiện ý đồ của mình nếu API không hỗ trợ, thậm chí phải chỉnh sửa Core của mã nguồn.

Khi sử dụng Open Source CMS, quy tắc bạn nên ghi nhớ đó là không chỉnh sửa core. Việc chỉnh sửa core có thể làm phát sinh các lỗi nghiêm trọng mà ở thời điểm đó bạn chưa phát hiện ra hoặc gây ra lỗi cho các pluginmodule mà bạn sẽ cài đặt. Hơn nữa mỗi lần cập nhật phiên bản mới bạn lại phải lặp lại các thao tác chỉnh sửa.

Performance and Scalability - Hiệu năng và khả năng mở rộng

Các kết quả benchmark không được thực hiện trên các website thực tế có chức năng tương đương sẽ không mang nhiều ý nghĩa. Những benchmark được thực hiện sau khi cài đặt mới hoàn toàn thường cho ra kết quả nghiêng về phía Wordpress. Drupal và Joomla nên được dùng cho các "nhiệm vụ" phức tạp hơn để thể hiện hết khả năng của mình.

Để trở nên flexible và để developer không phải viết mã quá nhiều (thiên về CMS hơn là framework), số lượng database queries (truy vấn CSDL) mỗi request của Drupal khá lớn so với Joomla và Wordpress. Trung bình mỗi request (tải trang) Drupal 7 tạo ra khoảng 100 queries, còn Wordpress chỉ khoảng 10 queries. Nếu không có các bước tối ưu Drupal sẽ chạy ì ạch hơn Joomla và Wordpress. Nhưng sẽ sai lầm khi kết luận hiệu năng của Drupal kém. Người A mổ trâu chậm hơn anh B giết gà không có nghĩa là A làm viêc kém hơn.

Hiệu năng của một Web Application bị giới hạn phần lớn ở các yếu tố liên quan tới NetworkDiskDatabase và Caching. Bản thân cả 3 CMS đều không kiểm soát được Network, Disk của hệ thống và cũng chỉ cung cấp "out of the box" các lớp caching rất đơn giản, chủ yếu là sử dụng chính database để cache. Các nguyên nhân thuộc về Programming như: deadlocks, callback phức tạp, thuật toán không tối ưu,... khó có thể tồn tại và gây ảnh hưởng nhiều tới performance của cả 3. Vậy nguyên nhân chính làm giảm hiệu năng và gây ra bottleneck (nghẽn cổ chai) là do thiếu các lớp cache cần thiết để giảm tải cho database server.

Việc áp dụng thêm các lớp caching như phát sinh các file tĩnh trên disk, memcached trên ram, cache table trên database để giảm số lượng database queries hay đơn giản hoá các truy vấn phức tạp sẽ giúp cải thiện rất nhiều về hiệu suất. Ngoài ra còn có thể áp dụng các Alternative PHP Cache và các lớp cache Web Server. Cả 3 CMS đều có các plugin, extension và module hỗ trợ rất tốt những phương án cache nêu trên khiến cho sự chênh lệch về thời gian load trang là không đáng kể.

Để đáp ứng được lượng traffic lớn hơn, có thể scale up (vertical scaling) - nâng cấp phần cứng serverhoặc scale out (horizontal scaling) - chia tách và dàn trải các lớp caching, database trên nhiều server. Tuy nhiên việc scale out một ứng dụng PHP - MySQL sẽ phát sinh nhiều vấn đề nan giải khó giải quyết. Mặt khác khi khả năng tài chính đáp ứng được việc scale out thì cũng đủ khả năng tài chính để chuyển đổi hoàn toàn sang một hệ thống khác, dùng mã nguồn riêng hoặc các mã nguồn xây dựng trên Java, C++, Python, Cassandra, MongoDB,... nhằm mang lại hiệu năng cao hơn.

Wordpress được xây dựng để trở thành một blogging platform trong khi Drupal và Joomla là những enterprise-level platform - với kiến trúc để lưu trữ được số lượng record lớn và đáp ứng được nhiều request tại một thời điểm.

Drupal có thể lưu trữ được hàng trăm nghìn pages (nodes) và đáp ứng vài chục triệu page views mỗi tháng, trên một single server.

Search Engine Optimization - Tối ưu cho các trình tình kiếm

Đây hoàn toàn không phải tiêu chí quan trọng để so sánh, cả 3 CMS nếu sử dụng thêm các module và plugin hỗ trợ đều có thể đáp ứng rất tốt việc này. Phần lớn SEOer thường dùng Wordpress vì nó đơn giản, dễ sử dụng, cộng đồng lớn. Tuy nhiên hệ thống Taxonomy, Tags để phân loại bài viết và các module hỗ trợ redirect của Drupal lại mạnh mẽ hơn Wordpress.

URL cũng là một yếu tố khá quan trọng, cơ chế xử lý URL của Drupal và Wordpress rất khác nhau. Mỗi URL của Wordpress đại diện cho danh sách của một hoặc nhiều bài viết, mỗi khi nhận được URL của request, Wordpress sẽ luôn luôn chuyển đổi nó thành một database query để lấy ra nội dung bài viết. Wordpress cũng cung cấp một số cấu trúc URL khác cho taxonomy, users, search, data-based. Plugin có thể thêm các ứng xử khác để chuyển đổi URL thành database query.

Đối với Drupal, URL của nó không cần bắt buộc tuân theo các cấu trúc định sẵn, bất kỳ module nào cũng có thể đăng ký một URL và khi URL đó được request, Drupal chỉ đơn giản hỏi module đó xem nên trả về nội dung gì, có thể không phải là danh sách của một hay nhiều bài viết. Một số module định nghĩa cơ chế xử lý URL theo kiểu query-driven tương tự Wordpress, trong khi một số khác có những ứng xử khác hoàn toàn ví dụ như hiển thị trang quản lý dành cho admin hoặc một ứng dụng Flash.

Nếu cấu trúc website của bạn chỉ gồm những bài viết và chủ đề thì Wordpress rất phù hợp, nếu phức tạp hơn, hãy cân nhắc việc sử dụng Drupal.


Việc lựa chọn CMS để xây dựng website thực sự không quá quan trọng như bạn nghĩ, khi đã chọn lựa không có nghĩa là bạn sẽ gắn liền với nó cả đời, việc chuyển đổi nền tảng tuy khó nhưng không phải là không thực hiện được. Cả 3 CMS hầu như đều có thể đáp ứng được những công việc giống nhau. Hơn nữa với việc dựng các lớp cache tôi tin rằng cả 3 đều có thể đáp ứng được vấn đề hiệu năng và khả năng mở rộng của phần lớn website ở Việt Nam. Chính vì vậy đừng quá băn khoăn và mất thời gian khi chọn một CMS phù hợp, hãy chọn CMS nào giúp bạn cảm thấy thoải mái khi làm việc, có sẵn những module hỗ trợ các tính năng mà bạn cần, đôi khi bạn cũng nên chọn theo cảm tính cá nhân. Tôi chọn Drupal ngay từ ngày đầu bước chân vào thế giới lập trình web cách đây 4 năm vì nó khó, thử thách, không thân thiện nhưng lại rất mạnh mẽ, linh hoạt.

Nếu ví Wordpress như một chàng hoàng tử hào hoa, tài giỏi, thân thiện thì Drupal như một chiến binh đứng tuổi, mạnh mẽ hơi khó gần nhưng không kém phần tốt bụng. Người phụ nữ mang tên Joomla có vẻ như đang dần đánh mất tuổi xuân và sự sắc sảo của mình.

Add new comment