Советы по выбору размеров и планированию производственных мощностей и практические рекомендации

StackOverflow https://stackoverflow.com/questions/2057148

Вопрос

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

На данный момент лучшая эвристика, которую я разработал, заключается в сравнении прогнозов использования (количества зарегистрированных и одновременных пользователей, которых должно посещать приложение) с данными, собранными на наших существующих установках.Что - то вроде:Если установка A обслуживает 100 одновременных пользователей с X оборудованием, то для установки B потребуется 2 * X оборудования для обслуживания 200 одновременных пользователей.

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

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

Это было полезно?

Решение

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

В идеале, первоначальная покупка HW / SW предназначена для пилотной установки, и вы проводите тестирование пилотной установки, как только она будет готова и соответствовать спецификациям.Используйте эти результаты для прогнозирования потребностей в мощностях для перехода от пилотного проекта к производству.Конечно, для этого требуется время в графике перехода от опытно-промышленной разработки к производству, чтобы протестировать приложение, а затем заказать и принять поставку оборудования.Но это даст более точную оценку мощности, чем делать все заранее.

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top