Можно ли количественно оценить масштабируемость как требование?

G'day,

Я читал пункт Quantify в книге "97 вещей, которые должен знать каждый разработчик программного обеспечения" ( продезинфицированная ссылка Amazon), и это заставило меня задуматься о том, как измерить масштабируемость.

Я разработал две системы для крупной британской радиовещательной корпорации, которые используются для:

  1. определить страну происхождения входящих HTTP-запросов или
  2. Определите подходящие форматы видео для геометрии экрана мобильного телефона и текущего типа соединения.

Обе конструкции были необходимы для обеспечения масштабируемости.

Мои проекты для обеих систем масштабируются горизонтально за кэширующими уровнями балансировки нагрузки, которые используются для обработки входящих запросов для обоих этих сервисов и распределения их по нескольким серверам, которые фактически предоставляют сам сервис. Первоначальное увеличение пропускной способности достигается за счет добавления большего количества серверов за уровнем балансировки нагрузки, отсюда и термин горизонтальная масштабируемость.

Однако существует предел масштабируемости этой архитектуры, если уровень балансировки нагрузки начинает испытывать затруднения при обработке трафика входящих запросов.

Итак, возможно ли количественно оценить масштабируемость? Будет ли оценка количества дополнительных серверов, которые вы можете добавить для горизонтального масштабирования решения?

6 ответов

Решение

Я думаю, что это возможно в некоторых контекстах - например, масштабируемость веб-приложения может быть определена количественно с точки зрения количества пользователей, количества одновременных запросов, среднего значения и стандартного отклонения времени ответа и т. Д. Вы также можете получить общие цифры для пропускной способности. хранение, количество транзакций в секунду и время восстановления (для резервного копирования и аварийного восстановления).

Вы также можете часто указывать числа в домене приложения - скажем, система поддерживает комментирование, вы можете количественно определить, каков порядок количества комментариев, которые необходимо сохранить.

Однако стоит иметь в виду, что не все, что имеет значение, может быть измерено, и не все, что может быть измерено, имеет значение.:-)

Я думаю, что это сводится к тому, что означает масштабируемость в данном контексте, и поэтому ответ будет, это зависит.

Я видел масштабируемость в требованиях к вещам, которые просто еще не существовали. Например, новый инструмент для подачи заявок на кредит, который специально призвал к необходимости работы на iPhone и других мобильных устройствах в будущем.

Я также видел масштабируемость, используемую для описания потенциального расширения большего количества центров обработки данных и веб-серверов в разных регионах мира для повышения производительности.

Оба приведенных выше примера могут быть количественно измеримы, если есть известная цель на будущее. Но масштабируемость может быть не поддающейся количественной оценке, если на самом деле не существует известной цели или плана, который делает ее движущейся целью.

"Система должна масштабироваться так, чтобы поддерживать линейную зависимость X для стоимости / пользователя".

Когда я думаю о масштабируемости, я думаю о:

  • производительность - насколько отзывчивым должно быть приложение для данной нагрузки
  • насколько велика нагрузка, в которую может вырасти приложение, и по какой цене (если на каждый сервер входит программное обеспечение, поддержка и т. д.)
  • насколько быстро вы можете масштабировать приложение и какой объем буфера вы хотите за период пиковой нагрузки (мы можем увеличить пропускную способность на 50% за 2-3 часа и потребовать буфер на 30% по сравнению с запланированным пиковым использованием)

Избыточность - это нечто иное, но ее также следует учитывать и учитывать.

Надлежащая мера масштабируемости (не самая простая;-) - это набор кривых, определяющих требуемый ресурс (процессоры, память, память, локальная пропускная способность,...) и производительность (например, задержка), когда нагрузка растет (например, с точки зрения количества запросов в секунду, но другие меры, такие как общая требуемая пропускная способность, могут также подходить для некоторых приложений). Лица, принимающие решения, обычно требуют, чтобы такие точные, но сложные меры сводились к нескольким ключевым цифрам (конкретные места на некоторых из нескольких кривых), но я всегда стараюсь договориться о более точных, а не более простых для понимания измерениях таких Ключевые метрики!-)

Вот один из способов:

"Предположим, что один процессор может обрабатывать 100 единиц работы в секунду..."

С http://www.information-management.com/issues/19971101/972-1.html

Другие вопросы по тегам