У нас есть сервер (4 ГБ ОЗУ, два 4-х ядерных Intel Xeon E5420), выполняющий следующие задачи:
Мы ожидаем большой (до сотен тысяч) приток пользователей в ближайшие недели. Мое начальство обеспокоено тем, что наша текущая установка может не справиться с нагрузкой, и рассматривает возможность перехода на облачный хостинг, однако я не уверен, что это поможет. Насколько я понимаю облачные вычисления, виртуализация не принесет большой пользы, если мы не сможем разделить рабочую нагрузку на несколько машин (если у них нет отдельных серверов, значительно более мощных, чем наш). Они предлагают кластеры MySQL, однако серверные скрипты просто читают / записывают некоторые значения в несколько строк и не выполняют никаких ресурсоемких SQL-запросов, поэтому я снова не уверен, что кластеры MySQL будут иметь большое значение по сравнению с Apache / Накладные расходы PHP + задержка сети MySQL. Что касается веб-сайта, мы также можем переместить большую часть статического контента в CDN, поскольку у нас есть несколько видеоклипов, которые могут снизить нашу пропускную способность.
Итак, принесет ли нам облачный хостинг хоть какую-то пользу?
Может быть, а может и нет. Как вы подозреваете, если вы не сможете легко разделить рабочую нагрузку системы на отдельные блоки, которые могут обмениваться данными по сети, вы не увидите никакой выгоды от обращения к «облачному» провайдеру с точки зрения масштабируемости. Есть "облачные" провайдеры, которые предлагают машины гораздо большего размера (во всяком случае, с точки зрения ОЗУ - я сомневаюсь, что вы всегда будете получать эквивалент восьми ядер E5420 на любом из них), но вы можете получить больше ОЗУ. для вашего существующего сервера, если необходимо.
Я бы потратил время, глядя на каждый отдельный компонент системы, оценивая использование ресурсов каждым и, следовательно, насколько «экономией» было бы перемещение его в отдельную коробку. Затем посмотрите, как можно кластеризовать каждый компонент (начиная с самого ресурсоемкого), чтобы работу этого компонента можно было разделить на несколько машин (так называемая «горизонтальная масштабируемость»). После того, как вы сделаете это для всего, что может быть использовано где-то близко к ресурсам машины при ваших прогнозируемых уровнях нагрузки, вы можете обратиться к своему начальству с планом и оценкой усилий и затрат, чтобы разделить все это.
Ничто из этого не связано с «облаком», это просто базовое комплексное исследование того, как справиться с растущей пользовательской нагрузкой. Вы можете начать использовать преимущества «облачных» вычислений, когда вам действительно нужно в спешке масштабировать, вы можете просто нажать кнопку и вздрогнуть! в вашем распоряжении больше ресурсов. Не ждите, пока пики нагрузки не начнутся, чтобы попробовать это - если вы вообще цените время безотказной работы, всегда запускайте как минимум два из каждого масштабируемого компонента, определите, какие пороги срабатывания триггера расширения будут хорошими. продвигайтесь, отслеживайте их и создавайте новые экземпляры как можно скорее. Затем поместите систему под огромную нагрузку и проверьте, что все работает так, как вы ожидаете.
Как указывает Пауска, большая часть ценности виртуализированной среды заключается в избыточности и доступности, а также в масштабировании. Возможно, вы захотите рассмотреть решение в стиле частного облака, такое как Rackspace, или развернуть собственное, если у вас есть хороший персонал VMWare в доме. Однако это займет некоторое время, как показывает отличный пост womble, чтобы понять это правильно.
Если у вас быстро приближается крайний срок, и у вас нет времени исследовать сегментирование своих приложений, на ум приходит следующее: