

Khả năng mở rộng hạ tầng giúp ứng dụng đáp ứng nhu cầu thay đổi bằng cách bổ sung hoặc loại bỏ tài nguyên khi cần. Quá trình này thường được thực hiện bằng scale-up, scale-out hoặc kết hợp cả hai. Bài viết sẽ tập trung so sánh hai phương pháp mở rộng này.
Scale-up, thường được gọi là mở rộng theo chiều dọc (vertical scaling), là phương pháp bổ sung thêm tài nguyên cho một hệ thống hiện có để đạt được mức hiệu suất mong muốn.
Ví dụ, một cơ sở dữ liệu hoặc máy chủ web có thể cần thêm tài nguyên để duy trì hiệu suất ở một mức nhất định, qua đó đáp ứng các Thỏa thuận mức dịch vụ (Service Level Agreement – SLA). Hệ thống có thể được bổ sung thêm CPU, bộ nhớ, dung lượng lưu trữ hoặc tài nguyên mạng để duy trì hiệu suất ở mức mong muốn.
Khi thực hiện trên môi trường đám mây, các ứng dụng thường được chuyển sang những instance hoặc máy ảo mạnh hơn. Ứng dụng thậm chí có thể được di chuyển sang một máy chủ vật lý khác nhằm giảm thiểu thời gian gián đoạn, sau đó máy chủ cũ sẽ được ngừng sử dụng.
Toàn bộ quá trình này cần diễn ra một cách minh bạch và không gây ảnh hưởng đến khách hàng.

Scale-up cũng có thể được thực hiện ở cấp độ phần mềm bằng cách bổ sung thêm luồng xử lý, tăng số lượng kết nối hoặc tăng kích thước bộ nhớ đệm đối với các ứng dụng cơ sở dữ liệu. Những hoạt động scale-up như vậy đã được thực hiện tại các trung tâm dữ liệu tại chỗ trong nhiều thập kỷ.
Tuy nhiên, trong môi trường on-premises truyền thống, việc mua sắm và bổ sung tài nguyên để scale-up một hệ thống có thể mất nhiều tuần hoặc nhiều tháng. Trong khi đó, scale-up trên đám mây có thể chỉ mất vài phút, đồng thời có khả năng tác động đến các mô hình định giá.

Scale-out, còn được gọi là mở rộng theo chiều ngang (horizontal scaling), thường gắn liền với các kiến trúc phân tán (distributed architectures). Thay vì chỉ bổ sung tài nguyên cho một hệ thống hiện có, phương pháp này mở rộng năng lực hạ tầng bằng cách bổ sung các Node hoặc dịch vụ phân tán.
Có hai hình thức scale-out cơ bản:

Hiện nay, các nhà cung cấp dịch vụ đám mây (Cloud Service Provider – CSP) sử dụng cả hai hình thức scale-out trên, đồng thời kết hợp với scale-up cho từng thành phần riêng lẻ như tài nguyên điện toán, bộ nhớ, mạng và lưu trữ nhằm giảm chi phí.
Mở rộng theo chiều ngang giúp các nhà cung cấp dịch vụ dễ dàng cung cấp hạ tầng và dịch vụ theo mô hình “pay-as-you-grow”, tức là khách hàng trả phí tương ứng với mức độ tăng trưởng và mở rộng sử dụng. Điều này cũng ảnh hưởng đến chiến lược định giá của nhà cung cấp.
Hạ tầng siêu hội tụ ngày càng trở nên phổ biến trong các hệ thống đám mây riêng (private cloud) và tại các nhà cung cấp dịch vụ tier 2. Cách tiếp cận này không có loosely coupled cao như một số dạng kiến trúc phân tán khác.
Tuy nhiên, hạ tầng siêu hội tụ giúp những nhà quản lý CNTT vốn đã quen với kiến trúc truyền thống dễ dàng chuyển sang mô hình mở rộng theo chiều ngang và tận dụng các lợi ích về chi phí đi kèm.
Kiến trúc phân tán liên kết lỏng (Loosely coupled distributed architecture) cho phép từng thành phần trong kiến trúc được mở rộng một cách độc lập, nhờ đó loại bỏ hiệu quả các điểm nghẽn.
Một nhóm sản phẩm phần mềm có thể được xây dựng và triển khai dưới dạng các thành phần độc lập, mặc dù chúng vẫn phối hợp với nhau để quản lý một quy trình hoàn chỉnh.
Mỗi ứng dụng được cấu thành từ một tập hợp các dịch vụ đã được trừu tượng hóa, có khả năng hoạt động và vận hành độc lập. Nhờ đó, hệ thống có thể mở rộng theo chiều ngang ở cả cấp độ sản phẩm lẫn cấp độ dịch vụ.
Khả năng mở rộng còn có thể được phân chia chi tiết hơn dựa trên SLA, loại khách hàng như gói đồng, bạc hoặc vàng, hoặc theo từng loại API nếu nhu cầu sử dụng giữa các API có sự khác biệt. Cách tiếp cận này giúp nâng cao hiệu quả sử dụng khả năng mở rộng trong một hạ tầng nhất định.

