SlideShare a Scribd company logo
Построение высоконагруженных web-приложений на базе Windows AzureФещенко Александрfeschenko.alex@gmail.comhttp://feschenkoalex.blogspot.comTwitter: FeschenkoAlex
Высоконагруженные web-приложенияЧто я имею ввиду:Глобальная аудитория, низкое время ответа
Возможность масштабирования для обработки большого количества одновременных запросов
Высокие требования к пропускной способностиComputeПлан:Асинхронная модель программирования
Управление доступом к данным
Настройка производительности приложенияАсинхронная модель программирования
Синхронные приложенияОдин запрос обрабатывается одним потокомБлокируется на время выполнения «работы», после чего возвращают ответ и снова становится доступнымSQL AzureВеб приложение“Работа” #1Входящий запрос #1Средний уровеньБлокировкаПотокОтвет #1WA StorageThreadОтвет #1ComputeОжидание…Входящий запрос #2Время идет…Стеки потоков – структуры для обработки входящих запросовБольшинство потоков простаивают впустуюУвеличение количества потоков для повышения производительности – тяжеловесный подходАсинхронная модель программированияВеб приложениеSQL Azure“Работа” #1Клиент #1Средний уровеньОтвет #1WA StorageОтвет #1ПотокПотокКлиент #2“Работа” #2КонтекстОтвет #2Ответ #2Клиентские запросы явно отслеживаются во внутренних структурах приложенияОперации над контекстом должны быть идемпотентны или транзакционныПотоки блокируются ненадолго, поэтому большее количество потоков гарантирует большую пропускную способность
Асинхронная модель в облакеАсинхронная модель применительна как к локальным так и к облачным приложениям Для асинхронного взаимодействия между ролями вашего приложения очень удобна технология Windows Azure Storage QueuesВстроенная балансировка нагрузки
Изящная обработка падений отдельных экземпляров ролиWindows Azure Storage и SQL Azure поддерживают асинхронные вызовыADO.NET Entity Framework
WCF Data Services
LINQ to SQL
Plain Old ADO.NETУправление доступом к данным
Управление доступом к даннымКак эффективно передать данные клиенту и от него ?Существует много типов данных и каждый из них имеет свои особенностиBlobStorageПриложениеПриложениеКак можно больше снижайте эффект своего присутствияОтправляйте клиентов напрямую к Blob Storage за статическим контентом
Медиа (изображения, видео и др.)
Бинарные данные (XAP, MSI, ZIP и др.)
Текстовые форматы (XML)Shared Access SignaturesПредназначены для прямого доступа к защищенным ресурсамСрок действия SAS заканчивается по истечению определенного промежутка времени либо по требованию2. Сервис формирует подпись на основе секретного ключа1. Я Боб, хочу получить доступ к XПриложениеКлюч3. Сервис возвращает SAS подписанный HTTPS URLBlob Storage4. Боб использует SAS для доступа к Xнапрямую из Blob StorageЗащищенный блоб (или платный)X
Глобальный доступ к блобамПолучайте доступ к открытым блобам посредством Windows AzureCDNCDNBlob StorageБлижайшая точка присутствияОткрытый контейнерXXDNS имя определяет ближайшую  точку присутствияСнижает время ожидания и нагрузку на центральное хранилище
Content Delivery Network~100 глобально распределенных дата-центраQuincy, WAChicago, ILSan Antonio, TXDublin, IrelandGeneration 4 DCs
Windows Azure CDN – с чего начатьРазрешить CDN доступ с вашего аккаунта Windows AzureВыполняется на dev-портале Windows Azure
Это сформирует новый формат доступа к открытым блобам посредством CDN
Одинаковый контент, 2 точки доступа
CDN URL: http://azXXXX.vo.msecnd.net/images/myimage.png
WA Storage URL: http://myacct.blob.core.windows.net/images/myimage.pngCNAME маппинг применительно к CDN URL’sАдаптивный стриминг также можно настроить на работу с CDNhttp://blog.smarx.com/posts/smooth-streaming-with-windows-azure-blobs-and-cdnКеширование в памятиКешируйте «горячие» данные в памяти для предотвращения медленного обращения к базе данныхНапример, товары в каталогеКеширование в памятиSQL AzureSQL AzureПриложениеTable StorageTable StorageКеширующий слой поможет Вам снизить время ожидания и стоимостьНизкое время ожидания и высокая пропускная способность (особенно под нагрузкой)Архитектура распределенного кешированияНесколько экземпляров web-роли могут быть клиентами кэша be cache clientsКлиенты видят кэш в виде единого унифицированного представленияКеширующий слойКеширующий слой распределяет данные между несколькими хостами

