Должен ли я выбрать облако? - PullRequest
6 голосов
/ 16 декабря 2011

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

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

Я недостаточно читал о облачных провайдерах, и я в основном склоняюсь к Amazon или Azure для доверия, которое эти две компании имеют, не проверяя их, как я должен с другими (т. Е. Rackspace, я полагаю, также облачный сервис) провайдер).

Что я хочу

Я хотел бы создать обычное веб-приложение MVC Asp.net, которое можно запускать на собственном недорогом сервере с одним компьютером. Он будет запускать веб-сервер вместе с базой данных (реляционный и, возможно, также документ) и полнотекстовый поиск (не SQL FTS, а скорее высокоскоростной отдельный продукт, такой как Lucene или Sphinx). Но после первоначального периода приглашения только я хотел бы переместить это приложение в облако, чтобы сделать его более удобным для трафика / загрузки.

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

Вопросы

  1. Каков ваш опыт перехода приложений в облако и какое приложение вы выбрали и почему?
  2. Что бы вы посоветовали мне подумать при проектировании / разработке решения, чтобы сделать переход максимально безболезненным.
  3. Исходя из вашего опыта, лучше ли переходить в облако (с финансовой точки зрения) или лучше покупать собственные серверы и приложение для балансировки нагрузки самостоятельно и, возможно, сэкономить деньги в долгосрочной перспективе?

Ответы [ 4 ]

4 голосов
/ 16 декабря 2011

«Облако» - такой расплывчатый термин.Тем не менее, я думаю, что это очень хороший вопрос.

По сути, облачный хостинг IaaS , а не магически увеличивает масштаб вашего приложения.Это действительно виртуальный частный сервер с очень короткими периодами контракта / отмены.

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

  1. Каков ваш опыт перехода приложений в облако, какой вы выбрали и почему?
  2. Что бы вы посоветовали мне подумать при разработке / разработке решения, чтобы сделать переход максимально безболезненным.

На самом деле вам не нужно делать что-то другоепросто для размещения на EC2 или Azure - в основном .Но, конечно, это не так просто, когда дела растут.

Например, хранилище экземпляров EC2 довольно ограничено.Однако дополнительное хранилище на EBS не обеспечивает сопоставимых характеристик производительности и может быть немного более медленным, чем на диске.Дело в том, что EBS магически масштабируется , и это, вероятно, больше PaaS, чем IaaS;но это не простой жесткий диск, и, следовательно, он не ведет себя как жесткий диск.Я не знаю о хранилище блоков Azure.В общем, ожидайте, что дополнительные уровни абстракции будут представлять собственные проблемы, независимо от того, что они делают.

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

Типичные облачные провайдеры стоят дороже, чем обычные провайдеры VPS «за углом», но, насколько я знаю, они также гораздо более надежны и профессиональны.В EC2 есть свободный уровень (но он довольно маленький), Azure предоставляет вам бесплатный экземпляр на 3 месяца.

Правильно выполнить вычисления довольно сложно;Например, если вам по какой-либо причине необходимо закрыть службу, было бы неплохо иметь возможность отменить сейчас вместо того, чтобы платить еще один год - вы можете включить этот риск в свои расчеты.С другой стороны, EC2 и Azure будут значительно дешевле, если вы зарегистрируетесь на 6 или 12 месяцев, а не будете платить по часам.

Возможно, вы захотите воспользоваться бесплатным планом Azure, потому что это приятноначать возиться без каких-либо затрат.Большим преимуществом облачных провайдеров является то, что вы можете очень легко масштабировать по вертикали: покупка 16-ядерного компьютера с 64 ГБ ОЗУ - это очень дорого, но если на вашем сайте так много трафика, обновление плана не будетбыть такой большой проблемой.

3 голосов
/ 16 декабря 2011

Как кто-то еще не упомянул об этом ...

AppHarbor был потрясающим. Вы можете подтолкнуть вещи в считанные минуты. Развертывание очень просто. И настроить ваш проект для этого также легче. И это даже не требует каких-либо серьезных изменений в вашем решении, чтобы соответствовать.

Для полнотекстового поиска вы можете рассмотреть что-то вроде Websolr .

1 голос
/ 16 декабря 2011

Многое зависит от того, что делает ваше приложение (например, существуют ли отдельные компоненты, которые могут выиграть от запуска в разных экземплярах, по сравнению с простым приложением CRUD с внешним интерфейсом). Следует учитывать, что в облачном приложении у вас обычно нет традиционной реляционной базы данных. Таким образом, вы должны выбрать либо облачный, либо традиционный хостинг, либо запланировать кодирование уровня доступа дважды. Azure имеет реляционные базы данных (SQL Azure), хотя они не идентичны SQL Server 2008R2. Вам придется изучить плюсы и минусы облачной установки для вашей конкретной ситуации.

Что касается финансовых проблем, обычно гораздо дешевле получить учетную запись в хостинговой компании, а не в облачном сервисе, поскольку вы платите по месяцам, а не по часам (в прошлый раз я проверял учетную запись с запущенным Azure 24/7 в месяц обойдется примерно в 40-50 долларов, а хостинг можно получить за 15 долларов в месяц). Экономия в облаке достигается тогда, когда вам нужно запустить несколько серверов, а стоимость их обслуживания превышает стоимость экземпляра на облачной платформе.

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

0 голосов
/ 29 марта 2017

Я только что перенес приложение на основе MVC с выделенного сервера в Azure. При переносе базы данных MSSQl я сначала попытался импортировать файлы .bacpak, но некоторые таблицы потерпели неудачу из-за их размера. Затем я использовал мастер миграции базы данных SQL , который отлично работал для небольших таблиц, но не работал для таблиц с BLOB-полями. Для этих таблиц мне пришлось использовать временные промежуточные таблицы. Затем, через некоторое время, после того, как все данные были перенесены, настройка Webapp была очень быстрой, и мы приступили к работе. Сначала казалось, что все работает просто отлично, но через пару часов, когда нагрузка стала тяжелее, возникли все виды ошибок. Я зашел на портал Azure, и было очень легко увидеть

...