Bài viết này được viết bởi Ankur Sethi, Sr. Product Manager, EC2, và Kinnar Sen, Sr. Specialist Solution Architect, AWS Compute.
Amazon EC2 Auto Scaling giúp khách hàng tối ưu hóa khả năng chứa của Amazon EC2 bằng cách đáp ứng động đến nhu cầu biến đổi. Dựa trên phản hồi từ khách hàng, chúng tôi đã cải thiện trải nghiệm tự động điều chỉnh với việc ra mắt các chính sách dự đoán tự động điều chỉnh. Tự động điều chỉnh dự đoán trước thêm các instances EC2 vào nhóm tự động điều chỉnh của bạn để đáp ứng các đỉnh điểm nhu cầu dự đoán. Điều này dẫn đến khả năng sẵn có và hiệu suất tốt hơn cho các ứng dụng của bạn có mô hình nhu cầu dự đoán và thời gian khởi động dài. Gần đây, chúng tôi đã ra mắt một số tính năng được thiết kế để giúp bạn đánh giá giá trị của dự đoán tự động điều chỉnh – các khuyến nghị chi tiết về việc sử dụng dự đoán tự động điều chỉnh dựa trên tiềm năng ảnh hưởng đến khả năng sẵn có và chi phí, và tích hợp với Amazon CloudWatch để liên tục giám sát tính chính xác của các dự đoán. Trong bài đăng này, chúng tôi sẽ thảo luận về các tính năng chi tiết và các bước mà bạn có thể dễ dàng áp dụng để tận hưởng các lợi ích của dự đoán tự động điều chỉnh.
Tóm tắt: Tăng dự đoán
EC2 Auto Scaling giúp khách hàng duy trì tính sẵn sàng của ứng dụng bằng cách quản lý khả năng và sức khỏe của cụm ứng dụng. Trước khi có tính năng dự đoán tự động quy mô, EC2 Auto Scaling đã cung cấp các chính sách quy mô động như theo dõi mục tiêu và quy mô bước. Các chính sách quy mô động này được cấu hình với một số đo lường Amazon CloudWatch đại diện cho tải ứng dụng. EC2 Auto Scaling luôn giám sát số liệu đo lường này và phản ứng theo chính sách của bạn, kích hoạt việc khởi chạy hoặc hủy bỏ các phiên bản. Mặc dù rất hiệu quả và được sử dụng rộng rãi, mô hình này là phản ứng, và đối với các đợt tăng tải lớn, có thể dẫn đến sự thiếu khả năng trong một khoảng thời gian ngắn khi cụm ứng dụng đang mở rộng. Khách hàng giảm thiểu điều này bằng cách áp dụng quy mô mở rộng mạnh mẽ và quy mô thu hẹp thận trọng để quản lý bộ đệm các phiên bản bổ sung. Tuy nhiên, đôi khi các ứng dụng mất nhiều thời gian để khởi động hoặc có một mô hình lặp lại với đột ngột tăng cao về yêu cầu. Những điều này có thể ảnh hưởng đến phản ứng ban đầu của hệ thống khi nó đang mở rộng. Khách hàng yêu cầu một cơ chế quy mô tích cực có thể quy mô khả năng trước các đợt tăng tải dự đoán được, và vì vậy chúng tôi đã cung cấp dự đoán tự động quy mô.
Predictive scaling được ra mắt để làm cho hành động tỷ lệ hoạt động trở nên chủ động bằng cách dự đoán các thay đổi cần thiết trong yêu cầu tính toán và tỷ lệ theo đó. Hành động tỷ lệ được xác định bởi ensemble machine learning (ML) được xây dựng với dữ liệu từ các mẫu tỷ lệ của nhóm tự động hóa của bạn, cũng như hàng tỷ điểm dữ liệu từ quan sát của chúng tôi. Predictive scaling nên được sử dụng cho các ứng dụng có yêu cầu thay đổi nhanh nhưng có một mô hình lặp đi lặp lại, các trường hợp yêu cầu nhiều thời gian để khởi động các instance hoặc nơi bạn đang kích hoạt tỷ lệ theo lịch trình cho các mẫu yêu cầu thông thường. Predictive scaling không chỉ dự đoán yêu cầu khả năng dựa trên lịch sử sử dụng, mà còn học liên tục, từ đó làm cho dự đoán chính xác hơn theo thời gian. Hơn nữa, chính sách predictive scaling được thiết kế chỉ để tỷ lệ mở rộng và không tỷ lệ thu hẹp nhóm tự động hóa của bạn, loại bỏ rủi ro kết thúc với khả năng nhỏ hơn vì dự đoán không chính xác. Bạn phải sử dụng chính sách tỷ lệ hoạt động động, tỷ lệ theo lịch trình hoặc cơ chế tùy chỉnh của riêng bạn cho các tỷ lệ thu hẹp. Trong trường hợp các đợt đòn bẩy yêu cầu đặc biệt, việc thêm chính sách tỷ lệ hoạt động động cũng có thể cải thiện hiệu suất ứng dụng của bạn bằng cách cầu nối khoảng cách giữa nhu cầu và khả năng dự đoán.
Các tính năng mới của Predictive Scaling
Chính sách Predictive Scaling có thể được cấu hình trong chế độ ‘Dự báo Chỉ’ không làm thay đổi dữ liệu để đánh giá độ chính xác của dự báo. Khi bạn đã sẵn sàng để bắt đầu tự động điều chỉnh, bạn có thể chuyển sang chế độ ‘Dự báo và Tự động điều chỉnh’. Bây giờ chúng tôi đề xuất khuyến nghị liệu chính sách của bạn có nên chuyển sang chế độ ‘Dự báo và Tự động điều chỉnh’ hay không để đạt được tính sẵn sàng cao hơn và tiết kiệm chi phí, giúp bạn tiết kiệm thời gian và nỗ lực không cần đánh giá thủ công. Bạn có thể thử nghiệm các cấu hình khác nhau bằng cách tạo nhiều chính sách Predictive Scaling trong chế độ ‘Dự báo Chỉ’ và chọn chính sách có hiệu quả tốt nhất về tính sẵn sàng và cải thiện chi phí.
Giám sát và quan sát là những yếu tố quan trọng của AWS Well Architected Framework. Bây giờ, chúng tôi cũng cung cấp các chỉ số CloudWatch cho các chính sách Predictive Scaling của bạn để bạn có thể giám sát tự động chính sách của mình cho các thay đổi mô hình nhu cầu hoặc các chu kỳ dự báo không chính xác kéo dài. Điều này sẽ giúp bạn giám sát các chỉ số hiệu suất chính và dễ dàng hơn để áp dụng các quy tắc tốt nhất của Khung kiến trúc AWS Well-Architected.
Trong các phần tiếp theo, chúng tôi sẽ đi sâu vào các chi tiết của hai tính năng này.
Đề xuất cho việc predictive scaling
Sau khi bạn thiết lập một nhóm Auto Scaling với chính sách predictive scaling ở chế độ Forecast Only như đã giải thích trong bài đăng giới thiệu về predictive scaling, bạn có thể xem lại kết quả dự báo một cách trực quan và điều chỉnh bất kỳ tham số nào để phản ánh chính xác hơn hành vi mà bạn mong muốn. Đánh giá chỉ dựa trên mặt trực quan có thể không rõ ràng nếu các mô hình scaling không đều. Hơn nữa, nếu bạn giữ các giá trị tối thiểu cao hơn, thì biểu đồ có thể cho thấy một đường thẳng cho khả năng thực tế vì dung lượng nhóm Auto Scaling của bạn là kết quả của cấu hình chính sách scaling hiện có và dung lượng tối thiểu mà bạn đã cấu hình. Điều này làm cho việc suy nghĩ xem liệu dung lượng thấp hơn do predictive scaling dự báo có để lại nhóm Auto Scaling của bạn với dung lượng không đủ khó khăn hơn.
Tính năng mới này cung cấp hướng dẫn chi tiết để chuyển chế độ predictive scaling sang chế độ Forecast and Scale dựa trên yếu tố về khả năng sẵn sàng và tiết kiệm chi phí. Để đánh giá khả năng sẵn sàng và tiết kiệm chi phí, chúng tôi so sánh các dự đoán với sức chứa thực tế và sức chứa tối ưu yêu cầu. Sức chứa tối ưu được suy ra dựa trên việc các instance của bạn đang chạy ở mức cao hơn hay thấp hơn giá trị mục tiêu cho chỉ số tỷ lệ tổn dụng CPU được xác định là một phần của cấu hình chính sách predictive scaling. Ví dụ, nếu một nhóm Auto Scaling đang chạy 10 instances ở mức 20% tỷ lệ tổn dụng CPU trong khi giá trị mục tiêu được xác định trong chính sách predictive scaling là 40%, thì các instance đang sử dụng không đầy đủ 50% và sức chứa yêu cầu được giả định là 5 instance (một nửa của sức chứa hiện tại của bạn). Đối với một nhóm Auto Scaling, dựa trên phạm vi thời gian mà bạn quan tâm (mặc định là hai tuần), chúng tôi tổng hợp sự tiết kiệm chi phí và ảnh hưởng đến khả năng sẵn sàng của predictive scaling. Ảnh hưởng đến khả năng sẵn sàng đo lường thời gian mà giá trị thực tế vượt quá giá trị mục tiêu mà bạn xác định là tối ưu cho mỗi chính sách. Tương tự, tiết kiệm chi phí đo lường tổng tiết kiệm dựa trên tỷ lệ sử dụng sức chứa của nhóm Auto Scaling cơ bản cho mỗi chính sách được xác định. Kết quả cuối cùng về chi phí và khả năng sẵn sàng sẽ đưa ra một khuyến nghị dựa trên:
- Nếu khả năng sẵn sàng tăng lên (hoặc không thay đổi) và chi phí giảm (hoặc không thay đổi), thì chuyển sang chế độ Dự báo và Tăng.
- Nếu khả năng sẵn sàng giảm, thì vô hiệu hóa dự báo tự động.
- Nếu khả năng sẵn sàng tăng lên nhưng chi phí tăng lên, khách hàng nên quyết định dựa trên ngưỡng trao đổi giữa chi phí và khả năng sẵn sàng của họ.

