Tôi tin rằng có rất nhiều câu trả lời cho câu hỏi này, nhưng tôi sẽ đưa ra một vài lý do để bạn cân nhắc. Trước hết, nếu bạn biết những kiến thức cơ bản về các mẫu kiến trúc thì bạn sẽ dễ dàng thực hiện theo yêu cầu của kiến trúc sư hơn. Thứ hai, biết những mẫu đó sẽ giúp bạn đưa ra quyết định trong code của mình. Ví dụ: nếu thiết kế ứng dụng dựa trên các dịch vụ nhỏ hướng sự kiện, với tư cách là một kỹ sư phần mềm, bạn phải tách code của mình thành một dịch vụ riêng biệt nếu bạn nhận thấy sự phức tạp ngày càng tăng và trách nhiệm của logic trong dịch vụ hiện có. (Nếu bạn không hiểu phần này, chỉ cần làm theo văn bản, nơi mẫu này được giải thích ngắn gọn).
Có 5 mẫu được mô tả trong cuốn sách của Mark Richards:
Đây là kiến trúc phổ biến nhất cho các ứng dụng nguyên khối. Ý tưởng cơ bản đằng sau mô hình là chia logic ứng dụng thành nhiều lớp, mỗi lớp đóng gói vai trò cụ thể. Ví dụ: lớp Persistence sẽ chịu trách nhiệm giao tiếp ứng dụng với công cụ cơ sở dữ liệu..
Ý tưởng đằng sau mẫu này là tách logic ứng dụng thành các thành phần xử lý sự kiện có mục đích duy nhất nhận và xử lý các sự kiện một cách không đồng bộ. Mẫu này là một trong những mẫu kiến trúc không đồng bộ phân tán phổ biến được biết đến với khả năng mở rộng và khả năng thích ứng cao.
Kiến trúc Mikrokernel, còn được gọi là kiến trúc Plugin, là mô hình thiết kế với hai thành phần chính: một hệ thống lõi và các mô-đun plug-in (hoặc phần mở rộng). Một ví dụ tuyệt vời sẽ là trình duyệt Web (hệ thống lõi) nơi bạn có thể cài đặt các tiện ích mở rộng (hoặc plugin) vô tận.
Kiến trúc microservices bao gồm các dịch vụ được triển khai riêng biệt, trong đó mỗi dịch vụ sẽ có một trách nhiệm lý tưởng. Các dịch vụ đó độc lập với nhau và nếu một dịch vụ bị lỗi thì các dịch vụ khác sẽ không ngừng chạy.
Ý tưởng chính đằng sau mô hình dựa trên không gian là bộ nhớ được chia sẻ phân tán để giảm thiểu các vấn đề thường xuyên xảy ra ở cấp cơ sở dữ liệu. Giả định là bằng cách xử lý hầu hết các hoạt động sử dụng dữ liệu trong bộ nhớ, chúng ta có thể tránh các hoạt động bổ sung trong cơ sở dữ liệu, do đó bất kỳ vấn đề nào trong tương lai có thể phát triển từ đó (ví dụ: nếu thực thể dữ liệu hoạt động người dùng của bạn đã thay đổi, bạn không cần để thay đổi một loạt mã liên tục và truy xuất dữ liệu đó từ DB).
Cách tiếp cận cơ bản là tách ứng dụng thành các đơn vị xử lý (có thể tự động tăng và giảm quy mô dựa trên nhu cầu), nơi dữ liệu sẽ được sao chép và xử lý giữa các đơn vị đó mà không cần bất kỳ sự ổn định nào đối với cơ sở dữ liệu trung tâm (mặc dù sẽ có các kho lưu trữ cục bộ cho nhân sự cố hệ thống).
Nguồn: codelearn.io