This paper presents how an existing framework for offline performance optimization can be applied to microservice applications during the Release phase of the DevOps life cycle. Optimization of resource allocation configuration parameters for CPU and memory during the Release phase remains a largely unexplored problem as most research has focused on intelligent scheduling and autoscaling of microservices during the Ops stage of the DevOps cycle. Yet horizontal auto-scaling of containers, based on CPU usage for instance, may still leave these containers with an inappropriately allocated amount of memory, if no upfront fine-tuning of both resources is applied before the Deployment phase. We evaluate the performance optimization framework using the TeaStore microservice application and statistically compare different optimization algorithms, supporting informed decisions about their trade-offs between sampling cost and distance to the optimal resource configuration. This shows that upfront factor screening, for reducing the search space, is helpful when the goal is to find the optimal resource configuration with an affordable sampling budget. When the goal is to statistically compare different algorithms, screening must also be applied to make data collection of all data points in the search space feasible. If the goal is to find a near-optimal configuration, however, it is better to run bayesian optimization without screening.
翻译:本文阐述了如何将现有的离线性能优化框架应用于DevOps生命周期发布阶段的微服务应用。发布阶段CPU与内存资源分配配置参数的优化在很大程度上仍是一个未被充分探索的问题,因为大多数研究都集中在DevOps周期运维阶段的微服务智能调度与自动扩缩容上。然而,如果在部署阶段之前没有对两种资源进行前期精细调优,那么基于CPU使用率等指标的容器水平自动扩缩容,仍可能导致这些容器分配的内存容量不当。我们使用TeaStore微服务应用评估了该性能优化框架,并通过统计方法比较了不同的优化算法,从而支持在采样成本与最优资源配置距离之间进行权衡的明智决策。这表明,当目标是在可承受的采样预算内找到最优资源配置时,用于缩减搜索空间的前期因子筛选是有益的。当目标是对不同算法进行统计比较时,也必须应用筛选以使搜索空间中所有数据点的数据收集变得可行。然而,如果目标是找到接近最优的配置,则最好在不进行筛选的情况下运行贝叶斯优化。