요즘 microservice로 옮겨감. 모니터하면서 병목이 되는 서비스를 독립적으로 확장할 수 있는 유연성이 있지만 여전히 SLA 보장 어려움
첫째로 graph 의존성 때문에 microservice 단위에서 효율화하면서 End-to-End latency 보장하는 것 어려움
둘째로, 종종 microservice container가 batch application과 같은 노드에 배치돼서 자원 간섭 (resource interference) 발생해서 성능 불균형 유발
셋째로, 여러 서비스가 microservice를 이용하므로 서로 다른 workload 패턴을 갖는다
기존 노력들 있지만 한 서비스가 다수의 critical microservice를 포함할 때 독립적으로 고치는 것은 sub-optimal results가 될 수 있다 → 여기에 대한 선행 연구가 없다.
결과적으로 production 환경에서 not scalable하다
단순 실험에서 특정 서비스를 우선 순위로 처리하게 할 때 40% 자원 절감한 결과도 있다.
그래서 모든 서비스에 동적으로 SLA를 전역적으로 관리하는 효율적인 메커니즘 필요하여 Erm을 제안한다.
Erm은 tail letency를 workload, container 수, resource inference의 함수로 표현된 piecewise function으로 정량화하여, 그래프 구조를 분석하고 global optimization을 수행한다.
이를 통해 최소 자원 사용량으로 E2E SLA를 맞춘다
shared microservice에서는 priority-based scheduling을 통해 지연에 민감한 마이크로서비스를 포함한 서비스에 우선순위 부여한다.
Erm에는 convex optimization (블록 최적화), 낮은 계산 복잡도를 갖는 그래프 알고리즘 설계 등 내용도 있고, Kubernetes위에 prototype을 구현했다.
요약하면, Erms는 microservice latency의 최적 target 계산하고, 스케쥴링 정책 넣고, kubernetes에서 prototype으로 구현했다.