Высокопроизводительные
  приложения на базе Windows
Azure. Пример реального проекта.




                    @feschenkoalex
                    Windows Azure MVP
                    http://feschenkoalex.blogspot.com
Проект sqlserverlaunch.com

Проблемы:
                                         Ожидаемый пик
 Сайт работает очень медленно           пользователей
 Непонятно как поведет себя система
  при стрессовой нагрузке
 До запуска остается совсем немного
  времени
                                         10000
 Переписать проект с нуля нет
  возможности
                                       Официальный запуск


                                       SQL Server
                                         2012
Немного о проекте
                                  Архитектура



                                  SOA
                                   Основная
                                  технология
            Frontend

                                  ASP.N
                                   ET

  Backend

                       Database
Методология

               Профилирование




                                              Scaling Capability



 Нагрузочное
                                Оптимизация
тестирование
Профилирование.Red Gate Memory Profiler

Программный комплекс, предназначенный для поиска утечек памяти в ваших
                            приложениях




    Позволяет:

     Находить утечки памяти в считанные минуты
     Оптимизировать исходный код, неправильно использующий
      память
     Создавать более производительные приложения,
      рационально использующие ресурсы
Red Gate Memory Profiler. Возможности.

   Понятный
                            Скорость            Визуализаци
   результат
                            анализа              я объектов
    работы




               Нахождение               Широкие
                источника               средства
                проблемы               фильтрации
Оптимизация. Распределенное кеширование




                            Хранилище данных
                      Кеш

            Web App
Какой механизм использовать ?


Windows                                 Скорость
            Меньшая       Тесная
                                      разворачиван
Azure       стоимость   интеграция
                                           ия
Caching
Service


                                         Более
              Более     Ограничение
                                        высокая
Memcached    высокая     на размер
                                      производител
            стоимость     объекта
                                         ьность
Windows Azure Caching Service. Особенности

Производительност
                            Масштабируемость            Простота
        ь


                                                 •   Провайдеры
•   Данные хранятся     •    Снижение нагрузки       ASP.NET / API
    поблизости               на бд
                                                 •   Простое
•   Локальное           •    Простое                 управление и
    кеширование              масштабирование         разворачивание

•   Любой .NET объект                            •   Эластичный
                                                     размер
Кеширование разметки.


                  1h
                       Клиенты
  Worker Role                                           index,
                                                        agenda,
                                                        keynote…

                                 Not cached               Cached

                                 index,
                                 agenda,
                                 keynote…
                                              Web App




   Blob Storage
Оптимизация кода.

    ORM             Сервисы             Database

EF Context          WCF Proxy           SP Tuning

Создание            Создание WCF-       Хранимые
контекста           прокси              процедуры
ресурсоемкая        ресурсоемкая        выполняются
операция.           операция.           медленно.
Решение: Один       Решение: Пул        Решение:
инстанс EF-         прокси объектов     Создание доп.
контекста на один   (*ChannelFactory)   индексов,
HTTP-запрос                             оптимизация
                                        планов
                                        выполнения…..
Нагрузочное тестирование. Проблема.

1) Проблема не воспроизводится
2) Сайт прекрасно работает на девелоперской машине
3) Вы не представляете что за ошибка
4) Предположение: сайт «умирает» во время нагрузки
5) Необходимо создать определенную нагрузку для
   выявления проблемы
Нагрузочное тестирование. Visual Studio.


     Visual      • Web Performance
                   Tests
     Studio      • Load Tests
     Ultimate    • Load Test Rigs


     Visual
                 • Profiling Tools
     Studio      • Performance Wizard
     Premium
Нагрузочное тестирование. План.
      Сохранить пользовательскую активность при
            помощи Web Performance Test


      Имитировать нагрузку при помощи Load Tests

    Имитировать большое количество пользователей
              при помощи Load Test Rig

                Воспроизвести ошибки


              Найти проблемы с кодом


                   Исправить код
Web Performance Test.
 Один из видов тестов в Visual Studio 2010 Ultimate

 Составная часть нагрузочных тестов

 Должны эмулировать User Story

 Например
   Как администратор я хочу иметь возможность искать
   пользователей по логину и деактивировать их аккаунты
   Как пользователь я хочу иметь возможность заказывать
   пиццу и расплачиваться кредитной картой
Нагрузочное тестирование. VS Load Test.

  Микс Web Performance и Unit тестов
  Эмуляция активности нескольких пользователей,
  выполняющих определенный набор операций

  Эмуляция скорости передачи данных

  Эмуляция различных браузеров
  Гибкая настройка количества виртуальных
  пользователей и механизма их добавления во время
  теста
Зачем Unit-тест в Load-тесте ?
  Удобно для тестирования WCF

  Важно для Silverlight и SOA




WCF Load Test                   SQL Load Test
2 способа запуска нагрузочных тестов




   VS 2010                    Test Rig
                           • Более правдоподобная
 • Используется только 1     нагрузка
   CPU
                           • Эмуляция большего
 • Лимит в 250               количества
   виртуальных               пользователей
   пользователей
Лицензия на дополнительных пользователей
    Microsoft Visual Studio Team System 2010 Test Load
    Virtual User Pack
    Эмуляция до 1000 виртуальных пользователей
Нагрузочное тестирование. Test Rig.

                           Координиро
Контроллер                   вание и     Генерация
                                                     Приложение
                              сбор        нагрузки
 Управление                результатов
 Лицензирование
 Perfmon счетчики
                                          Агент 1
                                                     Веб сервер
