Three-Tier Architecture

2 phút đọc2 lượt xem

Trong phát triển phần mềm, đặc biệt là các hệ thống web và enterprise application, Three-tier Architecture (kiến trúc 3 lớp) là một mô hình kiến trúc phổ biến, được sử dụng rộng rãi nhờ tính phân tách trách nhiệm rõ ràng, khả năng mở rộng linh hoạt, và dễ bảo trì

Three-tier Architecture là gì?

Three-tier architecture là mô hình phần mềm chia hệ thống thành ba tầng riêng biệt, mỗi tầng đảm nhận một vai trò cụ thể:

LayerVai trò chínhMô tả
1️⃣ Presentation LayerGiao diện người dùng (UI)Tầng hiển thị dữ liệu và nhận tương tác từ người dùng. (VD: Web frontend dùng React, Angular, Vue, hoặc mobile app)
2️⃣ Application Layer (Business Logic)Xử lý logic nghiệp vụChịu trách nhiệm xử lý logic, tính toán, xác thực, phân quyền, v.v. (VD: backend viết bằng Node.js, Java Spring, Go, Python, v.v.)
3️⃣ Data LayerLưu trữ dữ liệuTầng thao tác với cơ sở dữ liệu như PostgreSQL, MySQL, MongoDB, hoặc S3, Redis, v.v.

Luồng hoạt động cơ bản

Ví dụ một request của người dùng đi qua 3 lớp:

  • Người dùng tương tác trên UI (Presentation Layer).
  • Yêu cầu được gửi đến Application Layer (thường thông qua HTTP API).
  • Application Layer xử lý logic, sau đó truy vấn hoặc cập nhật dữ liệu thông qua Data Layer.
  • Kết quả được trả ngược lên Application Layer → Presentation Layer → hiển thị cho người dùng.

Ví dụ thực tế

Một hệ thống thương mại điện tử có thể được triển khai theo 3-tier như sau:

  • Presentation Layer: ReactJS frontend, chạy trên S3 + CloudFront hoặc EC2.
  • Application Layer: Backend API viết bằng Node.js hoặc Java, triển khai trên ECS/Fargate hoặc Lambda.
  • Data Layer: Cơ sở dữ liệu như RDS (PostgreSQL), Redis cache, hoặc S3 để lưu ảnh sản phẩm.

Ưu điểm

  • Separation of concerns: Mỗi tầng có trách nhiệm rõ ràng, dễ bảo trì và mở rộng.
  • Khả năng mở rộng độc lập: Có thể scale từng tầng riêng (VD: frontend CDN scale theo traffic, backend scale theo CPU, DB scale theo IOPS).
  • Bảo mật tốt hơn: Chỉ tầng Application được quyền truy cập DB, Presentation không thể kết nối trực tiếp.
  • Thay thế công nghệ dễ dàng: Có thể thay đổi frontend (VD: từ Angular sang React), hoặc DB (VD: MySQL → PostgreSQL) mà không ảnh hưởng các tầng còn lại.

Nhược điểm

  • Phức tạp hơn so với kiến trúc monolithic nếu dự án nhỏ.
  • Đòi hỏi triển khai, CI/CD, monitoring ở nhiều tầng khác nhau.
  • Có độ trễ giữa các lớp nếu không tối ưu (VD: API gọi DB quá nhiều lần).

Chủ đề

Bạn thấy bài này thế nào?