Как оценить количество ресурсов, необходимых для работы микросервиса?

Посоветуйте что почитать/посмотреть для того чтобы научиться давать грубую верхнеуровневую оценку ресурсов, необходимых для работы микросервисов. Речь о сервисах, развёрнутых Kubernetes, Openshift или иных средах виртуализации.

Для примера, предположим, что есть (сферический в вакууме) CRUD сервис, который должен обрабатывать 1000 rps. Или же есть (тоже в вакууме) сервис, который должен загружать 100 файлов размером 1Мб за секунду.

Как оценить сколько CPU/RAM им потребуется? С чего начинать? Предположим, что точная оценка не требуется. Даже погрешность в несколько раз будет приемлемой.

Например, для оценки latency существуют подобные таблицы: https://gist.github.com/jboner/2841832?permalink_c...

Есть ли что-либо похожее для оценки аппаратных ресурсов в зависимости от типа операций?
  • Вопрос задан
  • 399 просмотров
Решения вопроса 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Нагрузочным тестированием.
Для примера, предположим, что есть (сферический в вакууме) CRUD сервис ... Предположим, что точная оценка не требуется. Даже погрешность в несколько раз будет приемлемой.
Сервисов в вакууме не бывает, разный код и внешние зависимости будут влиять по-разному на использование ресурсов с разбегом в несколько порядков.
Например, для оценки latency существуют подобные таблицы
Путаете физику с лирикой. В приведённой вами таблице значения вырастают из физических и технических ограничений.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Я могу двум разработчикам из моей команды дать написать микросервис по одному ТЗ и на одних технологиях, а на выходе получаться сервисы с разной производительностью и разным потреблением ресурсов. Как раз для сферических в вакууме случаев невозможна даже приблизительная оценка. При достаточно профессиональной команде и полной свободе выбора технологических решений можно идти от обратного - определить в ТЗ границы доступных ресурсов.
Ответ написан
Комментировать
@vitaly_il1
DevOps Consulting
Как уже сказали - для сферического сервиса в ваккуме - ответа нет.
В K8S есть свои нюансы с конфигурацией pods, но в целом все как всегда:
- написать бета версию
- запустить load test
- проанализировать и прикинуть, где надо увеличить систему (sizing) а где оптимизировать
- починить код, базу данных и т.п.
- все повторить - load test и т.п.
Ответ написан
Комментировать
@Barm0leykin
Можно включить VPA (Vertical Pod Autoscaling) в режиме наблюдения, и понагружать сервис.
VPA порекомендует нужные реквесты/лимиты. Так вы примерно увидите что на 1т RPS такое-то потребление cpu/mem
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы