Thiết kế web bằng mã nguồn mở nên hay không?



Đầu xuân năm mới Làm Web Việt xin chúc tất cả các bạn một năm mới An Khang Thịnh Vượng Phát Tài Phát Lộc. Đầu năm này có một khách hàng của mình dùng web bằng mã nguồn mở dính lỗi bảo mật nên phải fix lỗi và update khá vất, nhân đây post lại bài về việc có nên hay không nên dùng mã nguồn mở để phát triển web để các bạn tham khảo» Quy trình thiết kế website
» 15 lời khuyên cho một web thương mại điện tử thân thiện với người dùng
» 5 mẹo nhỏ giúp thiết kế web bán hàng tốt hơn

Ở đây, tạm thời tôi không bàn đến việc kĩ thuật viết của ai hay hơn, ai dở hơn. Nhân dịp đầu năm, tôi muốn cùng các bạn bàn bạc về một vấn đề muôn thuở: nên chọn mã nguồn đóng hay mã nguồn mở ?

Sử dụng mã nguồn mở

Mã nguồn mở: con dao 2 lưỡi

- Miễn phí: đó là đặc tính của mã nguồn mở – bạn chẳng cần tốn một chút công sức nào cũng có thể dựng lên một website trong vòng 30 phút. Yeah !
- Đầu tiên, điểm giúp cho mã nguồn mở phát triển mạnh mẽ đó chính là nhờ nó được công khai nên tạo nên một cộng đồng lớn. Một cộng đồng gồm những người yêu thích và am hiểu về mã nguồn mà bạn vừa download chính là vũ khí tối tượng giúp bạn tự tin khi bắt tay làm việc với mã nguồn mở này. Bạn không hiểu ? Đã có cộng đồng hỗ trợ. Đối với những open source phổ biến hiện nay như Joomla, WordPress, Drupal… có lẽ là không quá khó khăn để bạn tìm thấy lời giải đáp cho bất kì câu hỏi nào có liên quan trong mọi ngóc ngách. Bạn chỉ cần Google – thế là xong.
- Một ưu điểm nữa của mã nguồn mở đó là tốc độ cập nhật phiên bản, khả năng fix lỗi được kiểm chứng bởi cộng đồng. Những bản vá lỗi thường xuyên được cập nhật giúp cho bạn – cho dù không phải là một người làm về vấn đề bảo mật cũng có thể yên tâm phần nào.

Tuy nhiên, một khi đã nói về mặt mạnh, tôi cũng xin chia sẻ một vài khuyết điểm mà theo tôi là yếu điểm của mã nguồn mở:

- Nỗi đau đầu thứ nhất: cập nhật phiên bản. Nếu bạn sử dụng một source “nguyên tem” thì chuyện cập nhật phiên bản chẳng ảnh hưởng gì nhiều đến “hòa bình thế giới” của bạn. Nhưng nếu bạn là một developer chính hiệu hay là một “vọc sĩ” thì chắc chắn bạn không bao giờ để yên cho cái web của bạn hoạt động. Hoặc dĩ bạn cần phát triển dự án theo ý khách hàng bạn sẽ sẽ phải đào sâu, chỉnh sửa code trong chính mã nguồn này để đáp ứng được công việc mong muốn. Lúc này, việc cập nhật phiên bản sẽ trở nên rất mất thời gian và tốn công sức, thậm chí là bất khả thi vì bạn chẳng nhớ mình đã thay đổi những gì viết thêm những tính năng nào, phiên bản mới của mã nguồn mở (open source) liệu có hỗ trợ những gì bạn đã viết hay không…Lúc này, bạn chỉ muốn tắt điện thoại và … kệ nó. Nhưng nếu phiên bản mới đòi hỏi bạn phải cập nhật để vá các lỗ hổng bảo mật ? Câu trả lời tôi để dành cho bạn.

