Описание
Данный учебный курс по разработке корпоративных приложений содержит подробные описания основных архитектурных стилей, как их выбрать на основе желаемых атрибутов качества. Рассматриваются конкретные типовые решения (шаблоны) для различных уровней абстракции системы, даются подробные сведения о сфере их использования и о некоторых нюансах реализации.
В курсе рассматриваются шаблоны различных уровней абстракции: модулей, приложений, системы – которые расширят кругозор слушателей, помогут понять принципы построения и коммуникации средних и больших систем. Рассмотренные подходы могут быть применены как для распределенных, так и монолитных решений.
Курс рассчитан на старших разработчиков и начинающих архитекторов, которые после освоения курса будут знать основные подходы к реализации бизнес-логики ИС, уметь идентифицировать типы подсистем для выбора наиболее подходящей стратегии реализации. Также будут более осведомлены о компромиссах, на которые они идут, выбирая тот или иной подход к построению ИС, а также получат некоторые другие знания и навыки, необходимые для проектирования корпоративных приложений.удостоверение о повышении квалификации государственного образца
Цели
- Выбирать ведущий архитектурный стиль для компонентов системы;
- Знать основные подходы к организации бизнес-логики и обосновывать свой выбор;
- Планировать долговременную стратегию развития системы с возможными миграциями между стилями;
- Понимать основные принципы и подходы обеспечения устойчивой работы распределенных систем;
- Проектировать коммуникационные сообщения.
Целевая аудитория
- Старшие разработчики;
- Начинающие архитекторы.
Предварительная подготовка
- Знание принципов объектно-ориентированного программирования;
- Опыт работы с объектно-ориентированными языками от 1 года;
- Знание UML;
- Базовые знания английского языка.
Разбираемые темы
-
Введение (теория 1 - ч)
- Задачи курса, знакомство;
- Введение в архитектуру, ее задачи и артефакты;
- Основные принципы построения архитектуры и связь с бизнес-целями;
- Каталоги шаблонов проектирования.
-
1.Архитектурные стили (теория 4 ч + практика 1,5 ч)
- Архитектурные стили и шаблоны, в чем разница и каким целям служат;
- Рассмотрение основных архитектурных стилей (8 базовых + вариации). Предпосылки становления, особенности работы, влияние бизнес-целей на выбор и обоснование выбора. Рассматриваются плюсы и минусы реализации, возможности миграции с одного стиля на другой в зависимости от бизнес-целей и роста потребностей бизнеса.
-
2.Базовые шаблоны (теория 1,5 ч + практика 1 ч)
- Базовые шаблоны для организации внутренней логики модулей\подсистем. Рассмотренные шаблоны позволяют поднять уровень абстракции описания внутренней логики модулей системы. Инкапсуляция логики правильными способами позволит уменьшить вероятность ошибок и позволит более полно раскрыть потенциал объектно-ориентированного подхода разработки;
- Среди рассмотренных шаблонов будут такие как: Measurement, Specification, NullObject, Range и другие.
-
3.Шаблоны доменной логики: (теория 3 ч + практика 1,5 ч)
- Рассматриваются 3 базовых подхода к организации доменной логики, а также принципы использования в зависимости от роли модуля в системе;
- Обсуждаются принципиальные шаблоны реализации сложной доменной логики. Введение в стратегический и тактический дизайн доменной логики, работа с агрегатами, и как обозначить первичные границы ограниченных контекстов;
- Среди рассмотренных шаблонов будут такие как: Aggregate, Actor Model, Active Record, Rich/Anemic подходы к дизайну доменной логики.
-
4.Архитектурные шаблоны доступа к данным: (теория 2 часа + практика 1,5 ч)
- Принципы организации доступа к источникам данных, организация маппинга данных в зависимости от контекста, как учитывать миграцию данных от версии к версии;
- Как организовать согласованное сохранение разнотипных данных с помощью шаблона UnitOfWork. Особенности реализации для реляционных баз данных и не только. Возможность применения для сложных доменных процессов;
- Особенности сохранения сложных иерархий в хранилище данных, плюсы и минусы различных вариантов структур;
- Работа с ключами. Рассматриваются стратегии создания ключей, форматы, плюсы и минусы подходов в зависимости от контекста окружения.
-
5.Шаблоны управления ресурсами: (теория 2 часа + практика 1,5 ч)
- В модуле рассматриваются основные свойства кеширования и пулинга ресурсов. Когда и что должно использоваться, плюсы и минусы подходов. Обсуждаются стратегии кеширования, особенности реализации для локального использования и для распределенных систем.
-
6.Шаблоны коммуникации: (теория 1 ч)
- Обсуждение основных классов коммуникационных сообщений (3), особенности применения, правила составления. Освещаются сложности коммуникации и зависимостей сервисов, при неправильном использовании классов сообщений;
- Рассматриваются особенности распределенных транзакций, использование шаблона Saga, сложности и назначение шаблона. Как обеспечить безопасную рассылку сообщений в результате выполнения сложной транзакции.
-
7.Шаблоны стабильности (теория 1 ч + практика 1 ч)
- Обсуждение основных технических проблем приложений в продуктовом окружении, и как с ними бороться. Современные системы обычно представлены набором распределенных сервисов и источников данных, все они могут рано или поздно быть недоступны по разным причинам, зачастую вызванных самими разработчиками – эти причины рассматриваются в модуле. Естественно, для многих анти-паттернов существуют решения как их убрать или минимизировать эффекты. Слушатели также с ними ознакомятся.
-
Заключение (0,5 ч)
- Подведение итогов, сессия вопросов и ответов.
Специалист с большим кругозором и опытом в фулстек разработке и архитектуре (программной, системной). Разработкой занимается больше 13 лет, начинал с PHP, JS, HTML, CSS и дорос до Team Lead. Работал с VueJS, React.JS, Angular, Symfony, Express, Ktor, Java, Swift, Flutter, Dart. В 2020 году из-за пандемии закрыл компанию ушёл в продуктовую разработку в Huntica.works как Seniour Frontend Developer. Через пол года возглавил всю разработку компании как CTO.
Проекты:
- проектировал и разрабатывал микросервисы;
- разрабатывал мобильные приложения для IOS;
- разрабатывал приложения на Битрикс;
- занимался разработкой системной архитектуры, сбором требований;
- управлял проектами и небольшими (до 7 человек) командами;
- вёл курсы;
- в 2015 году основал веб-студию.