More Related Content

PDF
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
PPTX
Новые возможности развертывания и масштабирования open source приложений в Az...
PDF
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
PDF
Отказоустойчивые решения SQL
PPTX
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)
PDF
FT & HA Rails приложений приложений — это просто
PDF
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
PPTX
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Новые возможности развертывания и масштабирования open source приложений в Az...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Отказоустойчивые решения SQL
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)
FT & HA Rails приложений приложений — это просто
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...

What's hot (19)

PPTX
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
PDF
Pavel Dovbush Toster
PPTX
Развертывание и управление CMS Drupal в Microsoft Azure
PDF
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
PDF
15 - Web-технологии. Сессии и авторизация
PDF
08 - Web-технологии. Архитектура frontend-backend
PPT
Attacking MongoDB
PPTX
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
PPT
1С-Битрикс - Веб-кластер
PDF
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
PPTX
Azure web apps - designing and debugging
PDF
Вадим Мадисон "Опыт разработки через микросервисы"
PPTX
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
PPT
1С-Битрикс - Производительность
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
PDF
Балансировка нагрузки и отказоустойчивость в Одноклассниках
PDF
Нагрузочное тестирование API. Как летать, а не ползать?
PPTX
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Pavel Dovbush Toster
Развертывание и управление CMS Drupal в Microsoft Azure
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
15 - Web-технологии. Сессии и авторизация
08 - Web-технологии. Архитектура frontend-backend
Attacking MongoDB
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
1С-Битрикс - Веб-кластер
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Azure web apps - designing and debugging
Вадим Мадисон "Опыт разработки через микросервисы"
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
1С-Битрикс - Производительность
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Как не положить тысячи серверов с помощью системы централизованного управлени...
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Нагрузочное тестирование API. Как летать, а не ползать?
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Ad

Viewers also liked (8)

PDF
Stereo3D - Entertainment for the 21st Century
PPT
11 Tips for 2011: Making Social Media Marketing Work Smarter For You
PDF
fashion editorial_Improper Bostonian
PPT
Ontroking mm
PPT
Writing an Effective Résumé
PPT
Trig overview
PPTX
Azure Powershell. Azure Automation
PPTX
Microsoft Azure. Troubleshooting and monitoring.
Stereo3D - Entertainment for the 21st Century
11 Tips for 2011: Making Social Media Marketing Work Smarter For You
fashion editorial_Improper Bostonian
Ontroking mm
Writing an Effective Résumé
Trig overview
Azure Powershell. Azure Automation
Microsoft Azure. Troubleshooting and monitoring.
Ad

Similar to Построение высоконагруженных приложений на базе Windows Azure (20)

PPTX
Azure - хранение данных в облаке
PPTX
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
PPTX
Основные аспекты управления веб-проектом в Microsoft Azure Websites
PPTX
Облако Windows Azure для тестирования и разработки
PDF
The Old New ASP.NET
PPTX
IOP202 DevCon 2012 Apache Lucene in Windows Azure
PPTX
Windows Azure - BigData and Hadoop
PPTX
Интеграция мобильных приложений с Window azure
PPTX
PPTX
Интеграция сайта с облачным хранилищем (Александр Демидов)
PPTX
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
PPTX
Технический обзор платформы Windows Azure. Демонстрация, Azure University
PDF
Приватный клауд на базе OpenStack
PPTX
Как легко и быстро поднять стартап на облаке
PPTX
Windows azure общий обзор
PPTX
Roman Zdebskiy - Windows Azure
PPTX
Sql azure и все, все, все...
PDF
Доставка данных в реальном времени.
PPTX
Drupal в облаке - Владимир Юнев
PPTX
Презентация технологии веб-кластеров
Azure - хранение данных в облаке
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Облако Windows Azure для тестирования и разработки
The Old New ASP.NET
IOP202 DevCon 2012 Apache Lucene in Windows Azure
Windows Azure - BigData and Hadoop
Интеграция мобильных приложений с Window azure
Интеграция сайта с облачным хранилищем (Александр Демидов)
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
Технический обзор платформы Windows Azure. Демонстрация, Azure University
Приватный клауд на базе OpenStack
Как легко и быстро поднять стартап на облаке
Windows azure общий обзор
Roman Zdebskiy - Windows Azure
Sql azure и все, все, все...
Доставка данных в реальном времени.
Drupal в облаке - Владимир Юнев
Презентация технологии веб-кластеров

