Weekly MicroClosure #2: The Scale Cube

Trong quyển sách The Art of Scalability (Addison-Wesley, 2015) bởi Martin Abbott và Michael Fisher đã mô tả một mô hình 3 chiều biểu diễn cho khả năng mở rộng (the Scalability) như hình 1.

Hình 1: Mô hình The Scale Cube 3 chiều

1. Mở rộng theo trục ngang X: Horizontal Duplication (còn gọi là Nhân đôi theo chiều ngang) - Mở rộng bằng cách nhân bản dịch vụ.

Phương pháp tương đối thông dụng và dễ tiếp cận nhất trong mở rộng chính là cố gắng chạy cùng lúc nhiều instance của cùng một hệ thống phía sau một đơn vị load balancer. Load Balancer làm nhiệm vụ phân phối các request giữa N instance giống hệt nhau. Đây là một cách tuyệt vời để nâng cao năng lực và tính Availability (tính sẵn sàng) của ứng dụng.

2. Mở rộng theo trục Z: Data Partitioning - Mở rộng bằng cách định tuyến vào phân vùng dữ liệu.

Trong mở rộng theo trục Z: các nhà phát triển cũng thực thi nhiều instance của cùng một ứng dụng nguyên khối, nhưng điểm khác biệt là mỗi instance lúc này chỉ xử lí một tập hợp con dữ liệu nhất định. Một bộ định tuyến (Router) đứng phía trước các instance để định tuyến nó đến instance phù hợp. Ví dụ như hình X đã quy ước việc xử lí  bằng userId. Bộ định tuyến dựa trên chữ cái đầu của trường dữ liệu userId chọn một trong N instance giống hệt nhau của ứng dụng. Mở rộng theo trục c Z là một cách hiệu quả để mở rộng quy mô ứng dụng nhằm xử lý khối lượng dữ liệu và giao dịch ngày càng tăng.

 

3. Mở rộng theo trục Y: Functional Decomposition - Mở rộng bằng cách phân chia một hệ thống thành các service. 

Service là một ứng dụng nhỏ triển khai chức năng tập trung ở phạm vi hẹp, chẳng hạn như quản lý đơn hàng, quản lý khách hàng, v.v. Lúc này, service có thể được mở rộng  theo trục X, mặc dù một số service cũng có thể mở rộng theo trục Z. Ví dụ như hình X chỉ có mỗi dịch vụ Đặt hàng (Order service) được triển khai mở rộng theo trục X. 

Định nghĩa bậc cao về kiến trúc microservice (microservices) là một kiểu kiến trúc phân tách chức năng của một ứng dụng thành một tập hợp các service. Lưu ý rằng định nghĩa này không nói gì về kích thước mà thay vào đó, quan trọng là mỗi service đều có một trách nhiệm chung và gắn kết.