Research of service level agreement aware autoscaling algorithms for containerized cloud-native applications
Abstract
The development of cloud-native applications focuses on scalability and loose coupling of containerized microservices to ensure smooth deployment on cloud or container orchestration platforms. An autoscaler is a crucial component responsible for dynamically provisioning compute resources. When dynamically provisioning resources, addressing issues such as timelines and the amount of resources to be provisioned is important. Therefore, most autoscaling algorithms aim to find a balance between avoiding Service Level Agreement (SLA) violations and effectively managing costs or energy. Various rules-based autoscaling approaches were created to address quality of service concerns and minimise the risk of SLA violations. When resources are allocated and adjusted as needed, an autoscaler typically evaluates current service performance by comparing it to a predefined service level indicator (SLI) value. However, this alone may be insufficient to address changes in SLA conformance. To respond appropriately, the autoscaler must also consider the system’s overall SLA fulfillment status.
This research presents two innovative self-adaptive autoscaling solutions for SLA-sensitive applications. The first solution focuses on maintaining the defined Service Level Objective (SLO) to recover from service degradation and achieve the desired service level. The second solution features a novel SLA-aware dynamic CPU threshold adjustment algorithm. The algorithm aims to ensure that the application has sufficient resources to operate at a level that keeps the number of response time violations compliant with the SLO. Additionally, it aims to ensure that the system operates as closely as possible to the defined Service Level Objectives, thus minimising resource wastage. The solution employs exploratory data analysis techniques in conjunction with moving average smoothing to determine the target utilisation threshold.
The Kubernetes Horizontal Pod Autoscaler (HPA) remains the most widely used threshold-based autoscaling due to its simple setup, operation, and seamless integration with other Kubernetes functionalities. For that reason, this research compares the autoscaling solutions proposed here with the Kubernetes Horizontal Pod Autoscaler and evaluates their effectiveness and performance across various real-world workload scenarios. The evaluation methods for algorithms focus on their ability to operate near-defined SLOs and the effectiveness of resource provisioning. The analysis of the experimental results demonstrates that these solutions are successful in SLA fulfillment and SLO restoration goals while providing an adequate amount of resources to achieve these objectives.
The results of the dissertation were published in six scientific publications, two of which were in reviewed scientific journals indexed in Web of Science and presented at five international conferences. Kuriant debesų kompiuterijos taikomąsias programas, daug dėmesio skiriama tam, kad konteinerizuoti mikroservisai būtų lengvai masteliuojami bei turėtų silpną sankibą, kas užtikrina sklandų taikomųjų sistemų diegimą debesų kompiuterijos ar konteinerių orkestravimo platformose. Automatinio masteliavimo komponentas (angl. autoscaler) yra esminis elementas, kai kalbama apie skaičiavimo resursų dinaminį paskirstymą, reaguojant į resursų poreikį. Kai automatinis masteliavimo komponentas paskirsto resursus, jis turi spręsti terminų bei tinkamo resursų kiekio nustatymo uždavinius, kurie daro įtaką paslaugos kokybei. Todėl dauguma automatinio masteliavimo algoritmų siekia rasti pusiausvyrą tarp susitarimo dėl paslaugų teikimo lygio (angl. Service Level Agreement, SLA) sąlygų pažeidimų išvengimo ir efektyvaus išlaidų ar energijos valdymo. Siekiant išspręsti paslaugų kokybės užtikrinimo problemas ir sumažinti SLA pažeidimų riziką, buvo sukurti įvairūs taisyklėmis pagrįsti automatinio mastelio keitimo metodai.
Šiame tyrime pristatomi du novatoriški, savaime prisitaikantis automatinio masteliavimo sprendimai. Pirmas sprendimas skirtas palaikyti paslaugų teikimo lygio tiksluose (angl. Service Level Obectives, SLOs) nurodytą lygį tais atvejais, kai jis pablogėja dėl netinkamo ar uždelsto resursų teikimo. Sprendimu siekiama palaikyti nustatytą paslaugų lygį bei atstatyti jį degradavus. Taip pat šiame tyri- me pristatomas naujas, žiniomis apie SLA pagrįstas dinaminio slenksčio (angl. threshold) koregavimo algoritmas, skirtas CPU apkrovos slenksčiams nustatyti. Algoritmas siekia užtikrinti tokį resursų kiekį, kad taikomosios programos atsako į užklausas laikas neviršytų nustatyto paslaugos lygio tiksluose daugiau kartų nei leidžiama pagal paslaugos susitarimą. Be to, algoritmas siekia užtikrinti, kad teikiamos paslaugos kokybė kuo labiau atitiktų nustatytą paslaugos teikimo lygio tikslą, taip mažindamas resursų švaistymą. Slenksčiui nustatyti naudojami tiriamieji duomenų analizės metodai ir slankiojo vidurkio glodinimas.
HPA yra plačiausiai naudojamas automatinio masteliavimo komponentas. Jis išlieka populiarus dėl pakankamai paprasto valdymo ir integravimo su kitais Kubernetes komponentais. Dėl šios priežasties tyrime siūlomi automatinio masteliavimo sprendimai yra palyginti su HPA. Tyrimo tikslas yra įvertinti siūlomų sprendimų gebėjimą veikti pagal nustatytus SLO, kartu įvertinant jų efektyvumą paskirstyti resursus, esant įvairių tipų apkrovoms. Rezultatų analizė rodo, kad siūlomi sprendimai sėkmingai paskirsto resursus, užtikrindami SLO palaikymą ar SLO atkūrimą.
Disertacijos rezultatai buvo paskelbti 6 moksliniuose leidiniuose, iš kurių 2 – recenzuojamuose mokslo žurnaluose, indeksuotuose Web of Science, ir pristatyti 5 tarptautinėse konferencijose.