NodeJS - làn sóng trong cộng đồng phát triển Web

1. Khái niệm về NodeJS ?

 

  •   NodeJS được Ryan Dahl  giới thiệu 2009 cho phép lập trình JavaScript phía server. Trước đây JavaScript chỉ được coi là một ngôn ngữ đơn giản tạo hiệu ứng hoạt hình, tương tác phía trình duyệt. Cho đến khi Google Chrome sử dụng V8 engine, một bộ dịch, thực thi mã JavaScript có tốc độ vượt trội trên thế giới.

 

  • V8 được viết bằng C/C++, mã nguồn mở, cho phép bên thứ 3 toàn quyền sử dụng, triển khai trên hệ điều hành khác nhau : Windows, Linux, Unix, MacOSX. Node.js được xây dựng trên V8 và thư viện LibUV cho phép lệnh thực thi hiện tại không ngăn các lệnh kế tiếp chạy luôn : Cơ chế Non- Blockingg I/O.

 

  •  NodeJS đã nhanh chóng bắt kịp các ngôn ngữ Java, Pyhthon, Ruby, .Net,... để trở thành một trong những sự lựa chọn cho công việc lập trình ứng dụng web. Đội NodeJS đã làm cho JavaScript trở nên tốt và nhanh hơn qua từng giai đoạn.

 

  • Cộng đồng của nó cũng ngày càng phát triển. Với sự tăng trưởng đó, ngày càng nhiều các Developer lựa chọn Công Nghệ mới mẻ này, đối mặt với cùng vấn đề và code những tính năng tương tự nhau. Chính lý do này đã tạo ra các Framework và các Design Pattern để " giúp đỡ " các lập trình viên, không chỉ giúp họ giải quyết các vấn đề thường gặp mà còn giúp xây dựng cấu trúc ứng dụng,...( Lưu ý rằng rất nhiều các lập trình viên Node.js trẻ không thực sự hiểu design pattern hay OOP hay là cấu trúc code trong ứng dụng).

Từ đó xây dựng các quy tắc cấu trúc ứng dụng : Cấu trúc Folder hợp lý cho ứng dụng, Map ER Diagram với Model, Sử dụng MVP pattern, chia nhỏ code thành các module, Tầm quan trọng của test case - log.

 
2. Các ưu điểm và nhược điểm của Node.js

 1. Ưu điểm 

  •  JSON APIS

       -  REST/JSON APIs gọn nhẹ là điều khiến NodeJS tỏa sáng. Với cơ chế event- driven, non- blocking I/O(Input/Output) và mô hình kết hợp với JavaScript là lựa chọn tuyệt vời cho các dịch vụ Webs là bằng JSON.

  •  Ứng dụng trên 1 trang 

       -  Nếu bạn định viết 1 ứng dụng thể hiện trên 1 trang ( Gmail?) Node.js phù hợp để làm. Với khả năng xử lý nhiều Request/s đồng thời thời gian phản hồi nhanh. Các ứng dụng bạn định viết không muốn nó tải lại trang, gồm rất nhiều request từ người dùng cần sự hoạt động nhanh để thể hiện sự chuyên nghiệp thì Node.js sẽ là lựa chọn của bạn. 

  •  Shelling tools unix để hoạt động 

       -  Node.js sẽ tận dụng tối đa Unix để hoạt động. Tức là Node.js có thể xử lý hàng nghìn Process và trả ra 1 luồng khiến cho hiệu xuất hoạt động đạt mức tối đa nhất và tuyệt vời nhất. 

  •  Streamming Data ( Luồng dữ liệu) 

       - Các web thông thường gửi HTTP request và nhận phản hồi lại ( Luồng dữ liệu). Giả xử sẽ cần xử lý 1 luồng giữ liệu cực lớn, NodeJS sẽ xây dựng các Proxy phân vùng các luồng dữ liệu để đảm bảo tối đa hoạt động cho các luồng dữ liệu khác.

  • Ứng dụng Web thực

      - Giả sử bạn xây dựng 1 ứng dụng chat, feed,... Facebook, Twitter là điển hình cho Web thực. Node.js có ưu điểm vượt trội khi làm nó.

 2. Nhược điểm

  •  Ứng dụng tốn tài nguyên : 

        -  Nếu bạn cần xử lý các ứng dụng tốn tài nguyên CPU như encoding video, convert file, decoding, encryption... hoặc các ứng dụng tương tự như vậy thì không nên dùng Node.js (Lý do: Node.js được viết bằng C++ & Javascript, nên phải thông qua thêm 1 trình biên dịch của NodeJS sẽ lâu hơn 1 chút ).
 Trường hợp này bạn hãy viết 1 Addon C++ để tích hợp với Node.js để tăng hiệu suất tối đa. (Việc tích hợp rất thân thiện và nhanh chóng).

  • NodeJs và những ngôn ngữ khác: 

        -  NodeJS, PHP, Ruby, Python .NET ...thì việc cuối cùng là phát triển các App Web. NodeJS mới sơ khai như các ngôn ngữ lập trình khác. Vậy nên bạn đừng hi vọng NodeJS sẽ hơn PHP, Ruby,  Python ...  ở thời điểm này. Nhưng với NodeJS bạn có thể có 1 ứng dụng như mong đợi, điều đó là chắc chắn (perfect) Với những gì các ngôn ngữ tiền bối đang có (cộng đồng lâu năm, framework, cms, opensource...) Nếu bạn/Doanh nghiệp chưa biết về NodeJS thì việc cần xây dựng dự án quan trọng, kinh doanh phát triển trên NodeJS sẽ không phải lựa chọn bây giờ. 

  • NoSQL + Nodejs + Noob 

      -   Với NodeJS, NoSQL thì là sự kết hợp hoàn hảo nhưng nếu bạn là người có kinh nghiệm với các ngôn ngữ lập trình để phát triển các dự án. Bạn biết được NodeJS qua tin tắc, báo chí, bạn bè ... Bạn lựa chọn và quyết định xây dựng dự án bằng NodeJS. Tuy nhiên rủi ro sẽ rất lớn nếu bạn chưa nắm vững và hiểu chi tiết nó.

 3. Ứng dụng 

  •  Amazon, Ebay,  Ebay, Linkedin, Microsoft, Paypal, trello, Uber và còn nhiều cái tên nổi tiếng khác nữa đang sử dụng NodeJS. Theo như Paypal thì sử dụng Nodejs làm giảm thời gian đáp ứng lên tới 35%. 
  •  Linkedin chuyển từ Ruby sang sử dụng Nodejs để xử lý các truy cập từ mobile, và con số Server sử dụng giảm từ 30 còn 3, nghĩa là giảm gần 90%.
  • Chạy trên đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiện Event-driven, Có thể chạy ứng dụng Nodejs ở bất kỳ đâu trên máy Mac – Window – Linux, hơn nữa cộng đồng Nodejs rất lớn và hoàn toàn miễn phí.