1. Понятие высокопроизводительной системы:
-
High-Perfomance application, High-Load application, High-Availability application;
-
Управление производительностью приложения;
-
Зависимость цены исправления ошибок от стадии обнаружения и стадии внесения.
2. Основные характеристики производительности систем:
-
Основные характеристики, описывающие производительность системы;
-
Модель производительности системы.
3. Анализ требований для высокопроизводительных систем:
-
Формирование нефункциональных требований для высокопроизводительных систем;
-
Работа с противоречиями при формировании требований к производительности;
-
Полнота требований.
Лабораторная работа "Анализ требований на противоречивость и полноту".
4. Проектирование высокопроизводительных систем:
-
Атрибуты качества системы;
-
Основные причины потери производительности системы;
-
Основные методы повышения производительности системы.
Лабораторная работа:
-
Часть 1. Построение алгоритма сортировки объектов с использованием параллельного выполнения сортировки. Анализ построенного алгоритма.
-
Часть 2. Определение оценок количественных характеристик доступа к записям базы данных с использованием индексов. Анализ зависимостей времени доступа от длины ключа и количества записей в БД.
5. Шаблоны для реализации высокопроизводительных систем:
-
Основные классы шаблонов, используемые при построении высокопроизводительных систем:
-
GRASP;
-
Architecture patterns;
-
Application Integration patterns.
-
Примеры практической реализации шаблонов в современных стандартах.
-
Примеры практической реализации шаблонов в современных системах интеграции frameworks-разработки.
Лабораторная работа "Оптимизация производительности приложения, выполняющего последовательную обработку большого объема информации".
6. Кодирование высокопроизводительных систем:
-
Основные вопросы кодирования высокопроизводительных систем.
-
Методы оптимизации современных компиляторов и сред выполнения.
7. Тестирование высокопроизводительных систем:
-
Виды тестов, используемые при доказательствах производительности системы.
-
Подготовка к тестированию (составление сценариев и формирование модели нагрузки).
-
Анализ результатов тестирования.
8. Оптимизация производительности для приложений:
-
Оптимизация производительности системы;
-
Пути оптимизации производительности сложных распределенных систем;
-
Оптимизация и повышение стабильности работы Java-приложений;
-
Повышение производительности баз данных.
9. Методология SPE:
-
Введение в методологию SPE. История, границы использования;
-
Модель производительности системы;
-
Применение модели производительности системы при анализе современных систем;
-
Применение SPE при разработке современных систем;
-
Методика анализа систем с использованием SPE.
Лабораторная работа "Построение модели производительности тестовой системы".
Время проведения: 10:00 - 18:00.
Еще до момента проектирования любой программной системы нужно понимать, что вследствие некоторых ограничений она всегда может стать высокопроизводительной.
При разработке высокопроизводительной системы необходимо выяснить, какие параметры определяют систему как высокопроизводительную. Если система высокопроизводительная, то для успешной её реализации должны быть приняты специальные меры по обеспечению производительности.
В курсе рассматриваются различия между высоконагруженными, высоконадежными и высокопроизводительными системами.
Часто встречающаяся фраза "Это должно работать быстро!" - не требование. Во время обучения участники не только узнают, почему это не требование, но и научатся правильно работать с требованиями к производительности и анализировать их. Также в курсе рассказывается о понятии "критические сценарии". Полученные знания по работе с требованиями слушатели закрепят во время выполнения практического задания.
В рамках курса рассматриваются основные примеры потери производительности программных систем. После этого даются основные пути борьбы за производительность системы.
Также на практических примерах применения рассматриваются паттерны, используемые при проектировании систем с повышенными требованиями к производительности, даются сведения об основных анти-паттернах, встречающихся при реализации программных систем, влияющих на производительность.
Поскольку разработчикам программных систем часто приходится решать проблемы разработки высоконагруженных систем, обеспечивающих обработку больших объемов данных с заданными требованиями к временам отклика и объемам обрабатываемых данных, курс будет полезен не только архитекторам, но и руководителям проектов разработки, ведущим разработчикам.
Во время обучения участники научатся:
-
определять характеристики производительности системы;
-
анализировать требования к системе, связанные с нагрузкой на систему;
-
планировать процесс разработки высокопроизводительных систем;
-
проектировать системы с использованием оптимальных для обеспечения производительности приемов;
-
взаимодействовать с командой тестирования при выполнении нагрузочных тестов;
-
оптимизировать системы с повышенными требованиями к производительности;
-
использовать методологию SPE для обеспечения производительности системы при разработке.
Основная задача курса – дать представление об основных понятиях, принципах и подходах, используемых при проектировании высокопроизводительных систем.
В рамках курса рассматриваются основные примеры потери производительности программных систем. После этого даются основные пути борьбы за производительность системы.
Также на практических примерах применения рассматриваются паттерны, используемые при проектировании систем с повышенными требованиями к производительности, даются сведения об основных анти-паттернах, встречающихся при реализации программных систем, влияющих на производительность.