570 likes | 723 Views
Windows A zure, как универсальный масштабируемый бэкэнд для мобильных приложений. Стас Павлов Microsoft. облака. Предпосылки появления. Рост нагрузки на частные дата-центры Увеличение количества пользователей Распространение мобильных решений Одновременная совместная работа
E N D
Windows Azure, как универсальный масштабируемый бэкэнд для мобильных приложений Стас Павлов Microsoft
Предпосылки появления • Рост нагрузки на частные дата-центры • Увеличение количества пользователей • Распространение мобильных решений • Одновременная совместная работа • Повышение ожиданий от приложений • Непредсказуемые пики нагрузки • Высокие расходы на дата-центы • Ресурсы: электричество, охлаждение, сети, персонал • Проблемы масштабирования: большие первоначальные инвестиции, необходимость платить «деньги вперед» за непредсказуемую нагрузку
Что могут дать разработчику? • Масштабирование системы по необходимости • Высокая доступность и отказоустойчивость • Эффективное управление расходами • Возможность фокусироваться на создании и обслуживании продукта, а не на инфраструктуры • Быстрая публикация решений любого масштаба
Оптимальные нагрузочные сценарии “Пакетная обработка “ “Быстрый рост“ Вычисл. мощн Период неактивности Вычисл. мощн использование Среднее использование Среднее Время Время • Пакетная обработка • Лишняя мощность просто теряется • Сложно быстро выйти на рынок • Успешным сервисам надо расти • Поддерживать рост – вызов для ИТ служб • Сложное и долгое развертывание Вычисл. мощн Вычисл. мощн “Пиковая нагрузка“ “Предсказуемый всплеск“ Среднее использование Среднее использование Время Время • Сезонные сервисы • Периодическое увеличение запросов • Сложность ИТ и «лишняя» мощность • Непредвиденный/незапланированныйпик • Падает производительность • Невозможно «запасти» производительность
Платформа Windows Azure Средства разработки Средства управления Windows Azure SQL Azure Windows Azure AppFabric Azure Fabric/Fabric Controller
Windows Azure • Windows Azure Platform – окружение, управляющее облаком и набор сервисов (.NET, identity, storage). Набор виртуальных машин (web role, worker role) • SQL Azure – распределенная реляционная база данных • Table Service – не-реляционное хранилище сущностей (1Мб, (255 – 3) свойства у каждой сущности) • Blob Service – хранилище двоичных данных, может быть подключено как общий сетевой диск (1 Тб в page blob, 200 Гб в block blob) • Queues – квази-транзакционная очередь (8Кб сообщение)
Windows Azure AppFabric • Service Bus - связь между распределенными приложениями на основе сообщений • Access Control – управление доступом • Distributed Caching – распределенный кэш в памяти • Хранение состояния • Кеширование данных • Одинаковая модель программирования для приложений, размещаемых в облаке и частном дата-центре
Масштабирование Database • Request Web Tier B/L Tier Mobile Client • Response
Масштабирование Mobile Client Mobile Client Database Web Tier B/L Tier Mobile Client Mobile Client Mobile Client • “Server Busy”
Масштабирование Mobile Client Mobile Client Database Web Tier B/L Tier Mobile Client • “Timeout” Mobile Client Mobile Client
Масштабирование Mobile Client Web Tier N L B Mobile Client Database Web Tier B/L Tier Mobile Client Mobile Client Web Tier Mobile Client
Масштабирование Mobile Client B/L Tier N L B Mobile Client Database Web Tier Mobile Client B/L Tier Mobile Client B/L Tier Mobile Client
Масштабирование Mobile Client Web Tier N L B B/L Tier N L B Mobile Client Database Web Tier Mobile Client B/L Tier Mobile Client Web Tier B/L Tier Mobile Client
Масштабирование Mobile Client • p1 p2 p3 Web Tier N L B B/L Tier N L B Mobile Client Database Web Tier Mobile Client B/L Tier Mobile Client Web Tier B/L Tier Mobile Client
Масштабирование Mobile Client • p1 p2 p3 Web Tier N L B B/L Tier N L B Mobile Client Database Web Tier Mobile Client B/L Tier Mobile Client Web Tier B/L Tier Mobile Client • Дорого и много работы по внедрению
Масштабирование • p1 p2 p3 • А сейчас не так хорошо … Web Tier N L B B/L Tier N L B Database Web Tier Mobile Client B/L Tier Web Tier B/L Tier • Дорого и много работы по внедрению • А теперь всё простаивает …
Масштабирование • Пиковая загрузка • Простой • Использование • Январь • Апрель • Июль • Октябрь
Масштабирование Mobile Client Mobile Client Database Web Tier B/L Tier Mobile Client Mobile Client Mobile Client • “Server Busy”
Масштабирование Mobile Client Web Role N L B Mobile Client AzureStorage Web Role Worker Role Mobile Client Mobile Client Web Role Mobile Client • Прозрачно для разработчика
Масштабирование Mobile Client Web Role N L B Worker Role N L B Mobile Client AzureStorage Web Role Mobile Client Worker Role Mobile Client Web Role Worker Role Mobile Client
Масштабирование Mobile Client Web Role N L B Worker Role N L B Mobile Client AzureStorage Web Role Mobile Client Worker Role Mobile Client Web Role Worker Role Mobile Client • Тесное связывание рабочей и веб-ролей – анти-паттерн
Масштабирование 4. Обработать Web Role Worker Role 2. Ответить Req 1. Поставить в очередь 3. Взять из очереди Queue
Масштабирование 4. Обработка Web Role Worker Role 5. Добавить результатв таблицу Req Queue 6. Проверить таблицуна наличие данных Table
Масштабирование WMI_Win32_PerfFormattedData_ASPNET_ASPNETApplications /RequestsPerSecond Mobile Client Web Role N L B Mobile Client AzureStorage Web Role Worker Role Mobile Client Mobile Client Web Role Mobile Client Log Management API или Email Worker Role
Масштабирование Web Role Web Role Web Role Worker Role Req Req Req Queue Web Role Web Role • Мониторинг длины очереди Web Role
Масштабирование Web Role Worker Role Web Role Worker Role Web Role Worker Role Req Req Req Queue Web Role Web Role • Мониторинг длины очереди Web Role Worker Role Worker Role Worker Role
Масштабирование • Быстрое масштабирование с использование конфигурации и/или API • Проработка сценариев взаимодействия веб и рабочих ролей • Разработка стратегии масштабирования приложения
Деморабота с порталом управления Windows Azure
Windows Azure Toolkits for Devices • для Windows Phone • для iOS • для Android
Windows Azure Toolkit for Android • https://github.com/microsoft-dpe/wa-toolkit-android • может использовать ту же самую серверную часть, предоставляющую сервисы и прокси, либо доступ напрямую • реализована работа с хранилищем и аутентификация/авторизация • примеры приложений • Unit тесты
Windows Azure Toolkit for iOS • https://github.com/microsoft-dpe/wa-toolkit-ios • может использовать ту же самую серверную часть, предоставляющую сервисы и прокси, либо доступ напрямую • реализована работа с хранилищем и аутентификация/авторизация • примеры приложений