- Nỗi đau thứ hai: sống chung với lũ. Ở phần trên tôi đã nói với bạn về khả năng cập nhật và vá lỗi nhanh chóng của các ứng dụng mã nguồn mở nhờ cộng đồng. Tuy nhiên, không phải lúc nào mã nguồn của bạn cũng có thể thoát khỏi những nguy hiểm rình rập. Bạn sử dụng Open Source nghĩa là ai cũng có thể có mã nguồn tương tự bạn, và nếu họ phát hiện ra một lỗ hổng liên quan đến bảo mật chưa được cập nhật và lợi dụng nó để tấn công bạn ? Thực tế mà tôi biết, giới UG (những hacker mũ đen) thường biết và nắm được các thông tin liên quan đến mã nguồn từ rất sớm; có khi trước khi có bản vá lỗi vài tháng trời do họ không thông báo cho bộ phận chịu trách nhiệm vá lỗi mà lợi dụng lỗi để trục lợi. Hoặc có thể là đã có bản cập nhật mới nhưng vì một lý do nào đó mà bạn chưa kịp cập nhật. Trường hợp của Joomla 1.5 ngày xưa là một ví dụ điển hình.

- Nỗi đau thứ ba: tùy biến. Thật không dễ dàng gì để khiến một mã nguồn chuyên làm việc này phải gánh thêm công việc của những mã nguồn mở khác. Bởi mỗi mã nguồn mở được thiết kế ra nhằm đáp ứng nhu cầu của một lớp đối tượng nào đó, để phục vụ một nhóm đối tượng khác hoặc một nhu cầu mở rộng hơn, bạn phải viết thêm mã lập trình là một chuyện, đảm bảo hệ thống hoạt động trơn tru, giữ được cái hồn của mã nguồn cũ sẽ rất khó.

Mã nguồn đóng: ếch ngồi ở

- Mã nguồn đóng: bạn phải học rất nhiều. Nếu bạn làm việc trên mảng web, bạn sẽ phải học CSS, HTML rồi đến cấu trúc 3 tầng, PHP(hoặc ASP, ASP.NET), học về database như MySQL, SQL Server… để có thể cấu trúc được mã nguồn của bạn, đó là chưa nói về network, vấn đề bảo mật….

- Đối với mã nguồn đóng, thuận lợi lớn nhất của nó chính là bạn không hề tiếc lộ mã nguồn của mình cho một đơn vị nào khác nên những người khác ngoài việc lợi dụng lỗi nhập liệu (trong quá trình tương tác với website) sẽ rất khó phát hiện ra. Do đó, bạn có thể hạn chế được một phần rủi ro mà mã nguồn mở mắc phải: vạch áo cho người xem lưng và dĩ nhiên bạn có thể dễ dàng tùy biến theo những gì bạn muốn một cách dễ dàng.

Tuy nhiên, cũng chính vì không có sự chung tay tương tác của nhiều người nên việc một mình bạn (hoặc team của bạn) làm việc độc lập, duy ý chí sẽ khiến cho bạn khó hoặc không thể tự thân mình phát hiện ra lỗi để sửa chữa, nâng cấp, tùy biến thường xuyên. Thực tế này khiến cho nhiều website được viết dạng đóng chứa lỗi bảo mật rất nhiều và hầu như site nào “made by tự tui” cũng dính ít nhất vài ba lỗi.

Kết luận của tôi

Đóng hay mở tôi thấy chẳng quan trọng, quan trọng là nó phục vụ nhu cầu của người sử dụng nó như thế nào. Thế nên, đôi lúc tôi vẫn sử dụng mã nguồn mở, đôi lúc tôi hí hoáy viết lại một source mới hoàn toàn để tùy biến cho dễ trong tương lai và phục vụ nhu cầu phát triển lâu dài. Tôi không biết bạn thế nào, nhưng tôi thích thế

Bài viết được trích lại của Nguyễn Duy Nhân (nhanweb)

» Thiết kế Website bán hàng - Nền móng của thương mại điện tử

Có thể bạn quan tâm
14/02/2016
1507