На хабре я недавно, но уже успел заметить много интересного материала и статей. В том числе от Андрея Кожокару korjik. Андрей много раз выкладывал информацию по подсчету стоимости хостинга, проводил исследования на эту тему для AWS и сравнение с другими решениями. И мне стало интересно, а что же получится, если смотреть не только на AWS, но например, и на Windows Azure. Я провел небольшое исследование, сделал какие-то выводы и буду рад обсудить их в комментариях. А вывод прост — цены-то приблизительно одинаковые для всех. Выбор сводится больше к предпочтениям конкретного заказчика или человека, и к удобству использования того или иного решения для определенного технологического стека.
Ну, начнем.
Цель исследования
Статья сравнивает классическую модель хостинга приложений с хостингом в Windows Azure. Раскрывается преимущества и недостатки каждого решения и выбранных платформ, в соответствии с функциональными и не функциональными требованиями. Сравнивается максимальное количество опций, предоставляемых обоими провайдерами и которые подходят под предполагаемую архитектуру.
Требования
Давайте определим требования на примере вполне реальных запросов одного из заказчиков.
Функциональные
Централизованные сервисы, включающие real-time логику и хранение истории
Мульти-функциональная коммуникация с централизованными сервисами по UDP протоколу и, возможно, через Data Sync (HTTP)
Клиентское приложение, получающее обновления real-time от центрального сервиса и умеющее отправлять команды/запросы обратно
Сервис отчетов, позволяющий хранить историю в удобном виде
Хранение информации разделяется на следующие категории:
— Конфигурационная информация (малый объем, возможно даже read-only)
— Оперативные данные (real-time сессии)
— История действий (история событий, параметров, snapshots до 1 года, включительно)
Возможность генерировать отчеты/BI Analytics из истории является обязательным требованием
Настраиваемая отчетность (что-то вроде SQL Server Reporting Services). Отчеты могут быть разделены на три категории:
— Текущий день – с точностью до нескольких минут
— Текущий месяц – с точностью до нескольких часов
— Текущий год – точность до нескольких дней
OLAP кубы или Data Mining модели должны быть легко составляемыми из истории, если потребуется.
Не функциональные требования
Хранение данных: 1 год или приблизительно 200-300 Гигабайт в базе данных
— Оперативные данные могут достигать 20 Гб на каждый кластер
— История – до 300 Гб или даже более
Производительность
— Задержка менее чем в 3 секунды для пользователей и сторонних систем
— Генерация репортов – не более 30 секунд
Надежность
— Центральный сервис: 1 неделя безостановочной работы под максимальной нагрузкой
— Обязательный бекап данных и возможность их восстановить
— Обходится без потерь критической информации (события, настройки, конфигурационные файлы)
— Никаких потерь в базе данных
Высокий уровень доступности (HA)
— Приложение – это real-time система, доступная 24/7, максимальный разрешенный даунтайм: не более 15 минут в неделю
— Балансировщик и горизонтальное масштабирование центральных сервисов является обязательным
Масштабируемость
— Возможность горизонтальной и вертикальной масштабируемости сторэджа, вычислительных ресурсов, количества балансируемых машин с целью обеспечить динамическое развертывание ресурсов по необходимости.
Затраты
— Включают в себя цены на железо/ресурсы, лицензии, сопровождение ПО, траффик, etc.
Безопасность
— Интеграция с Active Directory и стандартный менеджмент юзер-аккаунтов
— Аутентификация и авторизация
— Шифрование и логгирование – нет
Работа с инфраструктурой
— Простая установка, обновление, архивирование данных, мониторинг, логгирование ошибок, оповещение о критических ошибках
Рассматриваемые платформы
Классический Веб-Хостинг
Выделенный Веб-Хостинг
Windows Azure Virtual Machines
Windows Azure Cloud Services
Анализ решений
Во-первых, интересно посмотреть на сравнение цен разных решений, в зависимости от запрашиваемых решений:
-
Классический Веб-Хостинг
Выделенный Веб-Хостинг
Windows Azure Virtual Machines
Windows Azure Cloud Services
База данных:
Включено 200Мб для одной БД
$259.99/мес. Ограничение по размеру хранилища
$225.80/месяц для 1x150GB БД + 14.25 $/мес/150 GB(данные)
$225.80/месяц для 1x150GB БД
Лицензия SQL Server:
Включено
Включено
$898
Включено
Репортинг:
Включено
Включено
Включено
Включено; $0.88/час для SQL Azure
Статистика:
-
Включено
Включено
Включено; Не поддерживается Azure
Бекап:
Включено
$49.99/мес
Включено
Включено
Объем хранилища:
Неограниченно
Неограниченно
$55.80/мес/600 GB
$55.8/мес/600 GB
Трафик:
Неограниченно
Неограниченно
$1222.80/мес/1 TB
$1222.80/мес/1 TB
Интеграция с Active Directory:
-
Бесплатно
$19.90 за 1 миллион транзакций
$19.90 за 1 миллион транзакций
Базовая цена:
12.74 $/мес
169.99 $/мес
115.20 $/мес
172.80 $/мес
Сценарии развертывания
Классический веб-хостинг
SQL Server и приложение находятся на одной машине, обеспечивая тем самым отсутствие задержек между запросами к базе данных. Так же нет ограничений на количество баз данных для приложения. Веб-хостинг предоставляет неограниченный траффик и объем хранилища данных. Обновление операционных систем и процесс конфигурации автоматизирован. Нет необходимости покупать лицензию SQL Server.
Тем не менее, существует множество ограничений и вопросов при использовании классической модели Веб-Хостинга:
Размер БД ограничен 200 Мб. Это может быть проблемой и может повлечь изменение архитектуры
Уведомления от сервера к клиенту предполагают использование стороннего приложения (например, RabbitMQ). Возможет так же сценарий, когда реализация подобных уведомлений нереализуема вообще
Из-за того, что используется SQL Server можно использовать встроенные Reporting Services. Что касается Analytical Services – придется обратиться в техподдержку хостинг провайдера, чтобы включить функцию
Ресурсы ЦП и Оперативной Памяти являются общими для всех пользователей провайдера. Это может влиять на производительность приложения
Необходимая функциональность Active Directory встроена в образ Windows Server 2008, однако управлять системой удаленно невозможно. Так же необходимо обращаться в техподдержку провайдера
Общая стоимость решения
Использование только стандартного плана хостинга обойдется в $12.74/мес. Соответственно, после 6 месяцев использования, цена составит $76.44. (цены и суммы приблизительные, но вполне соответствуют действительности).
Вывод
Не рекомендуется использовать классическую модель веб-хостинга для подобного приложения. Развертывая приложение в таких условиях, придется часто общаться с техподдержкой провайдера, и не всегда получать ответ быстро. Из-за использования общих ресурсов в системе, невозможно точно предположить будущую производительность приложения. Установка Active Directory, Analytical Services, Push оповещений может быть проблемой, если вообще возможна.
Выделенный Веб-Хостинг
Такой сценарий не является дешевым решением, как рассмотренный ранее, но имеет преимущества перед ним. Приложению необходим сервис push-уведомлений и данная модель позволяет установить любое приложение для этого (ZeroMQ, RabbitMQ, другие). SQL Server так же находится вместе с основным приложением. Необходимые сервисы очередей и оповещений поддерживаются. Размер БД ограничен только размером дискового пространства. Т.к. нет общего пула ресурсов (ЦП, память), можно предугадать производительность серверов и приложения. Использование транзакций Active Directory, оповещений и очередей бесплатно, т.к. это входит в обычный сервер-клиент траффик. Предоплаченный объем траффика – 1 Тб.
Тем не менее, возникают следующие проблемы:
Сервис Windows Update не автоматизирован
Создание бекапов платное: $49.99/мес
Дополнительные возможности БД так же стоят $259.99/мес
SQL Server расположен вместе с IIS приложением. Это может вызвать проблемы при использовании сложных запросов и повлиять на время отклика приложения. Для решения этого, возможно понадобится дополнительная плата хостинг провайдера
Нет простого способа увеличивать мощности для приложения, а если и есть то за дополнительную плату
Общая стоимость решения
Общая стоимость такого решения на 6 месяцев, включающая стандартный хостинг план, БД и функцию бекапа, за 6 месяцев использования составит: $2899.82
Вывод
Возможно использовать данное решения для хостинга конкретного приложения. Любое необходимое ПО может быть самостоятельно до-установлено. SQL Server входит в стоимость хостинга. Тем не менее, сложно автоматизировать процесс работы приложения и системы в целом. Использование SQL Server на отдельной машине так же повлечет за собой дополнительные материальные затраты.
Windows Azure Virtual Machines
Это решение является хорошим вариантом, т.к. позволяет масштабировать приложение. Это может быть сделано как в ручном, так и в автоматическом режиме. Очереди и оповещения включаются при использовании Service Bus. Возможно использовать отдельную машину для хостинга SQL Server с целью улучшить ее производительность, или на одной из используемых приложением, понизив тем самым стоимость. Так же доступны 2 модели использования дискового пространства: REST пространство и диски Виртуальных Машин. Бекап встроен. Можно использовать механизм аутентификации, предоставляемый Windows Server Active Directory. Огромное преимущество – если возникнет необходимость, можно легко мигрировать на друге облачное решение.
Проблемы:
Стандартная лицензия SQL Server не входит в стоимость. Цена – $898 единоразово, после 6 месяцев пробного периода
Установка операционной системы, SQL Server и обновлений системы не автоматизирована
Почти каждая опция оплачивается отдельно: траффик, дисковое пространство, и т.д.
Общая стоимость решения
Стоимость решения «Виртуальная Машина + SQL Server», включая 600 Гб дискового пространства, 1 Тб траффика, интеграцию с Active Directory, Бекап, лицензию для SQL Server на 6 месяцев, составит $2862,58
Такое же решение, но с использованием SQL Azure обойдется в $3233,88. Вариант с использованием SQL Server получился дешевле, т.к. плата за лицензию (898 $) является единоразовой.
Вывод
Рекомендуется использовать такое решение для данного конкретного приложения. Просто масштабировать приложение и подключать необходимые сторонние приложения самостоятельно. Основная проблема этого решения – цена (по сравнению с предыдущими вариантами), в том числе и на лицензию SQL Server. Также не автоматизирован процесс обновления и конфигурации виртуальных машин. Полноценный SQL Server позволяет использовать службы Reporting Services и Analytical Services.
Windows Azure Cloud Services
Этот способ представляет из себя почти то же самое, что и предыдущий. Основное различие заключается в процессе обслуживания. Не нужно устанавливать обновления системы или SQL Server. Active Directory Federation Services могут использоваться для аутентификации, но лучше все же настроить Active Directory отдельно на SQL Server, получив тем самым полные функциональные возможности одного и второго. Развертывание полностью автоматизировано напрямую из Visual Studio что исключает необходимость подготовки образов.
Недостатки:
Все та же лицензия для SQL Server, $898, если возможностей SQL Azure недостаточно
Почти каждая опция оплачивается отдельно: траффик, дисковое пространство, и т.д.
Общая стоимость решения
Стоимость решения «Облачный Сервис + SQL Server», включая 600 Гб дискового пространства, 1 Тб траффика, интеграцию с Active Directory, Бекап, лицензию для SQL Server на 6 месяцев, составит $3579,48.
Вывод
Можно и неплохо использовать данное решение, даже не смотря на его высокую цену. При необходимости можно использовать отдельную машину с SQL Server. Процесс администрирования возложен на плечи провайдера. Данный способ позволяет сосредоточиться на разработке приложения, т.к. большинство процессов конфигурирования автоматизировано, а публикация приложения осуществляется прямо из Visual Studio.
Общий вывод
Наиболее оптимальным вариантом размещения и хостинга приложения является Windows Azure Virtual Machines + SQL Server. Для реализации механизма push-уведомлений можно использовать любые средства как от сторонних производителей (например, RabbitMQ, ZeroMQ, другое), так и Microsoft (Service Bus). Покупка лицензии для SQL Server является единоразовой, а размер базы данных ограничен только размерами storage аккаунта. Также выделенный SQL Server позволит полностью использовать службы Reporting Services и Analytical Services. Однако процесс конфигурации и поддерживания инфраструктуры может повлечь дополнительные расходы на персонал.