Kiến trúc phần mềm là gì?

Kiến trúc phần mềm của một hệ thống đại diện cho các quyết định thiết kế liên quan đến cấu trúc và hành vi tổng thể của hệ thống.

Hiểu một cách đơn giản, kiến ​​trúc phần mềm đề cập đến cách bạn tổ chức một vài thành phần trong quá trình tạo phần mềm. Và “thành phần” ở đây có thể là:

  • Chi tiết triển khai (Implementation details): Có thể hiểu là cấu trúc thư mục của repo của bạn;
  • Quyết định thiết kế triển khai (Implementation design decisions): Bạn sử dụng kết xuất phía máy chủ hay phía máy khách? Cơ sở dữ liệu quan hệ hay không quan hệ?
  • Các công nghệ bạn chọn: Bạn sử dụng REST hoặc GraphQl cho API? Python với Django hoặc Node với Express cho back end?
  • Quyết định thiết kế hệ thống (System design decisions): như hệ thống của bạn là một khối nguyên khối (monolith) hay nó được chia thành các dịch vụ vi mô (microservices)?
  • Các quyết định về cơ sở hạ tầng (Infrastructure decisions): Bạn lưu trữ phần mềm (host) của mình tại chỗ (on premise) hay trên một nhà cung cấp đám mây (on a cloud provider)?

Cần chú ý rằng, các thành phần này có thể được kết hợp với nhau. Ví dụ có thể có một API nguyên khối sử dụng REST hoặc GraphQL, một ứng dụng dựa trên microservices được lưu trữ tại chỗ hoặc trên đám mây, v.v.