EP3: Two-Tier Applications

Ứng dụng hai tầng bao gồm client và server.

  • Client chứa giao diện người dùng (UI)logic nghiệp vụ, chạy trên một máy.
  • Backend server chứa cơ sở dữ liệu, chạy trên một máy khác.

Máy chủ cơ sở dữ liệu do doanh nghiệp quản lý và kiểm soát.

Tại sao chúng ta cần ứng dụng hai tầng?

Vì sao không đặt luôn logic nghiệp vụ trên một máy khác để doanh nghiệp cũng kiểm soát được nó?

Ngoài ra, chẳng phải mã nguồn của ứng dụng vẫn có nguy cơ bị bên thứ ba truy cập hay sao?

The need for two-tier applications – Nhu cầu sử dụng ứng dụng hai tầng (Two-tier applications)

Đúng vậy, mã nguồn vẫn có khả năng bị truy cập. Tuy nhiên, có những use case mà ứng dụng hai tầng tỏ ra rất phù hợp, ví dụ như ứng dụng to-do list, planner, hoặc các ứng dụng hỗ trợ năng suất tương tự.

Trong những trường hợp này, ngay cả khi mã nguồn bị bên thứ ba truy cập, thì mức độ ảnh hưởng tới doanh nghiệp là không đáng kể. Ngược lại, vì logic nghiệp vụ và giao diện người dùng cùng nằm trên một máy, nên số lượng request gửi tới backend server được giảm thiểu. Điều này giúp giảm độ trễ (latency) của ứng dụng, trở thành một ưu điểm rõ ràng.

Lấy ứng dụng to-do list làm ví dụ:
Ứng dụng chỉ gọi tới database server khi người dùng hoàn tất việc tạo danh sách và muốn lưu dữ liệu. Trong suốt quá trình thao tác, hầu như không cần tương tác mạng.

Một ví dụ khác rất phổ biến của ứng dụng hai tầngcác trò chơi trên trình duyệt hoặc ứng dụng di động. Các file game thường có dung lượng lớnchỉ được tải về phía client một lần duy nhất khi người dùng sử dụng lần đầu. Sau đó, ứng dụng chỉ thực hiện các network call tới backend để lưu trạng thái trò chơi.

Ngoài ra, ít request tới server hơn đồng nghĩa với chi phí vận hành server thấp hơn, điều này mang lại lợi ích kinh tế. Tuy nhiên, việc lựa chọn mô hình tầng nào cho hệ thống vẫn phụ thuộc chủ yếu vào yêu cầu kinh doanh và bài toán cụ thể.

Khi thiết kế hệ thống, chúng ta có thể:

  • Giữ UI và business logic ở phía client (two-tier), hoặc
  • Đưa business logic lên một backend server riêng, biến hệ thống thành ứng dụng ba tầng (three-tier) – mô hình mà chúng ta sẽ tìm hiểu trong bài học tiếp theo.