| Tiêu chí | Scale-up (Mở rộng theo chiều dọc) | Scale-out (Mở rộng theo chiều ngang) |
| Định nghĩa | Tăng cường năng lực cho một hệ thống hoặc máy chủ duy nhất bằng cách thêm các tài nguyên như CPU, RAM, lưu trữ hoặc tăng sức mạnh tính toán. | Bổ sung thêm nhiều máy chủ, node, hoặc chia nhỏ cơ sở dữ liệu (shard) trên nhiều máy chủ để phân phối khối lượng công việc. |
| Độ phức tạp | Tương đối đơn giản vì bạn chỉ phải quản lý một hệ thống, một hệ điều hành và một phiên bản ứng dụng duy nhất. | Phức tạp hơn, đòi hỏi hệ thống phải có khả năng điều phối, cân bằng tải (load balancing), phân cụm (clustering) và quản lý tính nhất quán của dữ liệu. |
| Giới hạn mở rộng | Bị giới hạn bởi ngưỡng tối đa của phần cứng vật lý trên một bo mạch/máy chủ. | Có thể mở rộng gần như không giới hạn (tùy thuộc vào thiết kế kiến trúc mạng và phần mềm). |
| Tính sẵn sàng và Rủi ro | Có rủi ro lỗi toàn hệ thống (Single Point of Failure) nếu máy chủ duy nhất gặp sự cố. Việc nâng cấp thường yêu cầu thời gian chết (downtime). | Cung cấp tính sẵn sàng cao, dự phòng và khả năng chịu lỗi. Cho phép mở rộng hệ thống một cách liền mạch, không gây gián đoạn. |
| Khả năng tự động hóa (Autoscaling) | Ít khi được tự động hóa hoàn toàn vì quá trình tái triển khai hệ thống dọc thường cần thời gian chết tạm thời (để khởi động lại). | Rất phổ biến cho tự động hóa; hệ thống tự động khởi tạo hoặc tắt bớt tài nguyên để tối ưu chi phí mà không làm gián đoạn dịch vụ. |
| Mô hình chi phí | Chi phí có thể tăng vọt (theo cấp số nhân) khi phải mua các linh kiện hoặc máy chủ nguyên chiếc ở phân khúc cao cấp (premium phần cứng). | Mở rộng từng bước qua việc mua thêm node phổ thông (commodity hardware), linh hoạt và dễ kiểm soát vốn hơn. |
| Trường hợp sử dụng lý tưởng | Phù hợp với các ứng dụng nguyên khối (monolithic) cũ, môi trường yêu cầu độ trễ cực thấp, hệ thống cơ sở dữ liệu truyền thống / ERP. Khắc phục nhanh quá tải CPU/RAM. | Phù hợp với khối lượng công việc động, ứng dụng web lưu lượng cao, Cloud-native, Microservices, Container và hệ thống phân tán toàn cầu. |
Scale-up phù hợp khi doanh nghiệp cần nâng cấp nhanh một hệ thống hiện có, trong khi Scale-out tối ưu hơn cho ứng dụng phân tán, lưu lượng lớn và yêu cầu tính sẵn sàng cao. Việc lựa chọn Scale-up hay Scale-out cần dựa trên kiến trúc ứng dụng, khả năng mở rộng, ngân sách và mục tiêu vận hành của doanh nghiệp.
