EP2: Single-Tier Applications

Trong ứng dụng Single-Tier Applications, giao diện người dùng (UI), logic nghiệp vụ backendcơ sở dữ liệu đều nằm trên cùng một máy.

Ví dụ điển hình của ứng dụng một tầng (Single-tier)

Các ví dụ phổ biến của ứng dụng một tầng bao gồm các ứng dụng desktop như:

  • MS Office
  • Game PC
  • Phần mềm chỉnh sửa hình ảnh như GIMP, Photoshop, v.v.

1. Upsides of single-tier applications – Ưu điểm của ứng dụng một tầng (Single-tier applications)

Ưu điểm lớn nhất của ứng dụng một tầng là không có độ trễ mạng (network latency), vì tất cả các thành phần đều nằm trên cùng một máy. Điều này giúp hiệu năng của phần mềm được cải thiện đáng kể.

Trong khi đó, ứng dụng hai tầng, ba tầng hoặc n tầng thường xuyên phải gửi yêu cầu dữ liệu tới backend server, dẫn đến phát sinh độ trễ mạng, làm trải nghiệm người dùng chậm hơn so với ứng dụng một tầng. Với ứng dụng một tầng, dữ liệu luôn sẵn có vì mọi thành phần đều nằm trên cùng một máy.

Tuy nhiên, hiệu năng thực tế của ứng dụng một tầng vẫn phụ thuộc lớn vào yêu cầu phần cứng của ứng dụng và sức mạnh của máy mà nó chạy trên.

Ngoài ra, về quyền riêng tư và độ an toàn dữ liệu, ứng dụng một tầng có mức độ bảo mật rất cao, vì dữ liệu người dùng luôn nằm trên chính thiết bị của họkhông cần truyền qua mạng để lưu trữ.


2. Downsides of single-tier applications- Nhược điểm của ứng dụng một tầng (Single-tier applications)

Một nhược điểm lớn của ứng dụng một tầng là nhà phát hành gần như không có quyền kiểm soát ứng dụng sau khi đã phát hành. Khi phần mềm đã được bàn giao cho người dùng, không thể cập nhật mã nguồn hay tính năng cho đến khi người dùng chủ động cập nhật thủ công, ví dụ như kết nối tới server từ xa hoặc tải về và cài đặt bản vá (patch).

Chính vì vậy, vào những năm 1990, nếu một trò chơi được phát hành với mã lỗi (buggy code), các studio gần như không thể làm gì để khắc phục ngay. Họ phải chịu nhiều chỉ trích từ cộng đồng game thủ do chất lượng phần mềm kém. Điều này khiến kiểm thử sản phẩm trở nên sống còn, có thể quyết định sự thành bại của cả doanh nghiệp. Việc kiểm thử phần mềm buộc phải cực kỳ kỹ lưỡng, vì không có chỗ cho sai sót.

Bên cạnh đó, mã nguồn của ứng dụng một tầng cũng dễ bị chỉnh sửa hoặc reverse engineer. Mức độ bảo mật sản phẩm đối với nhà phát hành là rất thấp. Một kẻ xấu, chỉ cần bỏ ra một chút công sức, có thể truy cập vào mã nguồn ứng dụng, chỉnh sửa hoặc sao chép nó để trục lợi. Điều này ít xảy ra hơn trong các kiến trúc mà doanh nghiệp kiểm soát application server và triển khai các biện pháp bảo mật để chống lại hacker.

Cuối cùng, hiệu năng cũng như giao diện (look and feel) của ứng dụng một tầng có thể không đồng nhất, vì việc render ứng dụng phụ thuộc rất nhiều vào cấu hình máy của người dùng.