Облачные технологии все сильнее проникают в нашу жизнь, позволяя легко и быстро разворачивать сложные технические решения на огромных вычислительных мощностях за всего несколько кликов мышки. Основные гиганты IT рынка постоянно улучшают свои сервисы, представляя все новые и новые возможности. Преимущество облаков вполне очевидно — скорость, мощность, масштабируемость и легкость в настройке. Это может быть отличным решением, если вы начинаете новый проект или стартап.
Но что делать, если у вас уже есть веб-сайт, который размещен на ваших собственных мощностях? Этот ресурс работает, к нему наверняка подключена база данных, применены различные настройки в конфиге и так далее. В таком случае миграция в облако — довольно хлопотный процесс. Даже если вы действительно понимаете, что на использовании облака вы сможете выиграть, не факт, что сложность переноса всего этого окружения может перевесить данные преимущества.
Для таких случаев компания Microsoft представила свой новый инструмент - Azure Websites Migration Assistant. Это небольшая программа, которая может собрать необходимую информацию о веб-сайте, размещенном на IIS (начиная с версии 6), проанализировать ее, а затем автоматически перенести все настройки, файлы и, что крайне важно, даже базу данных прямиком в облако Microsoft Azure.
В данной статье я на собственном примере продемонстрирую, что миграция сайта — это действительно несложно и выполняется в течение нескольких минут.
Подготовка
Я подготовил веб-сайт и разместил его на своем локальном компьютере с IIS 8:
Кстати, стоит заострить внимание на том, что мигрирует именно веб-сайт, а не виртуальная директория. В данном случае помимо Default Web Site у меня создан сайт migrations, который я и буду переносить. Это простой сайт ASP.NET, созданный с помощью шаблона в Visual Studio 2013. К нему подключена база данных, также размещенная на локальном компьютере в SQL Server Express:
Структура БД простая и содержит лишь информацию о пользователя и ролях. Эта БД создается автоматически вместе с веб-сайтом. Вот как все выглядит в итоге:
Для сайта настроены bindings, чтобы он открывался по умолчанию при вызове localhost:80. Конечно, данный пример не является супер сложным, однако даже в таком простом случае самостоятельная миграция всех файлов, настроек и БД заняла бы довольно продолжительное время (как минимум день).
Azure Website Migration Assistant
Первое, что нужно сделать — скачать утилиту Azure Website Migration Assistant с официального сайта. Она представляет собой простое ClickOnce приложение, выполненное в стиле пошагового мастера.
На первом шаге вам будет предложено выбрать, где искать сайт, который вы хотите мигрировать:
Есть два варианта — локальный компьютер или удаленный сервер. Второй особенно полезен, если вы не имеете физического доступа к серверу с вашим веб-сайтом или установка дополнительного софта там по тем или иным причинам невозможна.
В нашем случае я выбираю первый вариант, и утилита предлагает мне уточнить, какой именно сайт я буду мигрировать:
Я не хочу переносить Default Web Site, поскольку там ничего нет, поэтому выбираю только сайт migrations.
Как только вы определитесь с выбором и нажмете Next, будет произведен краткий анализ вашего IIS и определение ключевых параметров веб-сайта. Выглядит это примерно так:
На этом экране перечислены основные настройки сервера, такие как протокол и номер порта, по которому доступен сайт, пул приложений, в котором выполняется код, а также, заметьте, соединения с БД. Данная настройка (и не только она) берется из web.config вашего сайта. Это значит, что, во-первых, Azure Website Migration Assistant знает о том, что ваш сайт работает с БД (и потом учтет это), а во-вторых, он может перенести любые другие специфические параметры конфигурации и применить их в облаке.
Следующий шаг (который вызывается по кнопке Upload), покажет вам отчет о готовности вашего сайта к миграции. Этот отчет составляется на сервере в облаке и выявляет все потенциальные нестыковки между вашей локальной конфигурацией и тем, что может работать в Azure.
На данный момент есть список известных ограничений, которые перечислены в специальном разделе на официальном Azure Websites Migration Assistant. В моем случае все проверки оказались успешными и миграция может быть продолжена:
После нажатия кнопки Begin Migration, начинается самое интересное — работа с Azure. Вас попросят залогиниться под своим «облачным» аккаунтом. Не вижу причин не сделать этого :)
После того, как вы успешно авторизуетесь, утилита сможет получить данные о вашем облаке и ресурсах, которые в нем есть. На следующем шаге вы сможете выбрать, в какую подписку вы хотите добавить новый веб-сайт, и в каком регионе он должен находиться:
Я выберу West Europe как самый близкий. Кнопка Start Migration на самом деле еше пока не начнет непосредственно миграцию, а отправит на очередной экран настроек:
И вот именно этот экран я считаю самым крутым во всей утилите. Помните, я говорил, что Azure Websites Migration Assistant считывает настройки из web.config, в том числе строку соединения с БД? Так вот, это делается не просто так, поскольку на данном экране вы можете создать облачную БД, в которую потом перенесутся схема и данные из локальной БД. Достаточно указать имя сервера и логин/пароль администратора.
В нижней половине указываются параметры будущего сайта — его название и название БД. Также в разделе Customize settings можно настроить параметры мощностей будущего сайта. На выбор предлагаются все варианты, доступные в обычном портале управления Azure:
Следующий шаг - создание облачных мощностей: веб-сайта и сервера БД:
После того, как все будет завершено, остается последний шаг — перенос данных. При нажатии на Begin Publish все локальные файлы вашего веб-сайта будут перенесены в облако, вместе со структурой и данными БД:
Проверка
Чтобы убедиться, что все работает корректно, достаточно зайти по адресу облачного сайта и сравнить с локальной версией:
Обратите внимание на URL — это уже не localhost, а полноценный веб-сайт в интернете. А также посмотрите на правую верхнюю часть сайта, где написано Hello: aaa@aaa.com. Информация о пользователе берется из базы данных, и тот факт, что этот пользователь виден в облачном сайте говорит о том, что и схема БД, и ее данные, и параметры подключения — все было перенесено Azure Websites Migration Assistant без проблем и восстановлено в облаке в первозданном виде.
Дополнительно можно проверить, что происходит в портале управления:
Новый сайт доступен и связан с БД migrations. Здорово, что еще сказать!
Не конец
Эта утилита — не финальный релиз, и будет развиваться и дальше. Уже известны некоторые ограничения:
- доступны только порты 80 и 443 (ограничения самого Azure), поэтому если вы используете что-то другое, подумайте о путях обхода
- аутентификация может быть только анонимной или через веб формы, а Windows Authentication может быть осуществлена через Azure Active Directory
- компоненты COM и кастомные ISAPI фильтры также не перенесутся автоматически, нужно будет включать их руками
- полный список тут
Весь код данной утилиты выложен в свободный доступ на Codeplex. Так что если очень хочется, можно доработать ее самостоятельно. Ну и также почти на всех шагах утилиты есть ссылка на форму обратной связи — не поленитесь написать отзыв разработчикам, чтобы он могли улучшить инструмент в будущих релизах:
Удачной вам миграции!
P.S. А если у вас еще нет Azure, но хочется попробовать, то тут можно найти бесплатный триал
Автор: glamcoder