Курс: Проектирование высокопроизводительных приложений
Продолжительность курса: 24 ак. ч.
Описание курса:
Еще до момента проектирования любой программной системы нужно понимать то, что вследствие некоторых ограничений она всегда может стать высокопроизводительной системой. При разработке высокопроизводительной системы необходимо определиться с тем, какие параметры определяют систему как высокопроизводительную. Если система высокопроизводительная, то для успешной её реализации должны быть приняты специальные меры для обеспечения производительности.
В курсе рассматриваются различия между высоконагруженными, высоконадежными и высокопроизводительными системами.
Основная задача курса - дать представление об основных понятиях, принципах и подходах, используемых при проектировании высокопроизводительных систем.
Часто встречающаяся фраза: «Это должно работать быстро!» — это не требование. Во время обучения участники не только узнают о том, почему это не требование, но и научатся правильно работать с требованиями к производительности и анализировать их. Также в курсе рассказывается о понятиях «критические сценарии». Полученные знания по работе с требованиями, слушатели закрепят на практике во время выполнения практического задания.
В рамках курса рассматриваются основные примеры потери производительности программных систем. После этого даются основные пути борьбы за производительность системы. Также в рамках курса на практических примерах применения рассматриваются паттерны, применяемые при проектировании систем с повышенными требованиями к производительности, приведены сведения об основных анти-паттернах, встречающихся при реализации программных систем, влияющих на производительности.
Отдельное внимание уделяется подготовке системы к тестированию и анализу результатов тестирования. Рассказывается о создании программы и методики испытания высоконагруженных систем, модели нагрузки системы и рассматривается методика, позволяющая провести количественную оценку производительности системы.
Поскольку разработчикам программных систем часто приходится решать проблемы разработки высоконагруженных систем, обеспечивающих обработку больших объемов данных с заданными требованиями к временам отклика и объемам обрабатываемых данных, курс будет полезен не только архитекторам, но и руководителям проектов разработки, ведущим разработчикам.
Аудитория:
• Архитекторы
• Проектировщики
• Аналитики
• Руководители проектов
• Руководители разработки
• Ведущие разработчики
Необходимая подготовка:
• знание и умение использовать UML;
• владение основами объектно-ориентированного проектирования.
Программа курса:
Модуль 1. Понятие высокопроизводительной системы
• High-Performance application, High-Load application, High-Availability application.
• Управление производительностью приложения.
• Зависимость цены исправления ошибок от стадии обнаружения и стадии внесения.
• Основные характеристики, описывающие производительность системы.
• Модель нагрузки на систему.
Модуль 2. Анализ требований для высокопроизводительных систем
• Формирование нефункциональных требований для высокопроизводительных систем.
• Работа с противоречиями при формировании требований к производительности.
• Полнота требований.
• Практикум (1 ч):
• Анализ требований на противоречивость и полноту.
Модуль 3. Архитектурные тактики. Тактики производительности
• Особенности формирования требования к системам массового обслуживания (СМО).
Модуль 4. Проектирование высокопроизводительных систем
• Атрибуты качества системы.
• Компромиссы при одновременной работе над несколькими атрибутами качества на примере CAP и PACELC.
• Практикум: Разбор принципа балансировки атрибутов качества на примере Amazon Dynamo DB (1 ч):
• Рассмотрение подходов к гибкому масштабированию системы на примере Amazon Dynamo DB с сохранением контроля над отказоустойчивостью и сохранением константной производительности.
Модуль 5. Классические подходы производительности
• Атрибуты качества системы.
• Компромиссы при одновременной работе над несколькими атрибутами качества на примере CAP и PACELC.
• Практикум: Разбор принципа балансировки атрибутов качества на примере Amazon Dynamo DB (1 ч):
• Рассмотрение подходов к гибкому масштабированию системы на примере Amazon Dynamo DB с сохранением контроля над отказоустойчивостью и сохранением константной производительности.
Модуль 6. Шаблоны для реализации высокопроизводительных систем
• Основные классы шаблонов, используемые при построении высокопроизводительных систем: GRASP, Architecture patterns, Application Integration patterns.
• Примеры практической реализации шаблонов в современных стандартах.
• Примеры практической реализации шаблонов в современных системах интеграции frameworks разработки.
Модуль 7. Кодирование высокопроизводительных систем
• Основные вопросы кодирования высокопроизводительных систем.
• Методы оптимизации современных компиляторов и сред выполнения.
Модуль 8. Тестирование высокопроизводительных систем
• Виды тестов, используемые при доказательствах производительности системы.
• Подготовка к тестированию (составление сценариев и формирование модели нагрузки).
• Анализ результатов тестирования.
Модуль 9. Методология SPE
• Введение в методологию SPE. История, границы использования.
• Методика анализа систем с использованием SPE.
• Оценки пределов производительности системы, исходя из текущих характеристик аппаратно-программной части;
• Оценки влияния принимаемых архитектурных решений на производительность системы;
• Оценки требований к аппаратной части, исходя из поставленных требований по производительности, базируясь на масштабировании текущих процессов системы.
Окончательная цена указывается в договоре на обучение.