Школа Сильных Программистов
Яндекс Практикум
OTUS
Учебный центр IBS
Учебный центр IBS
Учебный центр IBS
Учебный центр IBS
Учебный центр IBS
Учебный центр IBS
Учебный центр IBS
Учебный центр IBSКурс о том, как проектировать большие системы. Новые — чтобы не переделывать, старые — чтобы разобрать на части и ускорить разработку
Практический курс по основам архитектуры ПО. Тренинг предлагает глубокое понимание системной архитектуры и её роли в разработке ПО. Участники освоят выявление требований, проектирование, документирование и анализ архитектуры, а также научатся применять эти практики в реальных проектах. Курс охватывает весь жизненный цикл разработки ПО, включая взаимодействие с заинтересованными сторонами и использование гибких методологий. Основные темы: архитектурные стили, атрибуты качества, ATAM, 4+1, QAW, управление рисками и компромиссами. Идеально подходит для архитекторов, разработчиков, аналитиков и менеджеров проектов. Вы с практической точки зрения проанализируете пример: от постановки бизнес-целей к созданию чернового архитектурного документа, а также получите обратную связь.
Кратко об архитектуре ПО. Роль архитектора. Сходства и различия ролей.
Работа архитектора в Agile. Функциональные и кросс-функциональные команды.
Сквозной пример. Работа со стейкхолдерами. Бизнес-требования и функциональные требования. Методы сбора требований. Атрибуты качества (НФТ). Доменные контексты.
Проектирование архитектуры. Архитектурные стили. Site Reliability Engineering (SRE).
Введение в документирование архитектуры. Сочетание архитектурных представлений. Инструменты и форматы.
Проверка принятых проектных решений. Tiny Architectural Review Approach (TARA). Cost-Benefit Analysis Method (CBAM).
Освойте стратегические и тактические паттерны DDD на реальных примерах. Вы поймете, как применять эти паттерны для построения эффективных архитектур, которые адаптируются к изменениям в бизнес-требованиях. Практика на типичных кейсах позволит вам закрепить знания и подготовиться к решению сложных задач в вашей компании.
Доменные эксперты. Функциональные и нефункциональные требования, атрибуты качества. Шаблоны реализации доменной логики. Связь DDD & Agile.
Общий язык. Роль историй в понимании домена. Event Storming. Разбиение на домены. Impact mapping. User story mapping. Quality Attribute Workshop.
Типы поддоменов и разбиение. Ограниченные контексты. Контекстные карты и шаблоны. Топология команд.
Полезные шаблоны тактического дизайна. Объекты значения и шаблоны на их основе. Сущности. Агрегаты. Сервисы. Фабрики. Репозитории.
Анемичный домен и причины. Работа с «устаревшими системами». Интеграция контекстов. Типы сообщений и коммуникация между поддоменами.
Программа «Архитектор ПО. Путь к мастерству в проектировании систем» подробно рассказывает о работе программного архитектора. Начать обучение можно с 5 бесплатных уроков*, а затем перейти к полной версии программы. Курс учит планировать будущее развитие сложных систем с нуля: выбирать инструменты и средства моделирования архитектуры, формат документирования архитектурных решений, выбирать архитектурный стиль под конкретную бизнес-задачу, планировать будущее масштабирование, гибкость. Знакомит с лучшими практиками построения архитектуры программного обеспечения.
Тема 1: Понятия архитектуры: основные термины и определения.
Тема 2: Понятия архитектуры: критерии качества архитектуры.
Тема 3: Роли и виды архитекторов.
Тема 4: Архитектурные стили: монолит.
Тема 5: Архитектурные стили: микросервисы.
Тема 6: Принципы DDD.
Тема 7: Clean Architecture: правила создания архитектур.
Тема 8: Архитектурные стили: событийно-управляемая архитектура.
Тема 9: Архитектурные стили: классический ETL/DWH/BI.
Тема 10: Позиция архитектора в Agile-проекте.
Практика: Проект «Mobile Street Food». Этап работ: предложить разбиение системы на модули/микросервисы. Отобразить связи модулей/микросервисов на компонентной диаграмме.
Итого на курс 24 часа:
Тема 1: Управление заинтересованными сторонами (стейкхолдерами) проекта.
Тема 2: Виды требований и атрибуты качества.
Тема 3: Влияние нефункциональных требований на архитектуру.
Тема 4: Сбор и работа с функциональными требованиями.
Тема 5: Дополнительные виды требований: ограничения.
Тема 6: Управление критериями надёжности (SLA, SLO, SLI).
Тема 7: Работа с архитектурными изменениями.
Практика: Проект «Mobile Street Food». Этап работ: выделить наиболее приоритетные функциональные требования, сформулировать их в виде пользовательских историй. Сформулировать нефункциональные требования к системе в виде сценариев атрибутов качества. Составить требования к качеству системы с точки зрения масштабов и планов развития бизнеса.
Итого на курс 26 часов:
Тема 1: Проектирование от атрибутов качества.
Тема 2: Тактики и паттерны проектирования.
Практика: Проект «Mobile Street Food». Этап работ: ранжировать требования и выбрать тактики для достижения требований каждой из групп. Создать диаграмму/таблицу взаимосвязи требований.
Итого на курс 28 часов:
Тема 1: Задача коммуникации приложений.
Тема 2: Уровни (методы) интеграционных решений.
Тема 3: Шаблоны коммуникации в контексте приложений и микросервисной архитектуры: применение и практические сценарии.
Тема 4: Синхронное взаимодействие и REST: основы, генерация API и управление версиями.
Тема 5: REST API: рекомендации по дизайну, блокировкам, кешированию и версионированию.
Тема 6: OpenAPI Spec: интеграция и API First подход в создании удобных и гибких интерфейсов.
Тема 7: Архитектура сообщений: ключевые паттерны и методы разработки.
Тема 8: AsyncAPI: организация асинхронного взаимодействия.
Тема 9: Технологии асинхронного обмена сообщениями: RabbitMQ, Kafka в сравнении.
Тема 10: Интеграция баз данных и ETL: сильные стороны, метрики и методы оптимизации.
Тема 11: Capture Data Changes: анализ Debezium и его использование в различных сценариях.
Тема 12: Интеграция через файлы: особенности, преимущества и правила наименования.
Тема 13: Использование вспомогательных протоколов и средств интеграции API.
Практика: Этап работ: спроектировать REST API для работы с заказами с точки зрения клиентского приложения. Описать процессы взаимодействия «заказчик-исполнитель», приёма платежей, поддержки. Отобразить процессы на диаграмме потоков данных. Предложить значения для триггеров уведомлений службы поддержки.
Итого на курс 54 часа:
Тема 1: Реляционные и нереляционные базы данных: обзор, особенности и гарантии доступности.
Тема 2: Как выбрать базу данных на основании требований и контекста.
Тема 3: Организация конкурентного доступа: стратегии блокировок, изоляции транзакций и обеспечение согласованности; детали реализации транзакций и блокировок: обзор PostgreSQL, MySQL и их возможностей. CAP-теорема.
Тема 4: Современные тактики производительности реляционной базы данных.
Тема 5: Виды нереляционных баз данных: обзор, гарантии; отличия и детали реализации нереляционных баз данных.
Тема 6: Проектирование моделей данных.
Практика: Проект «Mobile Street Food». Этап работ: спроектировать модель данных системы, нарисовать ER-диаграмму. Выбрать базу данных и обосновать выбор.
Итого на курс 42 часа:
Тема 1: Технологии виртуализации.
Тема 2: Основы построения информационных сетей.
Тема 3: Архитектура Linux.
Тема 4: Основы CI/CD: построение процессов с использованием Jenkins, GitLab, Ansible.
Тема 5: Мониторинг и наблюдаемость системы: паттерны, инструменты и протоколы.
Тема 6: Проектирование облачной архитектуры: провайдеры, возможности, экономика.
Тема 7: Проектирование облачной архитектуры: паттерны.
Тема 8: Разработка 12-факторного приложения.
Тема 9: Контрактные обязательства сервиса: метрики надёжности, SLA, RTO, RPO и паттерны реализации.
Тема 10: Понимание Kubernetes: типы сущностей, Helm, CI/CD и балансировка трафика.
Практика: Проект «Mobile Street Food». Этап работ: выбрать технологии развертывания сквозного примера, нарисовать диаграмму развертывания, расположить программные элементы по элементам инфраструктуры. Описать метрики мониторинга, технические средства обеспечения отказоустойчивости и масштабирования. Выполнить предварительный расчёт оборудования продуктивной среды: CPU, RAM, Disk.
Итого на курс 42 часа:
Тема 1: UML для моделирования и анализа систем.
Тема 2: BPMN для моделирования бизнес-процессов.
Тема 3: Нотация 4+1 для анализа и проектирования архитектуры.
Тема 4: Нотация C4 для наглядного и эффективного проектирования архитектуры.
Тема 5: Изучение подхода ADR для документации архитектурных решений.
Тема 6: Язык ArchiMate.
Практика: Проект «Mobile Street Food». Этап работ: нарисовать BPMN-диаграмму для процесса заказа, оплаты и получения услуги с учётом начисления и списания баллов лояльности. Нарисовать две диаграммы последовательности (UML Sequence Diagram), отображающие работу с заказами.
Итого на курс 32 часа:
Тема 1: Сдавать задачи в срок: принципы личной эффективности.
Тема 2: Как развивать команду и выстраивать коммуникации.
Итого на курс 2 часа.
В ходе обучения вы будете работать над сквозным проектом «Mobile Street Food» под руководством опытного тренера. Проект предоставляет все необходимые материалы и шаблоны решений, которые станут полезными в вашей дальнейшей профессиональной деятельности. Выполняя задачи проекта, вы освоите навыки принятия решений, разработки архитектурных концепций и эффективного представления информации. Благодаря поддержке тренера, вы успешно завершите проект и получите ценные знания для уверенного старта в сфере разработки и инноваций.
В ходе курса вы изучите методы и паттерны интеграции систем, учитывающие бизнес-требования и технические ограничения.
Интеграция: определение, задачи, обзор основных направлений и технологий (EAI, EII, ETL, SOA), интеграция на разных уровнях: бизнес-логики, презентационном и бизнес-процессов. Интеграция на уровне данных: подходы и их ограничения (общая база данных, хранилище данных, витрины данных, федеративные базы данных).
Способы сбора и описания, функциональные требования, нефункциональные требования.
Обзор OASIS, W3C, WS-I; SOAP; REST. Форматы обмена сообщениями: XML, JSON, ProtoBuf, Avro. Системы обмена сообщениями и их интерфейсов (AMPQ 0.9, 1.0).
Основные функции; основные производители: Messaging, ESB, ETL, Integration frameworks.
Подходы и шаблоны при реализации функциональных требований. Подходы при реализации нефункциональных требований. Способы построения сервисов и интеграционных решений, лучшие практики.
Практики обеспечения стабильности интеграции, и что может привести к печальным последствиям (Dogpile, Slow Responses, Bulkhead, Bounded datasets и другие).
Повысьте производительность ваших систем! Курс для архитекторов и разработчиков, стремящихся создавать быстрые и эффективные приложения. Оптимизация, тестирование и паттерны проектирования.
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 методологии для: Оценки пределов производительности системы, исходя из текущих характеристик аппаратно-программной части; Оценки влияния принимаемых архитектурных решений на производительность системы; Оценки требований к аппаратной части, исходя из поставленных требований по производительности, базируясь на масштабировании текущих процессов системы.
Максимизируйте эффективность архитектурных задач с помощью LLM.
Что такое генеративный ИИ и LLM. Как работают LLM (на пальцах): трансформеры, обучение, контекст. Обзор моделей: ChatGPT, Gemini, Claude, YandexGPT, Qwen — что выбрать архитектору? Этические аспекты, ограничения, галлюцинации.
Практика: Знакомство с интерфейсами LLM. Первые промпты: простые запросы. Сравнение ответов разных моделей. Анализ точности и полезности ответов.
Анатомия эффективного промпта: инструкция, контекст, примеры. Zero/One/Few-shot prompting. Управление ролью и форматом вывода (JSON, XML, Pydantic). Распространенные ошибки при составлении промптов.
Практика: Создание простых архитектурных описаний. Генерация краткой спецификации компонента. Задание роли ("архитектор", "эксперт по безопасности"). Тестирование влияния температуры и длины контекста.
Цепочка рассуждений (Chain-of-Thought) для принятия решений. Автоматизация создания ADR, RFC, README. Поддержание актуальной документации. Работа с доменной лексикой и стилем компании.
Практика: Генерация ADR по шаблону. Создание RFC на новую фичу. Автоматическое обновление README. Сравнение и доработка результатов разных моделей.
Генерация UML/C4-диаграмм (PlantUML, Mermaid). Описание архитектуры визуально и текстово. Согласование формата между разработчиками и заказчиками.
Практика: Генерация C4-контекстной диаграммы. Создание последовательности вызовов (sequence diagram). Перевод текстового описания в графический вид. Доработка и проверка корректности диаграмм.
Поиск проблем в существующем коде и архитектуре. Выявление дублирования, узких мест, антипаттернов. Использование ИИ для анализа соответствия стандартам.
Практика: Анализ фрагментов кода на безопасность и качество. Выявление антипаттернов в архитектуре. Проверка соответствия требованиям и гайдлайнам. Предложение альтернативных решений.
Как внедрить ИИ в ежедневную работу архитектора. База промптов для типовых задач. Шаблоны и менеджеры промптов. Работа с несколькими LLM-агентами.
Практика: Разработка библиотеки промптов под свои задачи. Автоматизация части архитектурного ревью. Интеграция с внутренними системами и Git. Обсуждение: как сделать процесс предсказуемым.
Безопасность и ответственность при использовании ИИ. Юридические, коммерческие и этические аспекты. Стратегии внедрения ИИ в архитектурные процессы. Обучение команды и работа с сопротивлением.
Практика: Обсуждение кейсов: безопасное использование ИИ. Мозговой штурм: как внедрить ИИ в свою команду. Создание чек-листов для применения ИИ. Анализ возможных рисков и способов их минимизации.
Критическое мышление при работе с ИИ. Возможности и ограничения современных инструментов.
Практика: Финальное задание: Получить архитектурную задачу. Сгенерировать ADR и RFC. Создать диаграммы и описание решения. Проанализировать потенциальные проблемы. Обсуждение решений, обмен опытом. Демонстрация полученных результатов.
Вы узнаете, как разрабатывать гибкие и эффективные системы, соответствующие требованиям бизнеса. В курсе рассматриваются основные проблемы, связанные с реализацией микросервисной архитектуры, а также стратегии, механизмы, паттерны и инструменты для их решения. Практические упражнения позволят вам приобрести навык самостоятельного проектирования МСА систем. Курс поможет вам принимать обоснованное решение о применимости МСА в зависимости от потребностей бизнеса и возможностей команды.
Понятия монолита, SOA, MSA. Сравнение и обоснование выбора.
Оптимальный размер микросервиса. Разбиение на сервисы по бизнес-возможностям. Разбиение на сервисы по проблемным областям. Практики определения предметных областей. Декомпозиция по техническим и организационным аспектам.
Организация команд под MSA. Организация репозитория кода под MSA.
Паттерны взаимодействия. Синхронные и асинхронные механизмы взаимодействия. Оркестровка и хореография. Основные протоколы и технологии (REST, gRPC, GraphQL, Kafka, RabbitMQ и др.). Взаимодействие с внешними системами (API Gateway, BFF). Реактивные системы. Архитектуры, управляемые событиями. Разделение команды и запроса.
Паттерны работы с данными. Порождение событий. Справочные данные в MSA. Единый источник истины (Source of Truth) в MSA.
Модифицируемость. Решение проблемы высокой связанности. Версионирование интерфейсов и событий. Типы контрактов. Изменения событийной модели. Паттерны организации запросов. Микросервисное шасси (Microservice chassis). Сетки сервисов (Service Mesh).
Масштабируемость. Паттерны построения балансировщиков. Сервисы обнаружения и паттерны работы с ними.
Производительность. Паттерны производительности в MSA (переборка, изящная деградация и пр.).
Согласованность. Проблемы обеспечения согласованности в MSA. CAP теорема. Решения проблем согласованности. Двухфазные коммиты. Паттерн SAGA. Понижение уровня согласованности.
Надежность. Механизмы отказоустойчивости. Паттерны предохранитель (Circuit Breaker), дросселировка, зависимые таймауты и пр.
Безопасность. Механизмы обеспечения безопасности в MSA. Аутентификация. Авторизация. Защита периметра. Защита каналов связи. Основные протоколы и паттерны (OAUTH2, JWT, привратник, ключ камердинера и пр.).
Тестируемость. Пирамида и квадрат тестирования. Особенность тестирования микросервисов. Модульное тестирование. Интеграционное тестирование. Компонентное тестирование. Тестирование E2E. Паттерны тестирования MSA.
Удобство обслуживания. Возможность наблюдения (Observability). Паттерны наблюдения (распределенная трассировка, агрегация журналов). Мониторинг и журналирование. Конфигурирование микросервисов. Вынесение конфигурации во вне. Поддержка системы.
Паттерн «Deployment pipeline». Паттерны развертывания. Использование технологий Docker и Kubernetes. Использование сетки ISTIO. Бессерверное развертывание. Стратегии развертывания (сине-зеленые, канареечные и т.д.).
Стратегии перехода с монолита на микросервисы. Удушение монолита (Strangler monolith). Паттерны удушения. Связь микросервиса с монолитом. Миграция базы данных.