Kiến trúc phần mềm là tập hợp các cấu trúc cần thiết để lập trình lên hệ thống phần mềm, bao gồm các phần tử, mối quan hệ giữa chúng và các thuộc tính của chúng. Đồng thời, kiến trúc phần mềm là việc ứng dụng nền móng để xây dựng dự án phần mềm. Chúng ta cùng tìm hiểu 5 kiến trúc phần mềm phổ biến nhất trong bài viết này nhé!
- Layered Architecture
Hình mẫu này chia tách các thành phần của một hệ thống thành nhiều layer (lớp) riêng biệt. Thường bao gồm:
- Presentation Layer: lớp hiển thị
- Business Layer: lớp nghiệp vụ
- Persistence Layer: cầu nối với lớp database
- Database Layer: lớp cơ sở dữ liệu
Ví dụ, trong thiết kế giao diện (UI) chúng ta thường thấy mô hình Model-View-Presenter (MVP). Đó là một mô hình cụ thể của Layered Architecture. Mục đích chính của Layered Architecture là đề cao việc phân tách rõ ràng giữ các lớp, do đó việc thay đổi ở một lớp không ảnh hưởng tiêu cực tới các lớp khác.
2. Event-driven Architecture
Mô hình này thúc đẩy production (sản xuất) và consumption (tiêu thụ) của các sự kiện (event) giữa các kết nối lỏng lẻo các thành phần phần mềm và dịch vụ.
Các component (thành phần) truyền đi event (sự kiện) khi một điều gì đáng chú ý xảy ra. Các thành phần khác, theo dõi những event cụ thể mà chúng quan tâm. Điều này hỗ trợ tốt cho kiến trúc tách rời. Một ví dụ cho mô hình này là Command Query Responsibility Segregation (CQRS).
Với CQRS, dữ liệu các lệnh ghi (command) được tách rời với các lệnh đọc (query). Và các thay đổi thường được trao đổi thông qua các event.
3. Microkernel Architecture
Kiến trúc này nhấn mạnh việc tách hệ thống chính thành các nhân siêu nhỏ mở rộng chức năng thông qua add-ons và plugins.
Ví dụ, trong các hệ điều hành, microkernal có thể đảm nhiệm các nhiệm vụ quan trọng hoặc trong Eclipse IDE. Nhân của nó kiểm soát kiến trúc plugin và các tính năng từ Java tools đến tích hợp Git được sử dụng như các plugin. Một khi các plugins, add-ons gặp vấn đề, thì hệ thống chính vẫn hoạt động bình thường.
4. Microservices Architecture
Phân rã một ứng dụng ra thành tập hợp các dịch vụ nhỏ và có liên kết thiết chặt chẽ. Mỗi dịch vụ sẽ đảm nhiệm một khả năng nghiệp vụ nào đó. Nó chứa data model riêng và giao tiếp thông qua APIs.
Ví dụ, Netflix sử dụng microservices để xử lý tất cả từ đề xuất phim đến thanh toán.
Kiến trúc này đề cao việc module hóa các chức năng do đó các dịch vụ được phát triển, triển khai và scale một cách độc lập. Cho phép tăng tính linh hoạt nhưng chính vì vậy mà kiểu kiến trúc này có sự phức tạp trong việc quản lý các giao tiếp giữa các service cũng như bảo đảm sự ổn định.
5. Monolithic Architecture
Chúng ta sẽ thấy tất cả các thành phần của ứng dụng từ dữ liệu, nghiệp vụ cho đến giao diện người dùng được gói lại cùng nhau. Kiến trúc này giúp đơn giản hóa việc phát triển và triển khai, thường thấy trong các startup và các ứng dụng nhỏ.
Trên đây là 5 mô hình kiến trúc phần mềm phổ biến. Kiến trúc phần mềm là một trong những kiến thức quan trọng trong ngành Kỹ thuật phần mềm hay Ứng dụng phần mềm nói chung để xây dựng một ứng dụng hoàn chỉnh. Phần này thường do các Kiến trúc sư phần mềm đảm nhiệm. Hy vọng kiến thức này bổ ích với bạn.
Bộ môn Ứng dụng phần mềm
Trường Cao đẳng FPT Polytechnic cơ sở Đà Nẵng