Mô hình Auto Scaling - Mô hình kiến trúc đám mây
Mô hình Auto Scaling là mô hình thiết yếu giúp tự động hóa các hoạt động làm cho việc mở rộng quy mô theo chiều ngang trở nên thiết thực hơn và tiết kiệm chi phí hơn. Mở rộng quy mô theo cách thủ công thông qua công cụ quản lý được lưu trữ trên web của nhà cung cấp dịch vụ đám mây giúp giảm hóa đơn hàng tháng của bạn.
Nhưng tự động hóa có thể thực hiện công việc tối ưu hóa chi phí tốt hơn, với ít nỗ lực thủ công hơn dành cho các tác vụ mở rộng quy mô thông thường. Tự động hóa có thể phản hồi các tín hiệu từ chính dịch vụ đám mây và mở rộng quy mô một cách nhanh chóng theo nhu cầu thực tế.
Hai mục tiêu của tự động mở rộng quy mô là tối ưu hóa tài nguyên được sử dụng bởi ứng dụng đám mây (giúp tiết kiệm tiền) và giảm thiểu sự can thiệp của con người (giúp tiết kiệm thời gian và giảm lỗi). Cùng Bizfly Cloud tìm hiểu những thông tin chi tiết ngay tại đây nhé.
Bối cảnh
Mô hình Auto Scaling hiệu quả trong việc đối phó với những thách thức sau:
- Mở rộng quy mô hiệu quả về chi phí của các tài nguyên tính toán, chẳng hạn như tầng web hoặc tầng dịch vụ.
- Theo dõi liên tục các nguồn lực biến động là cần thiết để tiết kiệm tối đa chi phí và tránh chậm trễ.
- Các yêu cầu mở rộng thường xuyên liên quan đến tài nguyên đám mây như các nút xử lý, lưu trữ dữ liệu, hàng đợi (queues) hoặc các thành phần co giãn khác.
Mô hình này giả định một kiến trúc mở rộng quy mô theo chiều ngang và một môi trường thân thiện với việc mở rộng quy mô có thể đảo ngược. Cũng có thể mở rộng quy mô theo chiều dọc (bằng cách thay đổi kích thước máy ảo), mặc dù không được xem xét trong mô hình này.
Tầm quan trọng của Cloud
Nền tảng đám mây hỗ trợ toàn bộ việc quản lý tài nguyên, mang lại khả năng tự động hóa phong phú cho khách hàng. Những khả năng này cho phép mở rộng quy mô có thể đảo ngược và làm cho nó có hiệu quả cao khi được sử dụng kết hợp với các ứng dụng gốc đám mây được xây dựng để điều chỉnh một cách hợp lý để quản lý tài nguyên động và mở rộng quy mô.
Mô hình này bao gồm sự gia tăng chồng chéo vốn có trong các hoạt động phát triển và vận hành trên đám mây. Sự chồng chéo này được gọi là DevOps, một từ ghép của “Development” và “Operations”.
Mô hình này không ảnh hưởng đến khả năng mở rộng của ứng dụng. Nó có thể mở rộng hoặc không, bất kể nó có được tự động hóa hay không. Hiệu quả hoạt động giúp giảm chi phí trực tiếp trả cho nhà cung cấp đám mây, đồng thời giảm thời gian nhân viên dành cho các hoạt động thủ công thông thường.
Các nút xử lý là tài nguyên phổ biến nhất để mở rộng quy mô, đảm bảo số lượng nút dịch vụ hoặc máy chủ web phù hợp. Tính năng auto-scaling có thể duy trì các tài nguyên phù hợp ngay lập tức và có thể làm như vậy trên bất kỳ tài nguyên nào có thể được hưởng lợi từ quy mô tự động, chẳng hạn như lưu trữ dữ liệu và hàng đợi. Mẫu này tập trung vào các nút tính toán tự động mở rộng quy mô. Các kịch bản khác tuân theo những ý tưởng cơ bản tương tự, nhưng nhìn chung có liên quan nhiều hơn.
Tính năng auto-scaling với sự can thiệp tối thiểu của con người yêu cầu bạn lên lịch cho các event đã biết (chẳng hạn như thời gian nghỉ ngơi trong Superbowl hoặc giờ làm việc so với ngoài giờ làm việc) và tạo các quy tắc phản ứng với các tín hiệu môi trường (chẳng hạn như mức tăng đột ngột hoặc giảm mức sử dụng). Một cách tiếp cận tự động điều chỉnh tốt sẽ giống như hình minh họa dưới đây, trong đó các nguồn lực thay đổi tùy theo nhu cầu. Các nhu cầu dự kiến có thể được điều khiển thông qua một lịch trình, với các tình huống ít dự đoán hơn được xử lý theo phản ứng với các tín hiệu môi trường.
Tự động hóa dựa trên các quy tắc và tín hiệu
Nền tảng đám mây có thể được tự động hóa, bao gồm các giao diện lập trình để cung cấp và giải phóng tài nguyên thuộc mọi loại. Mặc dù có thể lập trình trực tiếp giải pháp auto scaling bằng các dịch vụ quản lý nền tảng đám mây, nhưng việc sử dụng giải pháp có sẵn phổ biến hơn.
Cảnh báo: Cần biết rằng tự động mở rộng quy mô có chi phí riêng. Việc sử dụng Phần mềm dưới dạng Dịch vụ (SaaS) cung cấp có thể có chi phí trực tiếp, cũng như hành động thăm dò môi trường thời gian chạy của bạn để tìm tín hiệu, sử dụng các dịch vụ cung cấp có lập trình (cho dù từ mã của bạn hay giải pháp SaaS) và tự lưu trữ một công cụ autoscaling. Đây thường là những chi phí tương đối nhỏ.
Các giải pháp có sẵn khác nhau về mức độ phức tạp và hoàn chỉnh. Chức năng sẽ cho phép thể hiện các quy tắc sau đối với ứng dụng ngành kinh doanh được sử dụng nhiều trong giờ làm việc bình thường, nhưng được sử dụng không thường xuyên ngoài giờ làm việc bình thường:
- Vào lúc 7:00 tối (giờ địa phương), hãy giảm số lượng nút máy chủ web xuống còn 2.
- Vào lúc 7:00 sáng, tăng số lượng nút máy chủ web lên 10.
- Vào lúc 7:00 tối thứ Sáu, hãy giảm số lượng nút máy chủ web xuống còn 1.
Các quy tắc riêng lẻ được liệt kê không quá phức tạp, nhưng vẫn giúp giảm chi phí. Lưu ý rằng quy tắc cuối cùng chồng lên quy tắc đầu tiên. Công cụ tự động mở rộng quy mô mà bạn lựa chọn sẽ cho phép bạn thể hiện các ưu tiên (quy tắc tối thứ Sáu được ưu tiên hơn). Hơn nữa, các quy tắc có thể được lên lịch; trong tập hợp được liệt kê ở trên, hai quy tắc đầu tiên có thể bị hạn chế để không chạy vào cuối tuần. Bạn chỉ bị giới hạn bởi trí tưởng tượng của bạn và tính linh hoạt của giải pháp tự động mở rộng quy mô của bạn.
Dưới đây là một số quy tắc linh hoạt hơn dựa trên các tín hiệu ít dự đoán hơn từ môi trường:
- Nếu độ dài hàng đợi trung bình trong giờ trước nhỏ hơn 25, hãy tăng số lượng nút xử lý hóa đơn lên 1.
- Nếu độ dài hàng đợi trung bình trong giờ trước nhỏ hơn 5, hãy giảm số lượng nút xử lý hóa đơn đi 1.
Các quy tắc này phản ứng với các điều kiện môi trường. Các quy tắc cũng có thể được viết để đáp ứng hiệu suất của máy, chẳng hạn như bộ nhớ được sử dụng, sử dụng CPU, v.v. Thông thường có thể diễn đạt các điều kiện tùy chỉnh có ý nghĩa đối với ứng dụng của bạn, ví dụ: Nếu thời gian trung bình để xác nhận đơn đặt hàng của khách hàng trong một giờ qua là hơn mười phút, hãy tăng số nút xử lý đơn đặt hàng lên một.
Một số tín hiệu (chẳng hạn như thời gian phản hồi từ một nút xử lý) có thể được kích hoạt trong trường hợp nút bị lỗi, vì thời gian phản hồi sẽ giảm xuống 0. Cần biết rằng nền tảng đám mây cũng can thiệp để thay thế các nút bị lỗi hoặc các nút không còn phản hồi.
Giải pháp auto-scaling cũng có thể hỗ trợ các quy tắc nhìn nhận chi phí tổng thể và giúp bạn tuân thủ ngân sách.
Bộ quy tắc mẫu đầu tiên được áp dụng cho các nút máy chủ web và bộ quy tắc thứ hai được áp dụng cho các nút xử lý hóa đơn. Cả hai bộ quy tắc có thể áp dụng cho cùng một ứng dụng.
Ghi chú: Mở rộng quy mô một phần của ứng dụng không có nghĩa là mở rộng toàn bộ ứng dụng.
Trên thực tế, khả năng mở rộng quy mô một cách độc lập các concern trong kiến trúc của bạn là một đặc tính quan trọng của việc tối ưu hóa chi phí. Khi các đơn vị mở rộng quy mô xác định yêu cầu tài nguyên được phân bổ, chúng có thể được kết hợp trong các quy tắc auto-scaling.
Đáp ứng với việc mở rộng quy mô theo chiều ngang
Việc cấp phép đám mây không thể ngay lập tức. Việc triển khai và khởi động một nút xử lý mới mất nhiều thời gian (có thể là mười phút hoặc hơn). Nếu trải nghiệm người dùng mượt mà là điều quan trọng, hãy ưu tiên các quy tắc đáp ứng sớm các xu hướng để có khả năng đáp ứng nhu cầu kịp thời.
Một số ứng dụng sẽ chọn tuân theo quy tắc N + 1, trong đó N + 1 nút được triển khai mặc dù chỉ có N nút thực sự cần thiết cho hoạt động hiện tại. Điều này cung cấp bộ đệm trong trường hợp hoạt động tăng đột biến, đồng thời đảm bảo trong trường hợp có sự cố phần cứng không mong muốn trên một nút. Nếu không có bộ đệm này, có nguy cơ các request đến có thể làm quá tải các nút còn lại, giảm hiệu suất của chúng và thậm chí dẫn đến các request của người dùng bị hết thời gian chờ hoặc không thành công. Một nút quá tải sẽ không cung cấp trải nghiệm người dùng thuận lợi.
Công cụ auto-scaling của bạn phải có một số tính năng thông minh tích hợp có liên quan đến nền tảng đám mây để ngăn nó hoạt động quá mức. Ví dụ: việc tính tiền thuê nút diễn ra theo gia số giờ đồng hồ: thuê từ 1: 00 - 1:30 có giá tương tự như thuê từ 1: 00 - 2:00. Quan trọng hơn, thuê từ 1:50 - 2:10 kéo dài hai giờ đồng hồ, vì vậy bạn sẽ bị tính phí cho cả hai.
Hãy cẩn thận khi đặt giới hạn thấp hơn. Nếu bạn cho phép giảm xuống một nút duy nhất, hãy hiểu rằng đám mây được xây dựng trên thiết bị phần cứng và thỉnh thoảng sẽ có lỗi. Đây thường không phải là phương pháp tốt nhất đối với các nút phục vụ người dùng tương tác, nhưng có thể thích hợp trong một số trường hợp chẳng hạn như tính khả dụng hiếm/lẻ tẻ vào cuối tuần. Việc hạ xuống một nút duy nhất thường tốt cho các nút không có người dùng tương tác (ví dụ: nút tạo hóa đơn).
Đặt giới hạn, ghi đè khi cần thiết
Thực hiện tự động mở rộng quy mô không có nghĩa là từ bỏ toàn quyền kiểm soát. Chúng ta có thể thêm ranh giới mở rộng quy mô trên và dưới để giới hạn phạm vi mở rộng quy mô tự động được phép (ví dụ: có thể luôn có một số dự phòng ở cấp thấp và có thể cần duy trì ngân sách tài chính ở cấp cao). Các quy tắc auto-scaling có thể được sửa đổi khi nhu cầu phát triển và có thể bị vô hiệu hóa bất cứ khi nào cần sự can thiệp của con người. Đối với các trường hợp phức tạp không thể hoàn toàn tự động, các giải pháp auto-scaling thường có thể đưa ra cảnh báo, thông báo cho con người về bất kỳ tình trạng nào cần được chú ý đặc biệt.
Cảnh báo: Nền tảng đám mây của bạn có thể cung cấp Service Level Agreement (SLA) xác nhận rằng phiên bản máy ảo của bạn sẽ chạy và có thể truy cập được từ Internet trong một số phần trăm thời gian trong bất kỳ tháng nhất định nào. Tuy nhiên, có một lưu ý: chúng cũng yêu cầu chạy ít nhất hai nút instance của bất kỳ loại nhất định nào để SLA có hiệu lực. Yêu cầu này có ý nghĩa hoàn hảo: khi chỉ chạy với một nút duy nhất, bất kỳ sự gián đoạn nào đối với nút đó sẽ dẫn đến downtime.
Lưu ý các giới hạn mở rộng quy mô bắt buộc của nền tảng
Các nền tảng đám mây công cộng (public cloud) thường có giới hạn mở rộng mặc định cho các tài khoản mới. Điều này nhằm mục đích bảo vệ chủ sở hữu tài khoản mới khỏi chính họ (bằng cách không vô tình mở rộng quy mô lên 10.000 nút) và hạn chế khả năng hiển thị cho các nhà cung cấp đám mây công cộng. Bởi vì việc thanh toán trên tài khoản trả ngay thường xảy ra vào cuối mỗi tháng, và nếu như một người nào đó có ý định bất chính đăng ký bằng thẻ tín dụng bị đánh cắp, thì thật khó để bắt họ phải chịu trách nhiệm. Các biện pháp đối phó được đưa ra bao gồm yêu cầu hỗ trợ một lần để nâng các giới hạn mềm đối với tài khoản của bạn, chẳng hạn như số core mà tài khoản của bạn có thể cung cấp.
Tự động mở rộng quy mô các loại tài nguyên khác
Hầu như tất cả các cuộc thảo luận đều tập trung vào việc tự động mở rộng quy mô cho các máy ảo, vậy còn các loại tài nguyên khác thì sao? Hãy xem xét một vài kịch bản nâng cao hơn.
Tầng web chuyển dữ liệu đến tầng dịch vụ thông qua hàng đợi (queue). Điểm mấu chốt là cả hai bên đều phụ thuộc vào khả năng truy cập nhanh và đáng tin cậy vào hàng đợi đó. Trong khi hầu hết các ứng dụng sẽ không gặp sự cố này, các hàng đợi riêng lẻ có giới hạn về khả năng mở rộng. Điều gì sẽ xảy ra nếu PoP quá phổ biến đến mức nó phải xử lý quá nhiều thông báo hàng đợi mỗi giây đến mức một hàng đợi không còn đủ nữa? Khi một hàng đợi không đủ, giải pháp là mở rộng quy mô theo chiều ngang thành hai hàng, sau đó là ba hàng, v.v. Ngược lại, chúng ta có thể thu nhỏ theo chiều ngang (hoặc mở rộng) khi nhu cầu giảm dần.
Đối với cơ sở dữ liệu, hãy xem một kịch bản bán vé trực tuyến cho một sự kiện lớn. Ngay trước khi vé được bán, dữ liệu bán vé sẽ được phân phối qua nhiều SQL cơ sở dữ liệu để xử lý tải cần thiết để bán hàng chục ngàn vé trong vòng vài phút. Việc lưu trữ số lượng người dùng sẽ giúp quá trình xử lý được dễ dàng. Sau khi tất cả các vé được bán, dữ liệu được tổng hợp và thừa kế cơ sở dữ liệu phiên bản sẽ được phát hành.
Mô hình Auto Scaling là một mô hình hoạt động cần thiết để tự động hóa quản trị đám mây. Bằng cách tự động hóa các hoạt động mở rộng quy mô thông thường, việc tối ưu hóa chi phí trở nên hiệu quả hơn với ít nhân lực hơn. Các ứng dụng gốc trên nền tảng đám mây xử lý một cách linh hoạt các mức tăng hoặc giảm động trong các mức tài nguyên. Đám mây giúp bạn dễ dàng kết nối với các dịch vụ giám sát và mở rộng quy mô đám mây với các tùy chọn tự lưu trữ có sẵn.
Auto scaling là một tính năng hỗ trợ được tính hợp sẵn trong hệ thống Cloud server của Bizfly Cloud, cho phép tự động mở rộng hoặc thu hẹp tùy thuộc vào quy mô hoạt động của khách hàng tại thời điểm cụ thể, giúp khách hàng của Bizfly Cloud trải nghiệm một nền tảng không chỉ mạnh mẽ mà còn vô cùng linh hoạt, tiện lợi. Để được tư vấn miễn phí vui lòng truy cập: https://bizflycloud.vn/auto-scaling