DevCon12 // msdevcon.ru #msdevcon мая, 2012 г. Microsoft
// DevCon12 Практический опыт миграции сервиса на Azure Иван Бодягин Deputy CTO ABBYY
Содержание Облачные сервисы Архитектура FineReader Online Практика использования Очереди, таблицы, Хранилища Развертывание Масштабирование
#msdevcon Зачем нужны и какие бывают Облачные сервисы
Зачем нужны online сервисы Устранение цепочки посредников Новые рыночные ниши борьба с пиратством новый класс решений
Чем хороши облака Масштабирование потребляется только необходимый объем ресурсов скорость масштабирования в несколько раз выше, чем при традиционном подходе Надержность и доступность гораздо выше скорость реакции на инцидент на много больше инструментов
Чем хороши облака Экономия на обслуживании оборудования не для всех сценариев Гео-распределение датацентры по всему миру
Какие бывают облака + очень низкий порог вхождения - больше работы по обслуживанию окружения - создается иллюзия полноценного облачного сервиса Infrastructure as a Service (IaaS)
Какие бывают облака - требует серьезных усилий при переходе + меньше работ по администрированию + гарантировано обладает преимуществами облачных решений Platform as a Service (PaaS)
#msdevcon FineReader Online Архитектура
Abbyy.Online API
Детали реализации IPlatformQueue AzureQueue – реализация очереди для Azure IPlatformBlobStorage AzureBlobStorage – реализация облачного хранилища IPlatformData AzureSqlData – реализация для SQL Azure AzureTableData – реализация для AzureTable (успехом не увенчалась)
Архитектура Два экземпляра каждой роли для отказоустойчивости При исключении, отсутствии ответа, превышении времени обработки задания процесс убивается. Задание возвращается в очередь Узлы развернуты в разных регионах Регионы могут помогать друг-другу при высоких нагрузках
#msdevcon WASABi Azure Autoscale Application Block
Два типа правил Constraint Работают на основе временных границ Помогают держать в рамках бюджет Имеют ранги для определения победителя, если времена пересекаются Reactive Динамически подстраивают число «инстансов» или выполняют другие действия руководствуясь указанными предусловиями Предусловия формируются из счетчиков или произвольных бизнес- метрик Помогают динамически подстраиваться вашему приложению под текущую нагрузку
особенности По прежнему необходимо писать ручной код, так как это библиотека а не встроенный сервис. Нет необходимости заботиться об отказоустойчивости – поддерживается механизм лизинга и взаимного контроля
#msdevcon Опыт работы с Azure
Развертывание Если нужно развернуть несколько проектов или дополнительные сущности, то на них должна быть ссылка из основного проекта Есть ограничения на размер пакета Решение: Все необходимые проекты и прочие сущности предварительно архивируются и выкладываются в BLOB Storage При развертывании все извлекается из облачного хранилища, распаковывается и устанавливается
Развертывание Есть ошибки при формировании пакета Неочевидное расположение каталогов с сайтами Затруднена отладка – в некоторые моменты просто нет диагностики Эмулятор малопригоден Маскирует ошибки Не полностью моделирует реальное облако
Очереди Service Bus уведомления, приоритеты, фильтрация Azure Queue Нельзя изменить время обработки Нет приоритетов Нельзя фильтровать
Таблицы Только один индекс (из 2х частей) Весьма ограниченый набор типов Даже enum не поддерживается Плохой дизайн библиотеки POCO объекты с определенными полями Плохая диагностика Нельзя использовать сортировку
SQL Azure Очень бедный инструментарий Сложности при миграции Невозможно сделать согласованный бакап Всегда нужно учитывать возможность ошибки соединения В среднем одно подключение в сутки с ошибкой
Общий итог Не смотря на недавний старт, Azure уже является достаточно взрослой платформой для развертывания отказоустойчивых и масштабируемых решений PaaS подход в перспективе предпочтительнее IaaS. Azure активно развивается и с каждым релизом предоставляет новый полезный функционал ServiceBus, Azure cache, Access Control…
#msdevcon Иван Бодягин Deputy CTO ABBYY
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.