Follow Me Widget

суббота, 24 декабря 2011 г.

Windows Azure & Amazon Web Services. Сравнительная характеристика.

Привет всем ! Сегодня я попытаюсь дать сравнительную характеристику двух гигантов облачного рынка, а именно Windows Azure и Amazon Web Services. В процессе своей работы мне приходилось выполнять проекты, основанные как на одной так и на другой технологии, поэтому идея составить сравнительную характеристику назревала уже довольно таки давно. После анализа большого количества подобных материалов в Интернете, а также основываясь на личном опыте и помощи одного из Windows Azure MVP и было принято решение написать этот пост.

Как мы все знаем обе платформы были введены в эксплуатацию сравнительно недавно (AWS в 2006, Windows Azure в 2008-м), услугами обеих платформ пользуются всемирно известные корпорации (чего стоят только NASA, Ericsson, T-Mobile, Boeing и другие), обе платформы позиционируют себя как лидера в сфере облачных вычислений поэтому их сравнение является едва ли не самой важной альтернативой, позволяющей оценить уровень предоставляемых услуг. Сравнение будет организовано в виде описания основных категорий в сфере облачных вычислений и описания того как та или иная категория реализована в AWS и Windows Azure

Стратегия развития
И начнем мы с наиболее важного как я считаю аспекта – это стратегии развития. Как нам всем известно на сегодняшний день облачные провайдеры умеют предоставлять свои услуги по 3-м схемам – это IaaS, PaaS и SaaS. Углубляться в описание данных терминов я не стану так как они уже “изжеваны” по всей Сети, скажу лишь то, что AWS предоставляет свои услуги по схеме IaaS, Windows Azure в свою очередь по схеме PaaS и этим они кардинально отличаются. Хотя обе платформы делают определенные сподвижки в сторону других схем, их первоначальная “природа” остается той же.

