Развертывание веб-сайта на лазурном и традиционном IIS - PullRequest
5 голосов
/ 26 мая 2011

В настоящее время я работаю с устаревшим веб-приложением asp.net, и одно из требований на будущее заключается в том, чтобы его можно было развернуть в Windows Azure.

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

Кажется, что для Azure требуется специальная настроенная версия проекта веб-приложения, если возможно преобразовать настроенное веб-приложение в стандартный экземпляр IIS после его преобразования.

РЕДАКТИРОВАТЬ:

Это веб-приложение ASP.NET, а не веб-сайт (объединяет все в одну DLL)

ОБНОВЛЕНИЕ:

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

И спасибо за действительно хорошие ответы.

Ответы [ 3 ]

8 голосов
/ 26 мая 2011

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

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

Если вам нужно хранить данные не в базе данных, а в другом месте, лучше всего работать с хранилищем Azure, в котором есть API и клиентская библиотека для хранения двоичных данных, данных ключ / значение (они вызываютэто таблицы, но на самом деле это не таблицы), а очереди.У них также есть прозрачная опция blob-as-file-system для совместимости.Если вы хотите использовать их в своем приложении, которое также используется за пределами Azure, вам нужно написать дополнительный слой между вашим кодом и клиентской библиотекой Azure, которая поддерживает как службы Azure, так и стандартную локальную службу.В Azure SDK включены эмуляторы для служб Azure, но они определенно не предназначены для производственного использования.

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

Веб-сайт, веб-приложение, MVC действительно не имеет большого значения.На самом деле не обязательно должен быть .NET.Может быть PHP или Java или все, что вы хотите поставить на свою виртуальную машинуВсе это будет работать так же, как Azure.

MS любит выдвигать Azure как решение «Платформа как услуга» (Paas), где у них есть тонна предлагаемых ими услуг, и вы запускаете приложения на их стандартной платформе, и это контрастирует с Amazon AWS, которую ониназывать инфраструктуру как услугу (Iaas), которая является «просто» виртуальной машиной.Однако MS на самом деле является таким же решением для IaaS, как и AWS, возможно, даже более того.Единственное различие между AWS и Azure заключается в том, что AWS позволяет вам выбирать, что устанавливать на вашей виртуальной машине, а с Azure вы должны использовать Windows Server 2008 R2 в качестве основы для вашей виртуальной машины (но вы можете настроить образ виртуальной машины для установки пользовательского программного обеспечения поверхиз окон).Как в Azure, так и в AWS хосты предлагают дополнительные услуги PaaS, которые вы можете использовать для хранения данных и маршрутизации сообщений.AWS также предлагает множество дополнительных сервисов, таких как потоковое видео.

Также обратите внимание, что с Azure (и, как мне кажется, с AWS) вы можете использовать предлагаемые ими сервисы даже в не размещенном приложении.Если вы хотите использовать хранилище данных Azure из не-Azure приложения, вы можете сделать это, просто вызовы HTTP REST для получения / размещения данных.Единственные различия, которые вы платите за ввод / вывод данных между центром обработки данных и приложением, не размещенным в центре обработки данных, будут бесплатными, если приложение также находится внутри центра обработки данных (только вход / выход данных является бесплатным внутри центра обработки данных, у вас все еще есть хранилище икомиссионные сборы).

4 голосов
/ 26 мая 2011

Несколько вещей:

  • В ответе Сэмюэля Неффа упоминалось монтирование файловой системы в BLOB-объекте (облачный диск). Только один экземпляр может заблокировать этот облачный диск для записи, поэтому он не ведет себя как сетевой файловый ресурс. Вам нужно спланировать это.
  • Вам потребуется интеграция с подсистемой диагностики Windows Azure, чтобы получить представление о состоянии выполнения вашего приложения (например, счетчики производительности, журналы трассировки и т. Д.).
  • Если существуют сторонние приложения, от которых зависит ваше веб-приложение, вам необходимо установить их. Они фактически устанавливаются как часть процесса загрузки экземпляра роли, либо через ваш обработчик событий OnStart (), либо как запускаемая задача . Последний позволяет устанавливать на уровне администратора (включая изменения реестра, установки COM-компонентов и т. Д.). Вам нужно будет тщательно управлять этими установками, так как они влияют на время загрузки экземпляра.
  • Для приложения asp.net вам нужно подумать о состоянии сеанса. Внутреннее состояние сеанса не будет работать, поскольку каждый экземпляр будет иметь свое собственное хранилище состояний в памяти. Поставщик состояния сеанса SQL Azure не имеет агентов фоновой очистки, поэтому вам необходимо встроить его в свой экземпляр веб-роли или рабочей роли (см. эту запись в блоге группы SQL Azure для реализации). Лучше всего использовать AppFabric Cache, новый сервис, который только что был запущен в производство. Этот кэш-как-служба также предоставляет настраиваемый поставщик состояния сеанса для asp.net. Примечание. На сегодняшний день служба AppFabric Cache доступна только через интерфейс .NET; для него нет интерфейса REST (все другие службы хранения - таблицы, большие двоичные объекты, очереди - имеют интерфейс REST ). .NET, Java и PHP имеют библиотеки клиента хранения. У Ruby есть один из сообщества open source.
  • Вам придется управлять масштабированием до нескольких экземпляров, когда возникнет такая необходимость. Сегодня это не встроенный сервис, но есть сторонние сервисы, такие как ParaLeap AzureWatch . Также есть Microsoft System Center Operations Manager, который теперь поддерживает мониторинг Windows Azure. Вам также понадобится справиться с ситуациями сокращения, когда вы уменьшите количество экземпляров сервера.

У меня есть несколько дополнительных деталей в ответе на аналогичный вопрос StackOverflow, здесь .

0 голосов
/ 26 мая 2011

Я не пробовал Windows Azure Migration Scanner лично, но если он работает так, как рекламируется, это действительно пригодится.

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