







Эффективное проектирование корпоративных приложений: от архитектурных стилей до шаблонов реализации. Курс для тех, кто хочет систематизировать знания об архитектуре, научиться выбирать подходящие решения и снизить когнитивную нагрузку на разработчиков. Узнайте, как применять шаблоны проектирования для создания масштабируемых и устойчивых систем.
Задачи курса, знакомство. Введение в архитектуру, ее задачи и артефакты. Основные принципы построения архитектуры и связь с бизнес-целями. Каталоги шаблонов проектирования.
Архитектурные стили и шаблоны, в чем разница и каким целям служат. Рассмотрение основных архитектурных стилей (8 базовых + вариации). Предпосылки становления, особенности работы, влияние бизнес-целей на выбор и обоснование выбора. Рассматриваются плюсы и минусы реализации, возможности миграции с одного стиля на другой в зависимости от бизнес-целей и роста потребностей бизнеса.
Базовые шаблоны для организации внутренней логики модулей/подсистем. Рассмотренные шаблоны позволяют поднять уровень абстракции описания внутренней логики модулей системы. Инкапсуляция логики правильными способами позволит уменьшить вероятность ошибок и позволит более полно раскрыть потенциал объектно-ориентированного подхода разработки. Среди рассмотренных шаблонов будут такие как: Measurement, Specification, NullObject, Range и другие.
Рассматриваются 3 базовых подхода к организации доменной логики, а также принципы использования в зависимости от роли модуля в системе. Обсуждаются принципиальные шаблоны реализации сложной доменной логики. Введение в стратегический и тактический дизайн доменной логики, работа с агрегатами, и как обозначить первичные границы ограниченных контекстов. Среди рассмотренных шаблонов будут такие как: Aggregate, Actor Model, Active Record, Rich/Anemic подходы к дизайну доменной логики.
Принципы организации доступа к источникам данных, организация маппинга данных в зависимости от контекста, как учитывать миграцию данных от версии к версии. Как организовать согласованное сохранение разнотипных данных с помощью шаблона UnitOfWork. Особенности реализации для реляционных баз данных и не только. Возможность применения для сложных доменных процессов.
Особенности сохранения сложных иерархий в хранилище данных, плюсы и минусы различных вариантов структур. Работа с ключами. Рассматриваются стратегии создания ключей, форматы, плюсы и минусы подходов в зависимости от контекста окружения.
В модуле рассматриваются основные свойства кеширования и пулинга ресурсов. Когда и что должно использоваться, плюсы и минусы подходов. Обсуждаются стратегии кеширования, особенности реализации для локального использования и для распределенных систем.
Обсуждение основных классов коммуникационных сообщений (3), особенности применения, правила составления. Освещаются сложности коммуникации и зависимостей сервисов, при неправильном использовании классов сообщений. Рассматриваются особенности распределенных транзакций, использование шаблона Saga, сложности и назначение шаблона. Как обеспечить безопасную рассылку сообщений в результате выполнения сложной транзакции.
Обсуждение основных технических проблем приложений в продуктовом окружении, и как с ними бороться. Современные системы обычно представлены набором распределенных сервисов и источников данных, все они могут рано или поздно быть недоступны по разным причинам, зачастую вызванных самими разработчиками — эти причины рассматриваются в модуле. Естественно, для многих анти-паттернов существуют решения как их убрать или минимизировать эффекты. Слушатели также с ними ознакомятся.
Подведение итогов, сессия вопросов и ответов.
При разработке программных систем разработчики принимают множество решений, которые на первый взгляд, уникальны. Но, многое из того, что они «изобретают» уже опробовано во множестве проектов. Данный тренинг дает обзор лучших практик по стандартному решению стандартных проблем. Эти лучшие практики принято называть паттернами. На тренинги рассматриваются три типа паттернов, их взаимосвязи и практическое применение на языке С++.
















