대규모 데이터센터는 여러 cloud service를 hosting 중. 대부분은 latency-critical 한데도 높은 throughput과 낮은 tail latency 요구하며 frequent SW update 필요
그래서 monolithic service에서 수십, 수백 개의 단일 목적의 loosely-coupled microservice로 구성된 graph 구조로 변환 중
microservice의 모듈형 설계는 시스템 복잡도 관리하는데 효과적이고 배포 확장 업데이트 개별적으로 가능해서 service elasticity 향상시키며, 개발 간소화됨
또한 프로그래밍 언어 및 framework 이질성 허용해서 서로 간의 통신은 공통 API만 있으면 됨 (주로 RPC or RESTful API) & correctness 및 성능 디버깅 단순화함
유망한 구조지만 cloud management, programming framework, os, datacenter HW 설계 등 다양한 요소 영향
논문에선 end-to-end 대표 application 모음 사용해서 microservice가 cloud system stack 전반 - HW to APP - 영향을 탐구
DeathStarBench는 6가지 e-to-e 서비스로 구성 (Social Network, Mediaservices, e-commerce, banking, swarm), Apache Thrift와 gRPC와 같은 open source framework 활용
각 서비스는 수십개 microservice 포함하고 다양한 언어로 구성되며 NGINX, memcached, MongoDB, Cylon, Xapin과 같은 Open Source Application 활용
각 microservice의 연산량 자체는 작더라도 각 tier가 요구하는 latency는 일반적인 application보다 엄격함을 보일 것
microservice도 전통적인 cloud app.과 유사하게 kernel mode major인데 network request를 처리하는데 시간 많이 쓰고 RPC 등 API에서의 통신이 주요 원인
Social Network만 microservice인데 network 비중 높음, 이거 FPGA에 offload해서 개선할거임
또 microservice 때문에 datacenter에서 QoS viloation도 생기고 성능 예측도 어려워짐
여러 dependency가 발생하며 하나라도 잘못되면 tail latency 곱창나는데 social network에서 10배까지 늘기도.