Hình 1: Khuyến nghị về Predictive Scaling trên bảng điều khiển EC2 Auto Scaling
Hình trên cho thấy cách bảng điều khiển hiển thị khuyến nghị cho một chính sách predictive scaling. Bạn có thông tin về việc chính sách có thể dẫn đến sự khả dụng cao hơn và giảm chi phí, dẫn đến khuyến nghị chuyển sang chế độ Dự báo và Tăng. Để đạt được tiết kiệm chi phí này, bạn có thể phải giảm giá trị dung lượng tối thiểu và mục tiêu đối với các chính sách tăng dung lượng động.
Để có giá trị tối đa từ tính năng này, chúng tôi khuyến nghị bạn tạo nhiều chính sách predictive scaling trong chế độ Chỉ Dự báo với các cấu hình khác nhau, chọn các đối số khác nhau và / hoặc các giá trị mục tiêu khác nhau. Giá trị mục tiêu là một cần cẩu quan trọng thay đổi cách đánh giá dung lượng phải được dự báo. Giá trị mục tiêu thấp hơn tăng dung lượng dự báo và dẫn đến sự khả dụng tốt hơn cho ứng dụng của bạn. Tuy nhiên, điều này cũng có nghĩa là nhiều đô la phải chi cho chi phí Amazon EC2. Tương tự, giá trị mục tiêu cao hơn có thể để lại cho bạn tình trạng không đầy đủ tài nguyên trong khi tăng dung lượng phản ứng giải quyết vấn đề trong vài phút. Ước tính riêng biệt về tác động chi phí và khả dụng được cung cấp cho mỗi chính sách predictive scaling. Chúng tôi khuyến nghị sử dụng một chính sách nếu hoặc sự khả dụng hoặc chi phí được cải thiện và biến số còn lại cải thiện hoặc không đổi. Miễn là có một mẫu dự đoán được, Auto Scaling được tăng cường với predictive scaling giữ cho khả dụng cao cho ứng dụng của bạn.
Theo dõi liên tục của việc dự báo tỷ lệ mở rộng trước (predictive scaling).
Khi bạn sử dụng một chính sách dự báo tỷ lệ mở rộng trước (predictive scaling policy) trong chế độ Dự báo và Mở rộng (Forecast and Scale) dựa trên khuyến nghị, bạn phải theo dõi chính sách dự báo tỷ lệ mở rộng trước (predictive scaling policy) cho các thay đổi mẫu nhu cầu hoặc dự báo không chính xác. Chúng tôi giới thiệu hai độ đo mới CloudWatch Metrics cho dự báo tỷ lệ mở rộng trước (predictive scaling) được gọi là ‘PredictiveScalingLoadForecast’ và ‘PredictiveScalingCapacityForecast’. Bằng cách sử dụng tính năng toán học CloudWatch metric math, bạn có thể tạo ra một độ đo tùy chỉnh để đo lường độ chính xác của dự báo. Ví dụ, để theo dõi xem chính sách của bạn có dự báo quá cao hay quá thấp, bạn có thể xuất bản các độ đo riêng biệt để đo lường các lỗi tương ứng. Trong đồ họa sau đây, chúng tôi cho thấy cách biểu thức toán học metric math có thể được sử dụng để tạo ra một sai số trung bình tuyệt đối cho dự báo quá cao trên các dự báo tải. Bởi vì dự báo tỷ lệ mở rộng trước (predictive scaling) chỉ có thể tăng dung lượng, nên hữu ích để cảnh báo khi chính sách dự báo quá cao để ngăn ngừa chi phí không cần thiết.

