Длительность: 24 ч.
Описание
Еще до момента проектирования любой программной системы нужно понимать, что вследствие некоторых ограничений она всегда может стать высокопроизводительной.Основная задача курса – дать представление об основных понятиях, принципах и подходах, используемых при проектировании высокопроизводительных систем.
Часто встречающаяся фраза «Это должно работать быстро!» – не требование. Во время обучения участники не только узнают, почему это не требование, но и научатся правильно работать с требованиями к производительности и анализировать их. Также в курсе рассказывается о понятии «критические сценарии». Полученные знания по работе с требованиями слушатели закрепят во время выполнения практического задания.
В рамках курса рассматриваются основные примеры потери производительности программных систем. После этого даются основные пути борьбы за производительность системы.
Особое внимание уделяется подготовке системы к тестированию и анализу результатов тестирования. Рассказывается о создании программы и методики испытания высоконагруженных систем, модели нагрузки системы и рассматривается методика, позволяющая провести количественную оценку производительности системы.
Поскольку разработчикам программных систем часто приходится решать проблемы разработки высоконагруженных систем, обеспечивающих обработку больших объемов данных с заданными требованиями к временам отклика и объемам обрабатываемых данных, курс будет полезен не только архитекторам, но и руководителям проектов разработки, ведущим разработчикам.
Разбираемые темы
Понятие высокопроизводительной системы:- High-Perfomance application, High-Load application, High-Availability application;
- Управление производительностью приложения;
- Зависимость цены исправления ошибок от стадии обнаружения и стадии внесения.
- Основные характеристики, описывающие производительность системы;
- Модель производительности системы.
- Формирование нефункциональных требований для высокопроизводительных систем;
- Работа с противоречиями при формировании требований к производительности;
- Полнота требований.
- Атрибуты качества системы;
- Основные причины потери производительности системы;
- Основные методы повышения производительности системы.
Часть 1. Построение алгоритма сортировки объектов с использованием параллельного выполнения сортировки. Анализ построенного алгоритма.Часть 2. Определение оценок количественных характеристик доступа к записям базы данных с использованием индексов. Анализ зависимостей времени доступа от длины ключа и количества записей в БД.
- Основные классы шаблонов, используемые при построении высокопроизводительных систем:
- GRASP;
- Architecture patterns;
- Application Integration patterns.
- Примеры практической реализации шаблонов в современных стандартах.
- Примеры практической реализации шаблонов в современных системах интеграции frameworks-разработки.
- Основные вопросы кодирования высокопроизводительных систем.
- Методы оптимизации современных компиляторов и сред выполнения.
- Виды тестов, используемые при доказательствах производительности системы.
- Подготовка к тестированию (составление сценариев и формирование модели нагрузки).
- Анализ результатов тестирования.
- Оптимизация производительности системы;
- Пути оптимизации производительности сложных распределенных систем;
- Оптимизация и повышение стабильности работы Java-приложений;
- Повышение производительности баз данных.
- Введение в методологию SPE. История, границы использования;
- Модель производительности системы;
- Применение модели производительности системы при анализе современных систем;
- Применение SPE при разработке современных систем;
- Методика анализа систем с использованием SPE.
Цели
Во время обучения участники научатся:- определять характеристики производительности системы;
- анализировать требования к системе, связанные с нагрузкой на систему;
- планировать процесс разработки высокопроизводительных систем;
- проектировать системы с использованием оптимальных для обеспечения производительности приемов;
- взаимодействовать с командой тестирования при выполнении нагрузочных тестов;
- оптимизировать системы с повышенными требованиями к производительности;
- использовать методологию SPE для обеспечения производительности системы при разработке.
Целевая аудитория
Архитекторы, проектировщики, а также аналитики, руководители проектов, руководители разработки, ведущие разработчики.Предварительная подготовка
Требуется:- знание и умение использовать UML;
- владение основами объектно-ориентированного проектирования.
- языка Java;
- основ архитектуры компьютеров;
- архитектуры сетей передачи данных (основы);
- GOF patterns.