More from Alexander Feschenko (15)

PPTX
Azure Container Service
PPTX
Microsoft Azure Automation
PPTX
Azure App Service Architecture. Web Apps.
PPTX
Automating Azure VMs with PowerShell
PPTX
Introduction to Windows Azure IaaS
PPTX
Windows Azure. Scaling, Caching and Performance
PPTX
Windows Azure Security and Diagnostics
PPTX
Windows Azure Storage
PPTX
Windows Azure Overview and Application Lifecycle
PPTX
Высокопроизводительные приложения на базе Windows Azure
PPTX
HTML5 WebSockets and WebWorkers
PDF
Windows Azure Internals
PPTX
Developer Days 2011, Kharkov
PPTX
Построение высоконагруженных приложений на базе Windows Azure
PPTX
Продвинутая web-отладка с Fiddler
Azure Container Service
Microsoft Azure Automation
Azure App Service Architecture. Web Apps.
Automating Azure VMs with PowerShell
Introduction to Windows Azure IaaS
Windows Azure. Scaling, Caching and Performance
Windows Azure Security and Diagnostics
Windows Azure Storage
Windows Azure Overview and Application Lifecycle
Высокопроизводительные приложения на базе Windows Azure
HTML5 WebSockets and WebWorkers
Windows Azure Internals
Developer Days 2011, Kharkov
Построение высоконагруженных приложений на базе Windows Azure
Продвинутая web-отладка с Fiddler

