Повысьте производительность ваших систем! Курс для архитекторов и разработчиков, стремящихся создавать быстрые и эффективные приложения. Оптимизация, тестирование и паттерны проектирования.
High-Performance application, High-Load application, High-Availability application. Управление производительностью приложения. Зависимость цены исправления ошибок от стадии обнаружения и стадии внесения. Основные характеристики, описывающие производительность системы. Модель нагрузки на систему.
Формирование нефункциональных требований для высокопроизводительных систем. Работа с противоречиями при формировании требований к производительности. Полнота требований.
Практикум (1 ч): Анализ требований на противоречивость и полноту.
Особенности формирования требования к системам массового обслуживания (СМО).
Атрибуты качества системы. Компромиссы при одновременной работе над несколькими атрибутами качества на примере CAP и PACELC.
Практикум: Разбор принципа балансировки атрибутов качества на примере Amazon Dynamo DB (1 ч). Рассмотрение подходов к гибкому масштабированию системы на примере Amazon Dynamo DB с сохранением контроля над отказоустойчивостью и сохранением константной производительности.
Основные причины потери производительности системы (1 ч). Основные методы повышения производительности системы (1 ч). Принципы горизонтального и вертикального масштабирования систем (0,5 ч).
Практикум (2 ч): Разбор примера масштабирования системы. Преобразование монолитной системы в Map-Reduce. Обзор Map-Reduce. Преобразование Map-Reduce в Lambda-архитектуру для снижения проблем чистой Map-Reduce практики.
Основные классы шаблонов, используемые при построении высокопроизводительных систем: GRASP, Architecture patterns, Application Integration patterns. Примеры практической реализации шаблонов в современных стандартах. Примеры практической реализации шаблонов в современных системах интеграции frameworks разработки.
Основные вопросы кодирования высокопроизводительных систем. Методы оптимизации современных компиляторов и сред выполнения.
Виды тестов, используемые при доказательствах производительности системы. Подготовка к тестированию (составление сценариев и формирование модели нагрузки). Анализ результатов тестирования.
Введение в методологию SPE. История, границы использования. Методика анализа систем с использованием SPE.
Практикум (1 ч): Рассмотрение на практическом примере применения SPE методологии для: Оценки пределов производительности системы, исходя из текущих характеристик аппаратно-программной части; Оценки влияния принимаемых архитектурных решений на производительность системы; Оценки требований к аппаратной части, исходя из поставленных требований по производительности, базируясь на масштабировании текущих процессов системы.
Эффективное проектирование корпоративных приложений: от архитектурных стилей до шаблонов реализации. Курс для тех, кто хочет систематизировать знания об архитектуре, научиться выбирать подходящие решения и снизить когнитивную нагрузку на разработчиков. Узнайте, как применять шаблоны проектирования для создания масштабируемых и устойчивых систем.
Задачи курса, знакомство. Введение в архитектуру, ее задачи и артефакты. Основные принципы построения архитектуры и связь с бизнес-целями. Каталоги шаблонов проектирования.
Архитектурные стили и шаблоны, в чем разница и каким целям служат. Рассмотрение основных архитектурных стилей (8 базовых + вариации). Предпосылки становления, особенности работы, влияние бизнес-целей на выбор и обоснование выбора. Рассматриваются плюсы и минусы реализации, возможности миграции с одного стиля на другой в зависимости от бизнес-целей и роста потребностей бизнеса.
Базовые шаблоны для организации внутренней логики модулей/подсистем. Рассмотренные шаблоны позволяют поднять уровень абстракции описания внутренней логики модулей системы. Инкапсуляция логики правильными способами позволит уменьшить вероятность ошибок и позволит более полно раскрыть потенциал объектно-ориентированного подхода разработки. Среди рассмотренных шаблонов будут такие как: Measurement, Specification, NullObject, Range и другие.
Рассматриваются 3 базовых подхода к организации доменной логики, а также принципы использования в зависимости от роли модуля в системе. Обсуждаются принципиальные шаблоны реализации сложной доменной логики. Введение в стратегический и тактический дизайн доменной логики, работа с агрегатами, и как обозначить первичные границы ограниченных контекстов. Среди рассмотренных шаблонов будут такие как: Aggregate, Actor Model, Active Record, Rich/Anemic подходы к дизайну доменной логики.
Принципы организации доступа к источникам данных, организация маппинга данных в зависимости от контекста, как учитывать миграцию данных от версии к версии. Как организовать согласованное сохранение разнотипных данных с помощью шаблона UnitOfWork. Особенности реализации для реляционных баз данных и не только. Возможность применения для сложных доменных процессов.
Особенности сохранения сложных иерархий в хранилище данных, плюсы и минусы различных вариантов структур. Работа с ключами. Рассматриваются стратегии создания ключей, форматы, плюсы и минусы подходов в зависимости от контекста окружения.
В модуле рассматриваются основные свойства кеширования и пулинга ресурсов. Когда и что должно использоваться, плюсы и минусы подходов. Обсуждаются стратегии кеширования, особенности реализации для локального использования и для распределенных систем.
Обсуждение основных классов коммуникационных сообщений (3), особенности применения, правила составления. Освещаются сложности коммуникации и зависимостей сервисов, при неправильном использовании классов сообщений. Рассматриваются особенности распределенных транзакций, использование шаблона Saga, сложности и назначение шаблона. Как обеспечить безопасную рассылку сообщений в результате выполнения сложной транзакции.
Обсуждение основных технических проблем приложений в продуктовом окружении, и как с ними бороться. Современные системы обычно представлены набором распределенных сервисов и источников данных, все они могут рано или поздно быть недоступны по разным причинам, зачастую вызванных самими разработчиками — эти причины рассматриваются в модуле. Естественно, для многих анти-паттернов существуют решения как их убрать или минимизировать эффекты. Слушатели также с ними ознакомятся.
Подведение итогов, сессия вопросов и ответов.