  Resource management for cloud-native microservices has attracted a lot of
recent attention. Previous work has shown that machine learning (ML)-driven
approaches outperform traditional techniques, such as autoscaling, in terms of
both SLA maintenance and resource efficiency. However, ML-driven approaches
also face challenges including lengthy data collection processes and limited
scalability. We present Ursa, a lightweight resource management system for
cloud-native microservices that addresses these challenges. Ursa uses an
analytical model that decomposes the end-to-end SLA into per-service SLA, and
maps per-service SLA to individual resource allocations per microservice tier.
To speed up the exploration process and avoid prolonged SLA violations, Ursa
explores each microservice individually, and swiftly stops exploration if
latency exceeds its SLA.
  We evaluate Ursa on a set of representative and end-to-end microservice
topologies, including a social network, media service and video processing
pipeline, each consisting of multiple classes and priorities of requests with
different SLAs, and compare it against two representative ML-driven systems,
Sinan and Firm. Compared to these ML-driven approaches, Ursa provides
significant advantages: It shortens the data collection process by more than
128x, and its control plane is 43x faster than ML-driven approaches. At the
same time, Ursa does not sacrifice resource efficiency or SLAs. During online
deployment, Ursa reduces the SLA violation rate by 9.0% up to 49.9%, and
reduces CPU allocation by up to 86.2% compared to ML-driven approaches.
