Kiến trúc Client-Server mà Facebook, Zalo đang áp dụng là gì?
Chắc hẳn trong chúng ta không ai còn xa lạ với những ứng dụng mạng xã hội nổi tiếng như Facebook, Instagram, Messenger, Ứng dụng chat Zalo,… hay những ứng dụng nghe nhạc/xem video trực tuyến như Youtube, Zing MP3, Nhaccuatui,… Tuy nhiên, chắc cũng không ít người nghĩ rằng khi cài đặt ứng dụng trên điện thoại, tất cả những dữ liệu về hình ảnh , tin nhắn, status facebook, những bản nhạc, video… đều được lưu trữ trên điện thoại hết rồi. Bạn có nghĩ như vậy không?
Nếu câu trả lời là CÓ, thì bạn … lầm TO rồi ?. Lấy một ví dụ thế này với Facebook, khi bạn truy cập thông qua trình duyệt trên máy tính, hoặc sử dụng ứng dụng trên điện thoại của mình để lướt New Feeds. Bạn thử tắt mạng đi, kết quả là không tìm thấy trang (trên trình duyệt) và New Feeds thì chả có gì mới, chỉ toàn là tin cũ. Tới đây, ta chứng minh được những dữ liệu của New Feeds hoàn toàn không nằm ở trên máy của người dùng, mà nó nằm ở đâu đó ngoài kia, cần phải có kết nối mạng mới có thể lấy được và hiển thị trên ứng dụng Facebook được cài đặt trên điện thoại (hoặc thông qua trình duyệt).
Chúng ta sẽ làm rõ vai trò của từng thành phần trong mô hình hoạt động của Facebook nói riêng và những ứng dụng phổ biến khác nói chung thông qua hình minh họa dưới đây.
Người dùng mở ứng dụng Facebook lên, mặc định sẽ mở trang New Feeds đầu tiên. Tại thời điểm này, ứng dụng Facebook trên điện thoại của bạn sẽ gửi một yêu cầu tới nơi-cung-cấp-dữ-liệu, với thông điệp là: “Lấy giúp tôi tất cả new feeds”. Thông qua môi trường Internet, thông điệp này truyền tới nơi-cung-cấp-dữ-liệu. Tại nơi đây, thông điệp được xử lý, dữ liệu được chuẩn bị sẵn sàng, và trả về kết quả là danh sách tất cả các new feeds thông qua môi trường Internet. Đích đến của gói kết quả này chính là ứng dụng Facebook đang có trên máy của bạn. Nhiệm vụ của ứng dụng Facebook trên điện thoại lúc này sẽ lấy gói dữ liệu vừa nhận được, thông qua quá trình xử lý, sẽ hiển thị lên trên màn hình điện thoại một cách bắt mắt như chúng ta đang sử dụng.
Kịch bản gửi yêu cầu, tiếp nhận yêu cầu, xử lý yêu cầu, trả về kết quả và cuối cùng là hiển thị lên trên ứng dụng, đó chính là “Mô hình Client-Server”. Trong đó thuật ngữ Client chính là ứng dụng người dùng sử dụng trực tiếp được cài đặt trên điện thoại (hoặc được chạy trên trình duyệt web), và nơi-cung-cấp-dữ-liệu chính là Server (máy chủ).
Vậy Mô hình Client-Server là
Theo định nghĩa của Wikipedia: “Mô hình client-server là một mô hình nổi tiếng trong mạng máy tính, được áp dụng rất rộng rãi và là mô hình của mọi trang web, ứng dụng di động hiện có. Ý tưởng của mô hình này là máy con – Client (đóng vài trò là máy khách) gửi một yêu cầu (request) để máy chủ – Server (đóng vai trò người cung ứng dịch vụ), máy chủ sẽ xử lý và trả kết quả về cho máy khách.”
Chúng ta sẽ bắt gặp mô hình này ở đâu?
Câu trả lời là mọi nơi, mọi hoạt động trong thế giới ứng dụng (bất kể là web hay di động). Đó có thể là lướt web đọc tin tức, như các bạn đang đọc bài blog này chẳng hạn. Chơi game online. Các ứng dụng mạng xã hội như Facebook, Instagram, Twitter,… lúc các bạn đăng status tâm trạng, đăng hình sống ảo, live stream. Các ứng dụng chat như Zalo, Messenger,… Các ứng dụng nghe nhạc/xem video trực tuyến như Zing MP3, Youtube,… Tất cả đều theo một kịch bản là ứng dụng – Client gửi yêu cầu (đăng status, upload hình, lấy danh sách nhạc, nhắn 1 tin nhắn,…) tới một máy chủ – Server. Máy chủ – Server sẽ tiếp nhận thông tin, xử lý thông tin, lưu trữ thông tin xuống cơ sở dữ liệu (Database) và trả về kết quả tương ứng cho ứng dụng – Client. Client hiển thị kết quả cho người dùng.
Tới đây các bạn đã cảm thấy Mô hình Client – Server là vô cùng phổ biến và quan trọng với chúng ta rồi chứ nhỉ ?
Đứng dưới góc độ một Lập trình viên – Những công nghệ nào là xu hướng được sử dụng để xây dựng Client – Server?
Có rất nhiều công nghệ để xây dựng một ứng dụng phía Client, tuy nhiên những công nghệ được nhắc đến trong hình trên là xu hướng trong thời gian gần đây, được lựa chọn trong việc xây dựng và phát triển ứng dụng phía Client. Xây dựng trang web cơ bản phía Front-End chúng ta có HTML, CSS, Javascript. Những thư viện, framework nổi tiếng để xây dựng một ứng dụng web hoàn chỉnh phía Client đó là Vue.js, Angular và React. Trong đó Angular được coi là một framework hoàn chỉnh để xây dựng ứng dụng Web, được Google đầu tư xây dựng và phát triển, cộng đồng hỗ trợ đông đảo, nhiều sản phẩm công nghệ lớn sử dụng, có thể dùng để phát triển ứng dụng di động. Bên cạnh đó, xây dựng ứng dụng di động chúng ta có Android và Swift (lập trình ứng dụng iOS).
Về phía Server, có rất nhiều công nghệ để xây dựng một ứng dụng phía Server, tuy nhiên những công nghệ được nhắc đến trong hình trên là xu hướng trong thời gian gần đây, được lựa chọn trong việc xây dựng và phát triển ứng dụng phía Server. Trong đó NodeJS đã và đang nổi lên như một hiện tượng bởi tính gọn nhẹ, linh hoạt nhưng mang lại hiệu năng vô cùng ấn tượng. Một lợi thế của NodeJS đó là chương trình NodeJS được viết bằng Javascript – một ngôn ngữ mà trước đây được biết chỉ có thể làm ứng dụng phía Client. Có thể kể đến những cái tên của những ông lớn như Uber, Paypal, NetFlix, Yahoo, Ebay,… đều đã tin tưởng sử dụng NodeJS để xây dựng phía Server cho mình.
Kết Luận
Hi vọng với những kiến thức ở trên các bạn đã có thể hiểu mô hình Client – Server là như thế nào, cũng như những công nghệ mạnh mẽ như Angular, NodeJS để xây dựng ứng dụng Client – Server hoàn chỉnh. Chúc các bạn thành công!
Hải Hà
TRUNG TÂM ĐÀO TẠO LẬP TRÌNH VIÊN JANETO
0933067997 – 0933267337
facebook.com/laptrinhvienio
YouTube/laptrinhvienio
tuyensinh@laptrinhvien.io
Tầng 2 Tòa nhà The Morning Star – 57 Quốc Lộ 13, Phường 26, Quận Bình Thạnh, Tp. Hồ Chí Minh.