Hình 2: Vẽ đồ thị cho một độ đo độ chính xác bằng cách sử dụng tính toán độ đo trên CloudWatch
Trong đồ thị trước đó, tổng CPU Utilization của nhóm Auto Scaling được đại diện bằng chỉ số m1 màu cam trong khi tải được dự đoán bởi chính sách được đại diện bởi chỉ số m2 màu xanh lá cây. Chúng tôi sử dụng biểu thức sau để lấy tỷ lệ lỗi dự báo quá mức so với giá trị thực tế.
IF((m2-m1)>0, (m2-m1),0))/m1
Tiếp theo, chúng ta sẽ thiết lập một cảnh báo để tự động gửi thông báo sử dụng Amazon Simple Notification Service (Amazon SNS). Bạn có thể tạo các độ đo độ chính xác tương tự cho các dự báo năng lực, nhưng hãy nhớ rằng khi chính sách ở chế độ Dự báo và Tỷ lệ, nó đã bắt đầu ảnh hưởng đến năng lực thực tế. Do đó, việc đặt cảnh báo về độ chính xác dự báo tải có thể trực quan hơn vì tải thường độc lập với năng lực của một nhóm Auto Scaling.

Hình ảnh 3: Tạo một CloudWatch Alarm trên chỉ số độ chính xác
Trong hình ảnh trên, chúng ta đã đặt một cảnh báo sẽ kích hoạt khi chỉ số độ chính xác tùy chỉnh của chúng ta vượt quá 0,02 (20%) trong 10 trong tổng số 12 điểm dữ liệu gần nhất, tương đương với 10 giờ trong 12 giờ gần nhất. Chúng tôi ưu tiên đặt cảnh báo trên một số lượng dữ liệu lớn hơn để chúng tôi chỉ nhận được thông báo khi dự đoán tăng giảm dữ liệu không chính xác liên tục.
Kết luận
Với các tính năng mới này, bạn có thể đưa ra quyết định thông minh hơn về việc dự đoán tỷ lệ tự động và cấu hình nào là hợp lý nhất. Chúng tôi khuyến nghị bạn bắt đầu với chế độ Dự báo duy nhất và chuyển sang Chế độ Dự báo và Tăng theo các khuyến nghị. Khi ở chế độ Dự báo và Tăng, việc dự đoán tăng giảm sẽ thực hiện các hành động tăng giảm tích cực để các phiên bản của bạn được khởi chạy và sẵn sàng tham gia vào công việc trước khi nhu cầu được dự đoán. Sau đó, liên tục giám sát dự đoán để duy trì tính sẵn sàng cao và tối ưu hóa chi phí của ứng dụng của bạn. Bạn cũng có thể sử dụng các số liệu dự đoán tỷ lệ tự động mới và các tính năng CloudWatch, chẳng hạn như toán học số liệu, cảnh báo và thông báo, để giám sát và thực hiện hành động khi dự đoán tăng giảm vượt quá ngưỡng định sẵn trong một khoảng thời gian kéo dài.