When deploying microservices in production clusters, it is critical to automatically scale containers to improve cluster utilization and ensure service level agreements (SLA). Although reactive scaling approaches work well for monolithic architectures, they are not necessarily suitable for microservice frameworks due to the long delay caused by complex microservice call chains. In contrast, existing proactive approaches leverage end-to-end performance prediction for scaling, but cannot effectively handle microservice multiplexing and dynamic microservice dependencies.
In this paper, we present Madu, a proactive microservice auto-scaler that scales containers based on predictions for individual microservices. Madu learns workload uncertainty to handle the highly dynamic dependency between microservices. Additionally, Madu adopts OS-level metrics to optimize resource usage while maintaining good control over scaling overhead. Experiments on large-scale deployments of microservices in Alibaba clusters show that the overall prediction accuracy of Madu can reach as high as 92.3% on average, which is 13% higher than the state-of-the-art approaches. Furthermore, experiments running real-world microservice benchmarks in a local cluster of 20 servers show that Madu can reduce the overall resource usage by 1.7X compared to reactive solutions, while reducing end-to-end service latency by 50%.
이 논문을 읽어서 무엇을 배울 수 있는지 알려주세요! 🤔
introduction: 마이크로서비스는 오버프로비저닝 되는 경향이 있다.
related works: auto-scaler
proactive: 자원을 예측하여 부족해지기 전에 자원을 더 할당해주는 방식, K8S HPA, Google Autopilot[EuroSys'20]
reactive: 자원 사용량이 부족해지면 늘리는 사후처리방식, DUBNN[NeurlPS’17] , BNN[NeurlPS’19]
method: uncertainty 개념을 워크로드를 정의할 때 사용했고워크로드의 uncertainty를 예측함으로써 마이크로서비스 성능도 함께 선형적으로 예측
experiment: 알리바바 마이크로서비스 트레이스와 벤치마크 테스트를 진행 -> MADU가 소규모, 대규모 워크로드에서 높은 정확도를 보였으며, 예측 시 레이턴시도 짧다는 장점
conclusion & discussion: 본 논문의 저자는 MADU가 전체 시스템에 대해 최적의 효율을 달성할 수 있으나, 동시에 원하는 서비스 수준 협약 SLA 목표를 충족할 수는 없다는 한계점을 언급했다.
어떤 내용의 논문인가요? 👋
워크로드 예측을 통해 컨테이너 스케일링을 효율적으로 할 수 있는 방법에 관한 연구
Abstract (요약) 🕵🏻♂️
When deploying microservices in production clusters, it is critical to automatically scale containers to improve cluster utilization and ensure service level agreements (SLA). Although reactive scaling approaches work well for monolithic architectures, they are not necessarily suitable for microservice frameworks due to the long delay caused by complex microservice call chains. In contrast, existing proactive approaches leverage end-to-end performance prediction for scaling, but cannot effectively handle microservice multiplexing and dynamic microservice dependencies.
In this paper, we present Madu, a proactive microservice auto-scaler that scales containers based on predictions for individual microservices. Madu learns workload uncertainty to handle the highly dynamic dependency between microservices. Additionally, Madu adopts OS-level metrics to optimize resource usage while maintaining good control over scaling overhead. Experiments on large-scale deployments of microservices in Alibaba clusters show that the overall prediction accuracy of Madu can reach as high as 92.3% on average, which is 13% higher than the state-of-the-art approaches. Furthermore, experiments running real-world microservice benchmarks in a local cluster of 20 servers show that Madu can reduce the overall resource usage by 1.7X compared to reactive solutions, while reducing end-to-end service latency by 50%.
이 논문을 읽어서 무엇을 배울 수 있는지 알려주세요! 🤔
같이 읽어보면 좋을 만한 글이나 이슈가 있을까요?
레퍼런스의 URL을 알려주세요! 🔗
markdown 으로 축약하지 말고, 원본 링크 그대로 그냥 적어주세요!