Облачный хостинг против управляемого хостинга

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

С теоретической точки зрения можно сказать следующее:

Облако:

  • архитектурное изменение (вы можете не устанавливать ничего, что хотите)
  • кривая обучения (из-за вышеизложенного)
  • отказоустойчивость (с тех пор как об отказе соблюдается)
  • гранулированная стоимость (оплата за Ghz или Gbyte)
  • мгновенная масштабируемость (не такая мгновенная, но, по крайней мере, прозрачная?)? более низкая латентность

Управляемые:

  • отказоустойчивость (зависит от поставщика)
  • Масштабируемость вручную (требует обслуживания)
  • статическая стоимость (вы платите пакет, независимо от того, используете ли вы его полностью или нет)
  • более низкая стоимость (только для входящих пакетов)
  • владение данными (вы делаете)
  • свобода (вы делаете)? более низкая задержка (зависит от поставщика)

Предполагая, что это правильно или нет; Тем не менее, логическая позиция "это зависит...".. от самого приложения. Теперь возникает скрытый вопрос: как бы вы профилировали приложение j2ee, чтобы определить, является ли он облачным или нет? зная, что это

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

Ответ 1

"Теперь возникает скрытый вопрос: как бы вы профилировали приложение j2ee, чтобы определить, является ли он кандидатом облачным или нет, зная, что это"

Как в сторону, сделайте это Явным вопросом. Сделайте это НАЗВАНИЕМ этого вопроса. Поместите это в начало вопроса. Если возможно, удалите все ваши предположения и сосредоточьтесь на вопросе.

Вот что мы делаем.

  • Вызовите некоторых поставщиков для вашего "облачного" или "управляемого сервиса". Не слишком много. Один или два из них.

  • Спросите их, что они поддерживают. Что еще более важно, что они не поддерживают.

  • Затем, учитывая короткий список функций, которые не поддерживаются, просмотрите свой код для этих функций. Если они не поддерживают то, что вам нужно, у вас есть некоторая работа над архитектурой. Или перечеркните их из списка предпочтительных поставщиков.

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

"Но зачем идти за счет попытки удержать его, когда он может не работать?"

Какие расходы? Вы можете потратить месяцы на "изучение" вашего кода. Или вы можете попробовать разместить его. Обычно, "попробуйте принять его", вы получите ответ в течение нескольких дней. Это меньше усилий, чтобы просто сделать это.

Ответ 2

О какой облачной службе вы говорите? IaaS, PaaS, DaaS?

архитектурное изменение (вы можете не устанавливать ничего, что хотите)

Зависит: переход с "управляемого сервера" на платформу (например, GAE) может быть.

кривая обучения (из-за вышеизложенного)

Amazon EC2 может не быть большой кривой обучения, если вы используете свой собственный сервер

отказоустойчивость (с тех пор как об отказе соблюдается)

Зависит: EC2 → вам нужно перевернуть свой собственный

мгновенная масштабируемость (не такая мгновенная, но, по крайней мере, прозрачная?)? более низкая латентность  Зависит: EC2 → вам нужно планировать это/использовать вспомогательную услугу

Ответ 3

Существует множество облачных провайдеров, и, насколько я видел, есть два основных типа:

  • которые поддерживают платформу облачных вычислений (например, Amazon E2C, MS Azure)
  • Поставщики виртуальных экземпляров предоставляют вам возможность создавать многочисленные исполняемые экземпляры (например, RightScale)

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

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

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

Ответ 4

В некотором роде сравнение google app engine (gae) и amazon ec2 похоже на сравнение яблок и апельсинов.

С ec2 вы получаете операционную систему с или без установленного серверного программного обеспечения (tomcat, database и т.д., ваш выбор, в зависимости от выбранного вами ами). С ec2 вам нужен системный администратор (или быть), чтобы обеспечить бесперебойную работу. Балансировка нагрузки на ec2 - это то, что вам нужно будет выяснить и реализовать; Я никогда не делал этой части. Большим преимуществом с ec2 является то, что вы можете разворачивать и опускать новые экземпляры программно и по сравнению с обычным поставщиком веб-серверов оплачивать только, когда ваш экземпляр работает и работает. Вы используете это "автоматическое вращение вверх/вниз", чтобы реализовать балансировку нагрузки и переход на другой ресурс. Но вы должны выполнить реализацию (опять же, у меня нет опыта с этой частью).

С движком google app (gae) все системное администрирование позаботится о вас. Он также автоматически масштабируется по мере необходимости, как на стороне приложения, так и на стороне базы данных. Вы также платите только за то, что используете; незанятое приложение, которое не получает хитов, не несет никаких издержек. Недостатки для gae заключаются в том, что вы ограничены на языках, которые вы можете использовать; python и java (или вещи, которые работают на jvm, например jruby). Еще больший недостаток заключается в том, что база данных не является sql (они не называют ее базой данных, они называют ее хранилищем данных), и, скорее всего, потребуется переработать ваш ddl, если у вас есть существующая база данных; это определенная стоимость времени программиста, чтобы понять, как это работает и как эффективно использовать его.

Итак, если вы начинаете с нуля (или хотите переписать), и у вас есть ресурсы и время, чтобы изучить его пути, gae может быть путем. Если у вас есть навыки sysadmin или sysadmin, у вас есть время или вы знаете, как настроить балансировку нагрузки и переход на другой ресурс, тогда ec2 может быть способом. Если ваше приложение будет праздным, тогда ec2 стоит дорого; в прошлый раз я проверил, что это что-то вроде 70 долларов в месяц, чтобы оставить небольшой экземпляр.

Ответ 5

Я думаю, что вам нужно сосредоточиться:

 granular cost (pay per Ghz or Gbyte)
 instantaneous scalability (not so instantaneous, but at least transparent?) ? lower latency

Изменение вашего приложения для работы в облаке займет много времени, но не имеет значения, не облачно ли оно облагает ваши расходы и/или вам не нужна мгновенная/быстрая масштабируемость (классический пример - приложение для электронной коммерции)

После рассмотрения этих 2 баллов. Один из ИМО, о котором вы должны думать, - это relies on a complex database (ie. num. tables), так как в зависимости от его "сложности" переход на облачную среду может быть действительно затруднительным.