Исследователи из Корнеллского университета описали влияние микросервисов на стек аппаратных и программных технологий и представили открытый бенчмарк DeathStarBench, с помощью которого проводился анализ.
Современные системы состоят из десятков и сотен различных микросервисов, которые образуют чарующие диаграммы связи, напоминающие «Звезду смерти». DeathStarBench предназначен для изучения особенностей подобных систем и их отличия от монолитов. Этот бенчмарк рассчитан на многоуровневые системы и фиксирует корреляцию между уровнями. С его помощью можно изучить конфликты в сети и каскадные нарушения QoS из-за зависимостей между уровнями, поведение систем при запуске различных приложений и работе с множеством периферийных устройств.
Пример архитектуры медиасервиса из пакета DeathStarBench.
DeathStarBench объединяет примеры социальной сети, медиасервиса, сервиса электронной коммерции, банковской системы и два варианта приложения для координации беспилотников (с переносом вычислений в облако и без него). Каждый сервис включает в себя десятки микросервисов на разных языках и моделях программирования — Node.js, Python, C / C ++, Java, Javascript, Scala и Go — и использует приложения с открытым исходным кодом, такие как NGINX, memcached, MongoDB, Cylon и Xapian.
Состав и распределение кода по сервисам DeathStarBench.
Исследователи проделали огромную работу. Создали собственные API-интерфейсы RPC и RESTful с помощью таких популярных сред, как Apache Thrift и gRPC. Для контроля прохождения пользовательских запросов через микросервисы, разработали упрощенную и прозрачную распределенную систему трассировки, которая отслеживает RPC-запросы. В рамках исследования ученые оценили эффективность текущих архитектур ЦОД и показали, какие изменения позволят лучше соответствовать требованиям микросервисов к производительности и ресурсам.
DeathStarBench уже используется в нескольких академических и промышленных учреждениях, но авторы обещали выложить бенчмарк с GPL-лицензией. Они надеются, что благодаря открытому доступу появятся новые исследования в этой области.