  Cloud applications are increasingly moving away from monolithic services to
agile microservices-based deployments. However, efficient resource management
for microservices poses a significant hurdle due to the sheer number of loosely
coupled and interacting components. The interdependencies between various
microservices make existing cloud resource autoscaling techniques ineffective.
Meanwhile, machine learning (ML) based approaches that try to capture the
complex relationships in microservices require extensive training data and
cause intentional SLO violations. Moreover, these ML-heavy approaches are slow
in adapting to dynamically changing microservice operating environments. In
this paper, we propose PEMA (Practical Efficient Microservice Autoscaling), a
lightweight microservice resource manager that finds efficient resource
allocation through opportunistic resource reduction. PEMA's lightweight design
enables novel workload-aware and adaptive resource management. Using three
prototype microservice implementations, we show that PEMA can find efficient
resource allocation and save up to 33% resource compared to the commercial
rule-based resource allocations.
