
Буквально несколько дней назад я стал участником одной занимательной беседы. С одной стороны, Windows Azure дает нам возможность использовать в облаке любое .NET-web-приложение с минимальным количеством усилий: из 20 минут, потраченных на перенос моего проекта в облако, 19 ушли на аплоад файлов. С другой стороны, возникает логичный вопрос – «в чем же сила облака, брат?» Считаю, что основная его сила – в масштабируемости и дополнительный сервисах, которые у нас появляются, и которые мы можем использовать.
Масштабируемость – вещь довольно понятная, и либо есть, либо нет. В контексте Windows Azure можно смело утверждать, что масштабируемость у нас есть. Далее предлагаю перейти к более интересной, на мой взгляд, теме – к сервисам и службам, которые доступны нам только в облаке.
Давайте рассмотрим простой пример. Многие могли сталкиваться с проблемой производительности реляционных баз данных в больших проектах. Эти базы дают нам ряд механизмов для контроля целостности данных и богатый синтаксис SQL запросов, но это сильно сказывается на их производительности. Одно из возможных решений проблемы – служба Table Storage в рамках Windows Azure. Механизм ее прост, как угол дома, для работы с ней доступны .NET-, а с недавнего времени еще и Java-, node.js- и php-библиотеки, а также REST API. Скорость выборки данных в разы выше, чем у реляционных баз данных, а стоимость ниже на порядок.
Но за все хорошее нам надо чем-то платить, как любят говорить американские коллеги: «This is not a silver bullet». Например, мы не можем создавать внешние ключи между таблицами, как привыкли это делать, у нас есть ограничение на количество колонок в таблице, на максимальное количество строк, которые получим в результате выборки.
Еще одним важныq аспект – простота и ограниченность языка запросов на выборку данных из Table Storage. Мы можем использовать LINQ to Azure Table Storage, но список поддерживаемых операторов пока не так уж и велик: From, Where, Take, First, FirstOrDefault, Select. В заключение позволю себе процитировать Михаила Жванецкого: «Вчера большие, но по пять, а сегодня маленькие, но по три».
Еще одна интересная служба – Service Bus Topics and Subscriptions. Думаю, что механизм очередей сообщений не в новинку для почтенного читателя, но, используя Service Bus Topics and Subscriptions, мы можем создать нечто более интересное.
Итак, давайте представим такую ситуацию: у нас есть крупный Интернет-магазин, и наши пользователи регулярно делают заказы. Информация о заказах должна поступить в бухгалтерию, чтобы бухгалтеры подготовили необходимые документы, и на склад, чтобы тот начал планировать отгрузку товара. Помимо этого, мы хотим получать дополнительное уведомление о заказах суммой более $ 1000.
Основная идея Service Bus Topics and Subscriptions состоит в том, что мы создаем одну общую тему (Topic) и в нее записываем, как в обычную очередь, все наши сообщения. В дополнение к теме мы можем создавать подписки (Subscription). Каждая подписка может включать фильтр сообщений. Таким образом, мы создаем одну тему для записи сообщений и три подписки (для бухгалтерии, склада и еще одну для бухгалтерии, но с фильтром). Чтение сообщений из подписок будут проходить разными процессами с разной периодичностью, например, бухгалтерия читает сообщения регулярно, а склад просто должен получить сводку за прошедшие сутки. Также мы можем гарантировать, что каждый алгоритм будет работать только с теми данными, которые он ожидает получить на вход. Отвечая на вполне логичный вопрос «а как у нас обстоят дела с правами доступа?» могу сказать, что мы можем использовать любой собственный OAuth-провайдер для разграничения прав доступа к этой службе. Разве это не круто? Вы все еще не используете Service Bus Topics and Subscriptions? Тогда мы идем к вам.
Подводя итоги, хочу обратить особое внимание на то, что платформа Windows Azure – это именно платформа, ей присущи абсолютно уникальные особенности, она имеет свои преимущества и недостатки. Ни в коем случае нельзя рассматривать Windows Azure просто как предварительно сконфигурированные виртуальные машины, ибо это не так. Windows Azure – это набор сервисов, которые доступны нам, которые нужно активно использовать. Только в таком случае мы сможем получить от этой платформы максимальную отдачу.
Метки: Azure, Бойко, технологии, фотки






