ARC-008 Проектирование высокопроизводительных приложений
Описание курса
В курсе рассматриваются различия между высоконагруженными, высоконадежными и высокопроизводительными системами.
Основная задача курса - дать представление об основных понятиях, принципах и подходах, используемых при проектировании высокопроизводительных систем.
Курс будет полезен не только архитекторам, но и руководителям проектов разработки, ведущим разработчикам.
Модуль 1
- High-Performance application, High-Load application, High-Availability application.
- Управление производительностью приложения.
- Зависимость цены исправления ошибок от стадии обнаружения и стадии внесения.
- Основные характеристики, описывающие производительность системы.
- Модель нагрузки на систему.
Модуль 2
- Формирование нефункциональных требований для высокопроизводительных систем.
- Работа с противоречиями при формировании требований к производительности.
- Полнота требований.
Практикум (1 ч):
- Анализ требований на противоречивость и полноту.
Модуль 3
- Особенности формирования требования к системам массового обслуживания (СМО).
Модуль 4
- Атрибуты качества системы.
- Компромиссы при одновременной работе над несколькими атрибутами качества на примере CAP и PACELC.
Практикум: Разбор принципа балансировки атрибутов качества на примере Amazon Dynamo DB (1 ч):
- Рассмотрение подходов к гибкому масштабированию системы на примере Amazon Dynamo DB с сохранением контроля над отказоустойчивостью и сохранением константной производительности.
Модуль 5
- Основные причины потери производительности системы (1 ч).
- Основные методы повышения производительности системы (1 ч).
- Принципы горизонтального и вертикального масштабирования систем (0,5 ч).
Практикум (2 ч):
- Разбор примера масштабирования системы.
- Преобразование монолитной системы в Map-Reduce.
- Обзор Map-Reduce.
- Преобразование Map-Reduce в Lambda-архитектуру для снижения проблем чистой Map-Reduce практики.
Модуль 6
- Основные классы шаблонов, используемые при построении высокопроизводительных систем: GRASP, Architecture patterns, Application Integration patterns.
- Примеры практической реализации шаблонов в современных стандартах.
- Примеры практической реализации шаблонов в современных системах интеграции frameworks разработки.
Модуль 7
- Основные вопросы кодирования высокопроизводительных систем.
- Методы оптимизации современных компиляторов и сред выполнения.
Модуль 8
- Виды тестов, используемые при доказательствах производительности системы.
- Подготовка к тестированию (составление сценариев и формирование модели нагрузки).
- Анализ результатов тестирования.
Модуль 9
- Введение в методологию SPE. История, границы использования.
- Методика анализа систем с использованием SPE.
Практикум (1 ч):
Рассмотрение на практическом примере применения SPE методологии для:
- Оценки пределов производительности системы, исходя из текущих характеристик аппаратно-программной части;
- Оценки влияния принимаемых архитектурных решений на производительность системы;
- Оценки требований к аппаратной части, исходя из поставленных требований по производительности, базируясь на масштабировании текущих процессов системы.