Агент (1…n)
 Симуляция пользователей   Контроллер     Агент 2
                                                        База
                                                       данных
                                          Агент n
VS Load Test Framework




                         DEMO
Windows Azure Scaling.

      sqlserverlaunch.com

   Frontend              Backend
      Medium              Large

      50                  70
Спасибо за внимание
         !


       @feschenkoalex
       Windows Azure MVP
       http://feschenkoalex.blogspot.com

Высокопроизводительные приложения на базе Windows Azure. Пример реального проекта

  • 1.
    Высокопроизводительные приложенияна базе Windows Azure. Пример реального проекта. @feschenkoalex Windows Azure MVP http://feschenkoalex.blogspot.com
  • 2.
    Проект sqlserverlaunch.com Проблемы: Ожидаемый пик  Сайт работает очень медленно пользователей  Непонятно как поведет себя система при стрессовой нагрузке  До запуска остается совсем немного времени 10000  Переписать проект с нуля нет возможности Официальный запуск SQL Server 2012
  • 3.
    Немного о проекте Архитектура SOA Основная технология Frontend ASP.N ET Backend Database
  • 4.
    Методология Профилирование Scaling Capability Нагрузочное Оптимизация тестирование
  • 5.
    Профилирование.Red Gate MemoryProfiler Программный комплекс, предназначенный для поиска утечек памяти в ваших приложениях Позволяет:  Находить утечки памяти в считанные минуты  Оптимизировать исходный код, неправильно использующий память  Создавать более производительные приложения, рационально использующие ресурсы
  • 6.
    Red Gate MemoryProfiler. Возможности. Понятный Скорость Визуализаци результат анализа я объектов работы Нахождение Широкие источника средства проблемы фильтрации
  • 7.
  • 8.
    Какой механизм использовать? Windows Скорость Меньшая Тесная разворачиван Azure стоимость интеграция ия Caching Service Более Более Ограничение высокая Memcached высокая на размер производител стоимость объекта ьность
  • 9.
    Windows Azure CachingService. Особенности Производительност Масштабируемость Простота ь • Провайдеры • Данные хранятся • Снижение нагрузки ASP.NET / API поблизости на бд • Простое • Локальное • Простое управление и кеширование масштабирование разворачивание • Любой .NET объект • Эластичный размер
  • 10.
    Кеширование разметки. 1h Клиенты Worker Role index, agenda, keynote… Not cached Cached index, agenda, keynote… Web App Blob Storage
  • 11.
    Оптимизация кода. ORM Сервисы Database EF Context WCF Proxy SP Tuning Создание Создание WCF- Хранимые контекста прокси процедуры ресурсоемкая ресурсоемкая выполняются операция. операция. медленно. Решение: Один Решение: Пул Решение: инстанс EF- прокси объектов Создание доп. контекста на один (*ChannelFactory) индексов, HTTP-запрос оптимизация планов выполнения…..
  • 12.
    Нагрузочное тестирование. Проблема. 1)Проблема не воспроизводится 2) Сайт прекрасно работает на девелоперской машине 3) Вы не представляете что за ошибка 4) Предположение: сайт «умирает» во время нагрузки 5) Необходимо создать определенную нагрузку для выявления проблемы
  • 13.
    Нагрузочное тестирование. VisualStudio. Visual • Web Performance Tests Studio • Load Tests Ultimate • Load Test Rigs Visual • Profiling Tools Studio • Performance Wizard Premium
  • 14.
    Нагрузочное тестирование. План. Сохранить пользовательскую активность при помощи Web Performance Test Имитировать нагрузку при помощи Load Tests Имитировать большое количество пользователей при помощи Load Test Rig Воспроизвести ошибки Найти проблемы с кодом Исправить код
  • 15.
    Web Performance Test. Один из видов тестов в Visual Studio 2010 Ultimate Составная часть нагрузочных тестов Должны эмулировать User Story Например Как администратор я хочу иметь возможность искать пользователей по логину и деактивировать их аккаунты Как пользователь я хочу иметь возможность заказывать пиццу и расплачиваться кредитной картой
  • 16.
    Нагрузочное тестирование. VSLoad Test. Микс Web Performance и Unit тестов Эмуляция активности нескольких пользователей, выполняющих определенный набор операций Эмуляция скорости передачи данных Эмуляция различных браузеров Гибкая настройка количества виртуальных пользователей и механизма их добавления во время теста
  • 17.
    Зачем Unit-тест вLoad-тесте ? Удобно для тестирования WCF Важно для Silverlight и SOA WCF Load Test SQL Load Test
  • 18.
    2 способа запусканагрузочных тестов VS 2010 Test Rig • Более правдоподобная • Используется только 1 нагрузка CPU • Эмуляция большего • Лимит в 250 количества виртуальных пользователей пользователей
  • 19.
    Лицензия на дополнительныхпользователей Microsoft Visual Studio Team System 2010 Test Load Virtual User Pack Эмуляция до 1000 виртуальных пользователей
  • 20.
    Нагрузочное тестирование. TestRig. Координиро Контроллер вание и Генерация Приложение сбор нагрузки Управление результатов Лицензирование Perfmon счетчики Агент 1 Веб сервер Агент (1…n) Симуляция пользователей Контроллер Агент 2 База данных Агент n
  • 21.
    VS Load TestFramework DEMO
  • 22.
    Windows Azure Scaling. sqlserverlaunch.com Frontend Backend Medium Large 50 70
  • 23.
    Спасибо за внимание ! @feschenkoalex Windows Azure MVP http://feschenkoalex.blogspot.com