Анализ Систем [Тариф Аптечка] [Федор Борщев, Антон Давыдов]
Чего ждать, а чего не стоит
Ибрагим вместе с Котом-критиком получают задачу от бизнеса спроектировать новую систему.
По пути наступают на разные грабли, а Антон помогает с ними разобраться.
Урок 1. Kitten: разбиваем систему на элементы, печём первый блин
Урок 2. House Cat: Выбираем архитектурный стиль на основе стратегического анализа бизнеса
Урок 3. Tomcat: Выбираем коммуникации, брокеры и базы данных, документируем решения
Урок 4. Alley Cat: Распиливаем монолит
Урок 5. Итоги и дальнейшие шаги
Цена со скидкой 34650 руб
Промокод AS5THOUGHTS до 5 октября, скидка 10%.
Чего ждать, а чего не стоит
Ибрагим вместе с Котом-критиком получают задачу от бизнеса спроектировать новую систему.
По пути наступают на разные грабли, а Антон помогает с ними разобраться.
- Не говорим о ГОСТах, ISO и других стандартах. Хоть они будут использоваться в качестве справочного материала, курс — не про сертификацию на позицию solution architect.
- Говорим о концепциях и смыслах, которые так или иначе прослеживаются в каждом из стандартов. Документы всегда можно нагуглить, а вот понять логику важнее. И ещё сложнее собрать общую картинку.
- Не говорим о дизайне систем в ключе выбора между технологиями для кеширования, месседж-брокерами или вариантами развёртывания k8s.
- Учим не выбирать технологии (хотя про это тоже есть), а определять, что вообще надо сделать бизнесу, чтобы заработать больше денег. А для выбора технологий есть специализированные курсы вроде сертификации aws.
Урок 1. Kitten: разбиваем систему на элементы, печём первый блин
Урок 2. House Cat: Выбираем архитектурный стиль на основе стратегического анализа бизнеса
Урок 3. Tomcat: Выбираем коммуникации, брокеры и базы данных, документируем решения
Урок 4. Alley Cat: Распиливаем монолит
Урок 5. Итоги и дальнейшие шаги
Урок 1. Kitten: разбиваем систему на элементы, печём первый блин
- Цель: Научиться вынимать требования из бизнеса и выбирать элементы системы на основе этих требований.
- Узнать первые два вида связности — по данным и по вызовам.
- Познакомиться с системой, которую будем разбирать во время курса.
- Когда мы только начинаем проектировать системы, обычно нет ни внятных требований, ни времени на проектирование.
- После урока будет понятно, что даже в таких условиях можно собрать что-то рабочее.
- Так же в уроке разбиваем два антипаттерна — разбивание бизнес-логики по техническим шагам (нужен пример) или по сущностям (entity service)
- Работа с требованиями
- Event Storming
- Модель данных
- Базовое сравнение микросервисов и монолитов
- система, форма и функция системы
- Спроектируем первую версию системы.
- Для этого рассмотрим две базовые модели: Event Storming и Модель данных.
- Благодаря этим моделям, в будущем, будем улучшать систему с каждой новой итерацией.
- Цель: Проанализировать полученную в первом уроке систему и найти её слабые места.
- Разобраться в явных и неявных видах связанности, связать связанность и сложность системы.
- Посмотреть на проект глазами бизнеса, чтобы избавиться от лишней связанности между элементами.
- Определиться, какие характеристики важны для системы, найти их значения и выбрать один из базовых архитектурных стилей, основанных на найденных характеристиках.
- После первой итерации оказалось, что не были учтены неявные связи между найденными элементами, а сами элементы были найдены без понимания, какую проблему изначально решает бизнес.
- При этом выбранная структура из первого урока оказалась невалидной, ибо мы не учли важные характеристики проекта.
- Поэтому научимся искать характеристики и выбирать архитектурные стили, основываясь на полученных данных.
- strategy DDD, Core/Generic/Supporting subdomain, context mapping;
- coupling & cohesion, temporal coupling, local & global complexity;
- quality attributes / non functional requirements/architecture characteristics;
- поиск характеристик и перевод бизнес-терминов в характеристики;
- циклы жизни систем;
- fitness functions;
- layered, service-based, microservices architecture styles;
- V-model.
- Ученик научится смотреть на систему как на набор проблем, решения которых ему надо спроектировать.
- Научится видеть связанность элементов не только явную, но и основанную на бизнесе и характеристиках.
- Разберётся в том, какие характеристики существуют, как их найти и как с помощью характеристик выбрать нужный архитектурный стиль.
- Разберём, почему описывать детальное решение для разработчиков не имеет никакого смысла и вместо этого лучше описать элементы, коммуникации и задать ограничения, в которых должна работать система.
- Цель: Определить целевую аудиторию, для которой мы делаем систему, благодаря этому собрать полные требования и полный набор характеристик.
- Ввести внешние ограничения, благодаря чему система изменится.
- На основе отличий в характеристиках ввести концепцию разделения на сервисы.
- Разобраться, как выбирать паттерны, базы данных и способы коммуникаций.
- А также научиться стандартизированно описывать принятые решения.
- В реализуемой системе заинтересован не только сферический бизнес в виде ПМ’а, но и разные виды пользователей: финотдел, внешние инвесторы, отделы разработки и другие.
- Для того, чтобы полученное решение удовлетворяло всех заинтересованных, необходимо найти эти лица.
- При этом важно понять, чей интерес важнее, чтобы работа над проектом не превратилась в хаос.
- Кроме характеристик, существуют внешние ограничения, такие как законы, количество инвестиций, общий уровень инженеров и так далее. Важно подстраивать решение под эти ограничения, для этого научимся искать и приоритизировать ограничения.
- Кроме выбора архитектурных стилей, набор ограничений и характеристик можно применять к выбору других технических решений, например баз данных, способов коммуникации, выбору брокера и паттернов.
- Научимся не только принимать решения, но и описывать их так, чтобы не терять контекст, в котором решение было принято. Это позволит быстрее онбордить новых участников команды.
- stakeholders, stakeholders requirements;
- ограничения системы;
- microkernel, pipeline, event-driven architecture styles;
- выбор вида БД в зависимости от характеристик;
- выбор вида брокера в зависимости от характеристик;
- выбор паттернов в зависимости от характеристик;
- ADR.
- Ученик научится искать заинтересованных в системе лиц, определять, что из требований заинтересованных лиц важно, а что нет.
- Научится искать ограничения, которые влияют на итоговое решение, и выбирать нужные стили, паттерны, базы данных и любые другие технические решения, основываясь на полученных знаниях.
- Научится описывать процесс принятия решения так, чтобы контекст не терялся.
- Цель: Попасть в ситуацию, когда уже есть готовая реализация проекта, который сделали «как смогли».
- После анализа полученной системы привести всё в порядок, используя пять подходов: добавить новый функционал как отдельный сервис, объединить технические шаги в общий сервис, переписать существующий сервис, чтобы он удовлетворял характеристикам, вынести сервис из монолита и избавиться от энтити-сервиса.
- Для каждой проблемы обсудить стратегии вывода в эксплуатацию и шаги для переписывания.
- Научиться рефакторить распределённые системы: добавлять новый функционал, выносить не подходящий по характеристикам, объединять сервисы, переписывать существующие сервисы и избавляться от энтити-сервисов.
- Также обсудим, как планировать и следить за процессом эволюции системы.
- Entity services;
- Strangler Fig Application.
- Ученик получит практический опыт модернизации сервисных архитектур.
- Получит один из способов наблюдения за процессом работы над системой, который можно применять не только для распила сервисов, но и в любой другой работе над системой.
- Цель: Подвести общие итоги и обсудить необходимые шаги для дальнейшей работы.
- Разобраться, как описывать систему.
- Спланировать этап развития собственных навыков после курса и повторить концепции, пройденные в курсе.
- Собрать все знания вместе. Научиться описывать архитектуру системы так, чтобы ей можно было пользоваться.
- всё, что в курсе было;
- 4+1, C4, arc42, iso42010.
- Ученик получит чек-лист работы над системой, дальнейшие шаги по самостоятельному изучению и описание примеров того, как можно описывать архитектуру.
Промокод AS5THOUGHTS до 5 октября, скидка 10%.
https://tough-dev.school/system-analysis