Соглашения о уровне предоставляемых услуг
Обе платформы предоставляют своим клиентам SLA`s, гарантирующие высокий уровень услуг (вычислительные мощности доступны в течение 99,95 % времени, для других сервисов гарантируется доступность в течение 99,9 % общего времени).

Масштабируемость
Как Windows Azure так и Amazon Web Services поддерживают автоматическое масштабирование. Это касается как горизонтального (повышение производительности решения за счет увеличения количества виртуальных инстансов, что позволяет распределить полезную нагрузку и тем самым значительно повысить общую производительность системы) так и вертикального масштабирования (увеличение производительности системы за счет добавления ресурсов к отдельным виртуальным машинами, например. за счет увеличения объема оперативной памяти). Помимо горизонтального масштабирования вычислительных мощностей Windows Azure поддерживает масштабирование баз данных за счет технологии Federations, доступной при использовании сервиса SQL Azure. Кроме того существуют решения. позволяющие упростить процесс наращивания ресурсов. У Амазона это Auto Scaling Service, у Windows Azure – Auto-Scaling Application Block.

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

AWS
Windows Azure
  • Amazon DevPay – простой сервис биллинга и управления аккаунтом
  • Amazon Marketplace Web Service – сервис благодаря которому продавцы имеют возможность повысить эффективность продаж и качество взаимодействия с клиентами
  • Public Data Sets – централизованный репозиторий открытых данных (включая человеческий геном и статистику посещений портала Wikipedia)
  • Сервисы Bing
    • Bing API
    • Bing Maps
  • Онлайн сервисы
    • Exchange Online
    • Sharepoint Online
    • Lync Online
    • Office 365
  • Windows Live
    • Skydrive
    • Photogallery
    • Messenger

Вычислительные мощности
Обе платформы предоставляют довольно таки широкий спектр размеров виртуальных машин, начиная от микро инстансов и заканчивая чрезвычайно мощными экземплярами. Сравнить предложения от Amazon и Microsoft можно при помощи следующей таблички

Amazon Web Services
Windows Azure
Micro-инстанс
Micro instance
Extra-Small instance
Стандартные предложения
Small, Large, Extra Large
Small, Medium, Large, Extra Large
Память
От 1,7 Гб до 15 Гб
От 1,7 Гб до 14 Гб
Процессор
От 1 до 4-х ядер
От 1 до 8-ми ядер
Специальные предложения
High-memory, High-CPU, Cluster
Операционные системы
Linux, Windows Server
Windows Server

Хранилища данных
Обе платформы поддерживают популярные на сегодняшний день системы хранения данных, включая как стандартные реляционные так и NoSQL-решения.

Amazon Web Services
Windows Azure
Blob/Object хранилище
Размер одного объекта в Amazon S3 не может превышать 5 Тб. Нет ограничений на общий объем данных и количество объектов
Размер одного объекта не может превышать 200 Гб (блочный блоб) и 1 Тб (страничный блоб). Размер всех объектов одного аккаунта не может превышать 100 Тб, на количество таких аккаунтов ограничений не существует
* Поддерживается гео-репликация данных, что позволяет значительно повысить надежность хранения данных
Табличное хранилище
В Amazon SimpleDB нет ограничения на количество записей. Таблицы организуются в “домены”, размер которых не может превышать 10 Гб. На количество “доменов“ ограничений не существует
В Windows Azure Table Storage не существует ограничений на количество записей. Запись может иметь до 255 полей и не может превышать 1 Мб  размере. Размер объектов в одном аккаунте не может превышать 100 Тб. Нет ограничений на количество аккаунтов

Реляционное хранилище
В данной категории у AWS существует довольно таки интересное предложение. Платформа предлагает клиентам 2 варианта запуска реляционного движка в облаке: управляемый и неуправляемый. В случае использования неуправляемого варианта вам предоставляются на выбор готовые образы (так называемые Application Machine Images) с уже предустановленными СУБД (поддерживаются IBM DB2, Oracle, MySQL, SQL Server Express, SQL Server Standart, Postgres, Syba). После выбора конкретного образа с него запускается виртуальная машина и ваша СУБД становится доступной. Так как сами виртуальные машины непостоянны и им требуется внешнее хранилище данных вам еще необходимо будет настроить Amazon EBS сервис для периодического сброса бекапов в хранилище. Второй подход – управляемый.  В этом случае используется сервис Amazon Relational Database Service, при котором для вас разворачивается СУБД MySQL либо Oracle и сама платформа уже берет на себя задачи по обновлению, репликации и хранению резервных копий.
Windows Azure предоставляет реляционный сервис SQL Azure. Разработчику нет необходимости инсталлировать и конфигурировать сервера, можно использовать аналогичную модель программирования под SQL Server. Протокол взаимодействия все тот же – TDS. Размер базы данных ограничен 150 Гб. Существует нативная поддержка шардинга базы данных при помощи технологии SQL Azure Federations, что позволяет поднять производительность до нереальных высот. Кроме того поддерживаются ряд вспомогательных и полезных сервисов: SQL Azure Reporting Services, SQL Azure DataSync и др. 

Высокопроизводительные вычисления
Как правило для решения сложных научных, инженерных и бизнес задач требуется огромное количество одновременно работающих вычислительных центров, каждый из которых выполняет лишь часть работ но все вместе они решают одну задачу (примером может быть задачи молекулярного моделирования). Как AWS так и Windows Azure поддерживают высокопроизводительные вычисления. Amazon предоставляет специальный вид виртуальной машины, называемый Cluster Machine, что позволяет объединять инстансы в кластера и выполнять тяжелые вычисления. У Microsoft в свою очередь существует Windows Server HPC 2008 R2 позволяющий объединять собственные сервера с облачными виртуальными машинами  в любой пропорции для выполнения распределенных вычислений. Кроме того обе платформы поддерживают и значительно упрощают запуск такого популярного на сегодняшний день решения как Hadoop, что позволяет проводить в облачных условиях анализ больших объемов данных.

Разработка решений
Обе платформы поддерживают большинство современных языков программирования, кроме того значительные инвестиции вливаются в разработку различного рода SDK, аддонов и плагинов к популярным средам разработки и т.д.

Amazon Web Services
Windows Azure
Портал разработчика
Присутствует
Присутствует
Eclipse Tools
Присутствует
Присутствует
Visual Studio Tools
Присутствует
Присутствует
Java SDK
Присутствует
Присутствует
Мобильное SDK
iOS, Android
iOS, Android, WP7
PHP SDK
Присутствует
Присутствует
Python SDK
Присутствует
Отсутствует
Ruby SDK
Присутствует
Присутствует
.NET SDK
Присутствует
Присутствует

Эмуляторы
Большое преимущество здесь остается за Windows Azure так для локальной разработки предоставляется очень полезная и удобная среда (эмулируется как среда выполнения так и хранилище данных), максимально имитирующая облачную, чего нельзя сказать о Amazon Web Services.

Мониторинг состояния сервисов
AWS включает службу Amazon CloudWatch, позволяющую собирать и аггрегировать детальные метрики с EC2-инстансов, балансировщиков нагрузки, баз данных и т.д.
Windows Azure предоставляет специальную диагностическую подсистему, позволяющую мониторить, аггрегировать и хранить логи приложения, IIS логи, счетчики производительности, статистику базы данных и так далее.

Скорость
Наверное одна из наиболее важных составляющих успеха той или иной платформы. Здесь безоговорочная победа Windows Azure. Независимые тесты производительности были проведены компанией Compuware с использованием их собственной утилиты CloudSleuth, дебютировавшей в этом году. Каждый может посмотреть результаты за последний месяц на сайте CloudSleuth https://www.cloudsleuth.net/web/guest/global-provider-view. На этом же сайте можно также посмотреть модель тестирования облачных сервисов. На момент написания данного поста ситуация была следующей:

Global Cloud Providers Performance
Суммируя все вышеописанное можно составить итоговую таблицу по всем сервисам обеих платформ.

Категория
Amazon Web Services
Windows Azure
Вычислительные мощности
    Вычисления
Amazon  Elastic Compute (EC2)
Windows Azure Compute
    Высокопроизводительные   вычисления
Amazon EC2 HPS Clusters
Windows HPC Server
    Обработка данных
Amazon Elastic MapReduce (Hadoop)
Hadoop on Windows Azure Compute
    Авто масштабирование
Auto Scaling, Elastic Beanstalk
Scaling Application Block
    Распределенное кеширование
Amazon ElasticCache
AppFabric Caching
Контент
    CDN
Amazon CloudFront
Windows Azure CDN
База данных
    NoSQL
Amazon SimpleDB
Windows Azure Table Storage
    Реляционная база
Amazon Relational DB Service
SQL Azure
    Репортинг
SQL Azure Reporting
    Синхронизация
SQL Azure DataSync
    Федерация
SQL Azure Federations
Разворачивание
    IaaS разворачивание
Amazon Elastic Compute
VM Role
    PaaS разворачивание
Elastic Beanstalk
Web/Worker Roles
    Массовый деплоймент
AWS CloudFormation
Маркетплейс
    Маркетплейс приложений
Custom App Catalog
Windows Azure Marketplace
    Маркетплейс данных
Windows Azure Marketplace
Мониторинг и управление
    Мониторинг
Amazon CloudWatch
Диагностическое API
    Ручное управление
AWS Management Console
Windows Azure Developer Portal
Коммуникация
    Простая очередь
Amazon Simple Queuing Service
Windows Azure Queue Storage
    Продвинутая очередь
Windows Azure Service Bus Queues
    Нотификация
Simple Notification Service
Windows Azure Service Bus
    Почта
Simple Email Service
Сеть
    Траффик менеджмент
Amazon Route 53
Windows Azure Traffic Manager
    VPN/Гибридное облако
Virtual Private Cloud, Direct Connect
Windows Azure Connect
    Балансировка нагрузки
Elastic Load Balancing
Windows Azure Compute
Безопасность
    Управление подлинностью
AppFabric Access Control Service
Хранилище
    Блоб хранилище
Amazon S3
Windows Azure Blob Storage
    Диски
Amazon Elastic Block Storage
Windows Azure Drives
    Импорт/экспорт медиа
Amazon Import/Export

Как видим по функциональности платформы сопоставимы, поэтому решение стоит принимать уже основываясь на требованиях проекта и четко понимая разницу между IaaS и PaaS принципами ! Спасибо за внимание, надеюсь публикация будет полезной !

Комментариев нет: