Kiến trúc Monolithic vs Microservices

Mar 26 2023
Kiến trúc nguyên khối Nói một cách đơn giản, kiến ​​trúc nguyên khối là kiến ​​trúc trong đó toàn bộ cơ sở mã, chức năng và thuật toán nằm trong một đơn vị hoặc dự án. Mặc dù nguyên khối là một cách tiếp cận truyền thống hơn một chút trong phát triển phần mềm, nhưng điều đó không có nghĩa là nó không còn được sử dụng nữa.

nguyên khối

Nói một cách đơn giản, kiến ​​trúc nguyên khối là kiến ​​trúc mà toàn bộ cơ sở mã, chức năng và thuật toán nằm trong một đơn vị hoặc dự án.

Mặc dù nguyên khối là một cách tiếp cận truyền thống hơn một chút trong phát triển phần mềm, nhưng điều đó không có nghĩa là nó không còn được sử dụng nữa. Kiến trúc nguyên khối vẫn lý tưởng cho các dự án đơn giản hơn vì chúng dễ xây dựng và triển khai hơn.

Thuận lợi:

  • Dễ dàng phát triển và triển khai hơn.
  • Ít có khả năng phải đối mặt với các vấn đề về độ trễ vì giao tiếp với các dịch vụ khác ít hơn.
  • Các nhà phát triển chỉ cần tập trung vào một thành phần.
  • Thành phần được liên kết chặt chẽ khiến cho việc kết hợp các nguyên tắc và thiết kế phần mềm tốt trở nên khó khăn. Ngoài ra, một thay đổi nhỏ có thể làm hỏng toàn bộ thành phần một cách hiệu quả.
  • Những thay đổi nhỏ yêu cầu triển khai toàn bộ thành phần có thể phản trực giác khi cố gắng giảm chi phí.
  • Ít linh hoạt hơn để áp dụng các công nghệ mới do bản chất của kiến ​​trúc.

Ở đầu dây bên kia, chúng tôi có microservice. Microservice về cơ bản là các đơn vị hoạt động hoặc dịch vụ nhỏ hoạt động độc lập nhưng cùng nhau để tạo thành một miếng bánh lớn hơn. Mặc dù chúng cung cấp các dịch vụ nhẹ được liên kết lỏng lẻo, nhưng có một mức độ phức tạp mà nó mang lại cho kiến ​​trúc. Ví dụ về điều đó bao gồm quản lý yêu cầu/cuộc gọi giữa các dịch vụ và quản lý cơ sở dữ liệu được sử dụng bởi từng dịch vụ.

Thuận lợi

  • Trọng lượng nhẹ giúp dễ dàng nhận, quản lý và triển khai.
  • Liên kết lỏng lẻo có nghĩa là ngay cả khi một dịch vụ ngừng hoạt động, dịch vụ đó không ảnh hưởng đến các dịch vụ khác — trừ khi dịch vụ ngừng hoạt động là một phần của trường hợp sử dụng lớn hơn cần thiết.
  • Có thể mở rộng một đơn vị theo chiều ngang nếu phải đối mặt với tải cuộc gọi lớn hơn chỉ trên một dịch vụ cụ thể.
  • Hệ thống phân tán làm tăng độ phức tạp khi có nhiều dịch vụ hơn.
  • Tốn kém vì cần sử dụng mạng nhiều hơn để duy trì độ trễ của giao tiếp giữa các thành phần khác nhau.
  • Việc gỡ lỗi cho một trường hợp sử dụng đơn lẻ có thể khó khăn do quy trình làm việc vượt qua các thành phần khác nhau, khiến việc xác định nguyên nhân gốc rễ của vấn đề trở nên khó khăn hơn.

Không có một kích thước phù hợp với tất cả các kiến ​​trúc sẽ được sử dụng trong tất cả các dự án phần mềm. Cuối cùng, nó phụ thuộc vào nhiều yếu tố khác nhau như loại dự án, mức độ phức tạp của dự án, các trường hợp sử dụng của dự án và đôi khi là cả ngân sách.

Tôi đoán một nguyên tắc chung là nếu bạn thấy trước dự án sẽ trở thành một dự án đơn giản hơn với các chức năng đơn giản ngay cả trong thời gian dài, thì một cách tiếp cận nguyên khối sẽ là lý tưởng. Mặt khác, nếu bạn thấy trước nhu cầu mở rộng quy mô hoặc thậm chí áp dụng công nghệ mới, microservice sẽ là lựa chọn tốt hơn.