Построение высоконагруженных приложений на базе Windows Azure

  • 1. Построение высоконагруженных web-приложений на базе Windows AzureФещенко Александрfeschenko.alex@gmail.comhttp://feschenkoalex.blogspot.comTwitter: FeschenkoAlex
  • 2. Высоконагруженные web-приложенияЧто я имею ввиду:Глобальная аудитория, низкое время ответа
  • 3. Возможность масштабирования для обработки большого количества одновременных запросов
  • 4. Высокие требования к пропускной способностиComputeПлан:Асинхронная модель программирования
  • 7. Синхронные приложенияОдин запрос обрабатывается одним потокомБлокируется на время выполнения «работы», после чего возвращают ответ и снова становится доступнымSQL AzureВеб приложение“Работа” #1Входящий запрос #1Средний уровеньБлокировкаПотокОтвет #1WA StorageThreadОтвет #1ComputeОжидание…Входящий запрос #2Время идет…Стеки потоков – структуры для обработки входящих запросовБольшинство потоков простаивают впустуюУвеличение количества потоков для повышения производительности – тяжеловесный подходАсинхронная модель программированияВеб приложениеSQL Azure“Работа” #1Клиент #1Средний уровеньОтвет #1WA StorageОтвет #1ПотокПотокКлиент #2“Работа” #2КонтекстОтвет #2Ответ #2Клиентские запросы явно отслеживаются во внутренних структурах приложенияОперации над контекстом должны быть идемпотентны или транзакционныПотоки блокируются ненадолго, поэтому большее количество потоков гарантирует большую пропускную способность
  • 8. Асинхронная модель в облакеАсинхронная модель применительна как к локальным так и к облачным приложениям Для асинхронного взаимодействия между ролями вашего приложения очень удобна технология Windows Azure Storage QueuesВстроенная балансировка нагрузки
  • 9. Изящная обработка падений отдельных экземпляров ролиWindows Azure Storage и SQL Azure поддерживают асинхронные вызовыADO.NET Entity Framework
  • 12. Plain Old ADO.NETУправление доступом к данным
  • 13. Управление доступом к даннымКак эффективно передать данные клиенту и от него ?Существует много типов данных и каждый из них имеет свои особенностиBlobStorageПриложениеПриложениеКак можно больше снижайте эффект своего присутствияОтправляйте клиентов напрямую к Blob Storage за статическим контентом
  • 16. Текстовые форматы (XML)Shared Access SignaturesПредназначены для прямого доступа к защищенным ресурсамСрок действия SAS заканчивается по истечению определенного промежутка времени либо по требованию2. Сервис формирует подпись на основе секретного ключа1. Я Боб, хочу получить доступ к XПриложениеКлюч3. Сервис возвращает SAS подписанный HTTPS URLBlob Storage4. Боб использует SAS для доступа к Xнапрямую из Blob StorageЗащищенный блоб (или платный)X
  • 17. Глобальный доступ к блобамПолучайте доступ к открытым блобам посредством Windows AzureCDNCDNBlob StorageБлижайшая точка присутствияОткрытый контейнерXXDNS имя определяет ближайшую точку присутствияСнижает время ожидания и нагрузку на центральное хранилище
  • 18. Content Delivery Network~100 глобально распределенных дата-центраQuincy, WAChicago, ILSan Antonio, TXDublin, IrelandGeneration 4 DCs
  • 19. Windows Azure CDN – с чего начатьРазрешить CDN доступ с вашего аккаунта Windows AzureВыполняется на dev-портале Windows Azure
  • 20. Это сформирует новый формат доступа к открытым блобам посредством CDN
  • 21. Одинаковый контент, 2 точки доступа
  • 23. WA Storage URL: http://myacct.blob.core.windows.net/images/myimage.pngCNAME маппинг применительно к CDN URL’sАдаптивный стриминг также можно настроить на работу с CDNhttp://blog.smarx.com/posts/smooth-streaming-with-windows-azure-blobs-and-cdnКеширование в памятиКешируйте «горячие» данные в памяти для предотвращения медленного обращения к базе данныхНапример, товары в каталогеКеширование в памятиSQL AzureSQL AzureПриложениеTable StorageTable StorageКеширующий слой поможет Вам снизить время ожидания и стоимостьНизкое время ожидания и высокая пропускная способность (особенно под нагрузкой)Архитектура распределенного кешированияНесколько экземпляров web-роли могут быть клиентами кэша be cache clientsКлиенты видят кэш в виде единого унифицированного представленияКеширующий слойКеширующий слой распределяет данные между несколькими хостами
  • 24. Windows Azure AppFabricСachingЧто это?Windows Server AppFabric Cache – распределенное кеширование для собственных серверов
  • 25. CTP релиз на PDC
  • 26. В ближайшем будущем полный паритет между облачной версией и стандартнойПрекрасная производительностьВысоко масштабируемый 64-х битный
  • 27. Высокая отказоустойчивость, низкое время ответаПреимущества AppFabric CachingПрост в администрированииС легкостью интегрируется в существующие приложенияASP.NET Session State и Output Cache провайдерыТакой же интерфейс управления как и у Windows Server AppFabric CacheСпособен кешировать любой сериализируемый объектНикаких ограничений на размер объекта
  • 28. Возможность использования локального кэша (снижая тем самым затраты на сериализацию)Windows Azure AppFabricСaching пример кода// Use cache configuration from app configDataCacheFactoryCacheFactory = new DataCacheFactory();// Get cache client for cacheDataCachemyCache = CacheFactory.GetDefaultCache();// Add an object to the cache.myCache.Put(“myKey", myObject);retrievedObject = myCache.Get("myKey");if (retrievedObject == null){ // Cache miss}
  • 29. SQL Azure и шардинг данныхРазделение (или шардинг) данных между несколькими базами данныхA-MA-ZПриложениеN-ZНагрузка «размазывается» между несколькими экземплярами базы данныхПозволит избежать ограничений на размер базы данных
  • 31. Улучшается производительность самих запросовСхема шардинга зависит от самих данных и варьируется в зависимости от ситуации
  • 33. Основы тюнинга производительностиНастраивайте Windows Azure приложение также как Вы это делаете с обычными приложениямиИзмерение
  • 34. Оптимизация, там где она имеет местоНаконец-то Windows Azure запущена в FULL IIS режимеТеперь можно инсталлировать любой модуль используя WebPI
  • 35. ДА И ВООБЩЕ, МОЖНО КАК УГОДНО СКОНФИГУРИРОВАТЬ IIS ИСПОЛЬЗУЯ AppCmdПростейшие основыДля продакшена режим компиляции Release
  • 36. Отключение в условиях продакшенаIntellTraceи Failed Request TracingНастройка количества экземпляров роли
  • 37. Продвинутая настройка производительностиРазрешите компрессию для дополнительного контента<add mimeType="application/json" enabled="true" /><add mimeType="application/json; charset=utf-8" enabled="true" />Настройка режима перезапуска пулов приложенийИзмените расписание по умолчанию, чтобы избежать перезапуска в период пиковой нагрузки
  • 38. Измерение и устранение утечек памятиИспользование нового модуля IIS 7.5 App WarmUphttp://www.iis.net/download/ApplicationWarmUpНастройка Windows Azure Diagnostics
  • 39. Итак, вот оно идеальное приложение с точки зрения производительностиBlob StorageCDNОткрытыйОткрытыйЗакрытыйАсинхронная модельСинхронная модельAppFabric CachingShared Access SignaturesTable StorageTable StorageКлючТюнингSQL AzureSQL AzureSQL AzureSharding