Jan 02, 2016
PBC204
Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure
Иван Бодягин ABBYY
Содержание
Облачные сервисы, преимущества PaaSАрхитектура FineReader OnlineПрактика использования
ОчередиТаблицыХранилищаРазвертываниеМасштабирование
Облачные сервисы
Возможность масштабирования в зависимости от нагрузки
Экономия на обслуживании оборудования
Возможность быть ближе к пользователюРазмещение сервисов в датацентрах по всему миру
БезопасностьПользователи доверяют Microsoft сохранность своих данных
PaaS vs IaaS
IaaS позволяет не изменив ни строчки кода сделать сервис «облачным»
Но это иллюзия =)
PaaS провоцирует разрабатывать масштабируемую и надежную архитектуру
ОтказоустойчивостьМинимум два экземпляра каждой роли
По одному процессу распознавания на ядро.
Периодический опрос процессов
При исключении, отсутствии ответа, превышении времени обработки задания процесс убивается. Задание возвращается в очередь
Масштабируемость
Процессы обработки заданий поднимаются динамически, если есть необходимость
Задачам можно назначать приоритеты
Комплект из WebRole + WorkerRole развернут в нескольких географических регионах
Обработчики из одного региона могут брать задания из других регионов, если кто-то не справляется
Autoscale Application Block - WASABi
Два типа правилConstraint
Работают на основе временных границПомогают держать в рамках бюджетИмеют ранги для определения победителя, если времена пересекаются
ReactiveДинамически подстраивают число «инстансов» или выполняют другие действия руководствуясь указанными предусловиямиПредусловия формируются из счетчиков или произвольных бизнес-метрикПомогают динамически подстраиваться вашему приложению под текущую нагрузку
WASABi
Брьба с «осцилированием» - «Yo-yo» проблемаРазные условия для поднимания и выключения дополнительных инстансов
Не включать/выключать дополнительные инстансы на границе часа
Ограничивать «масштабы масштабирования»
Детали реализации
IPlatformQueueAzureQueue – реализация очереди для Azure
IPlatformBlobStorageAzureBlobStorage – реализация облачного хранилища
IPlatformDataAzureSqlData – реализация для SQL AzureAzureTableData – реализация для AzureTable (успехом не увенчалась)
Особенности работы с очередями
Service BusУведомления, приоритеты, выборка по фильтру, ...
Azure QueueМинимальный функционалНельзя изменить время обработки сообщенияМаксимальное время обработки 2 часаНет приоритетовНельзя фильтровать сообщения
Работа с таблицами
Только один индекс, состоящий из 2-х частейМожно хранить только ограниченный набор типов
Нельзя использовать Enum
Не очень удачно реализована библиотека для взаимодействия
POCO объекты должны содержать определенные поляПлохая диагностика
Нельзя использовать сортировку
Работа с SQL Azure и Blob Storage
SQLНедостаток инструментария, относительно малый размер базы
BLOBВозможность читать часть BLOB-а по смещениюВозможность создавать публичные ссылки с разными ограничениями
Развертывание
Если нужно развернуть несколько проектов или дополнительные сущности, то на них должна быть ссылка из основного проектаЕсть ограничения на размер пакета
Решение: Все необходимые проекты и прочие сущности предварительно архивируются и выкладываются в BLOB StorageПри развертывании все извлекается из облачного хранилища, распаковывается и устанавливается
Итоги
Не смотря на недавний старт, Azure является достаточно взрослой платформой для развертывания отказоустойчивых и масштабируемых сервисов
PaaS подход в перспективе предпочтительнее
Azure активно развивается и с каждым релизом предоставляет новый интересный функционал
Service Bus, Azure Cache, Access Control, etc…
Вопросы
PBC204 Иван Бодягин
Вы сможете задать вопросы докладчикам в зоне «Спроси эксперта» в течение часа после завершения этой сессии