Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
- Telegram Web
Telegram Web
про #моделирование

Я проповедую подход под названием Model Based System Engineering (MBSE) в применении к созданию программных систем. Изначально этот подход создавался для физических инженерных систем, но сами принципы вполне применимы в ИТ.

Суть в том, что мы на этапе анализа, проектирования не ТЗ на разработку пишем, а создаем структурированное описание в виде модели системы, точнее набор согласованных между собой моделей с разных точек зрения, включая, но не ограничиваясь теми, которые принято относить к описанию архитектуры. Модель включает в себя явное представление спецификации, требований к поведению системы в ключевых аспектах. На стадии разработки происходит реализация воплощения системы, соответствующей этой модели.

В инкрементальном процессе разработки у нас всегда есть какое-то актуальное состояние {модель + система}, и есть поток инкрементальных изменений модели и соответствующих изменених системы.

Цель создания и поддержания модели - снятие неопределенностей, подтверждение полезности будущей системы или её изменения до того, как будут потрачены существенные ресурсы на реализацию, поэтому модель еще на стадии проектирования должна позволять как-то оценить, насколько создаваемая система будет решать задачи, ради которых создается, а потом, после реализации, сравнить то что получилось с тем что ожидалось.

Важные моменты:
1. Глубина детализации моделей и технология их создания, поддержания и модификации должны быть достаточно легковесными, чтобы не превратить модели в обузу. Модель должна позволять до разработки быстро прогонять множество итераций обсуждения, верификации и модификации.
2. Способ представления моделей должен быть понятен заказчикам, разработчикам, тестировщикам и т.п., чтобы обсуждения и уточнения моделей были конструктивными.
3. Технология ведения моделями должна позволять представлять в виде отдельного читаемого артефакта инкрементальные изменения модели - это позволяет отказаться от ТЗ. На стадии анализа и проектирования очередного инкремента достаточно внести и согласовать в команде изменения в модель исходной системы, и артефакт, представляющий это изменение становится почти готовой постановкой на реализацию, останется лишь для полноты картины приложить к нему описание мотивации изменений.

Если на старте проекта договориться о составе и формате представления моделей, то дальше процесс становится почти прозрачным, с минимумом писанины. Звучит красиво, вопрос в том, какая же технология представления моделей позволяет работать таким образом. Удивительно, но пока что самый удобный и лаконичный способ моделирования, который удалось найти - это текстовые описания под гитом в markdown, plantuml, yaml и прочие лаконичные умеренно структурированные представления. Популярный в отрасли Confluence не удалось приспособить, он не позволяет явно управлять изменениями.
👍3🤔2
Привет всем. Так получилось, что меня некоторое время назад опять занесло в менеджеры.
Но я тут опять про архитектурное моделирование, ибо накипело.


"А что мы вообще тут делаем?" или почему архитектор - лучший друг менеджера

Я ненавижу ремонт. Терпеть не могу всю эту грязь, пыль, торчащие трубы и обломки плитки. Но куда деваться. Иногда все-таки надо и обои поменять, и плитку в ванной переложить.
Мой самый страшный сон - начинать ремонт без плана...
Закупили обои. Начали клеить - не хватило одной полосы. Надо еще целый кусок покупать, а в магазине эта серия уже распродана, новый рулон не попадает по цвету... Положили красивый керамогранит на "глаз", и теперь дверь стандартного размера не входит в проем - надо делать на заказ, это и время, и деньги. И оно всё тянется, тянется и тянется...


Примерно то же самое происходит в IT-проектах без предварительного архитектурного моделирования. Команда работает, старается, но что-то постоянно не стыкуется, результата нет, заказчик нервничает.

Архитектурная модель — это как чертёж дома перед стройкой. Она чётко определяет:
- ЧТО мы строим и из ЧЕГО, каких элементов оно состоит (микросервисы, модули, компоненты)
- КАК эти элементы взаимодействуют между собой (API, очереди сообщений)
- КАКИМИ свойствами должны обладать эти элементы (реализуемые функции, отказоустойчивость, производительность)

Когда есть такая модель, задачи на разработку формулируются не абстрактно ("доработать функционал оплаты"), а конкретно: "реализовать сервис платежного шлюза с поддержкой отмены транзакций и временем отклика до 200мс".

При тестировании мы проверяем не "работает/не работает", а соответствие элементов модели заявленным характеристикам.

Без архитектуры вы как прораб, который не знает, сколько этажей в строящемся здании и где будет вход. Можно ли в такой ситуации сказать, на каком этапе находится стройка? 🤔

Архитектурная модель — это общий язык для всех участников. Когда разработчик, тестировщик и менеджер говорят о "сервисе аутентификации", они имеют в виду одно и то же, а не три разные вещи.

Архитектура - это не просто квадратики и стрелочки, она определяет разбиение системы на части и задаёт названия этих частей, задаёт словарь, с помощью которого формулируются задачи на изготовление или доработку частей. Архитектура разбивает большую задачу на множество задач попроще, которые можно выполнять и отслеживать по отдельности. Это сильно упрощает и разработку, и отслеживание хода работ.

Так что если хотите знать, где вы находитесь в проекте и куда движетесь — начните с создания архитектурной модели. Иначе рискуете построить вместо дома что-то среднее между сараем и космическим кораблём. Причем сарай почему-то получается чаще...
🔥2😭1
Записки системного архитектора
Привет всем. Так получилось, что меня некоторое время назад опять занесло в менеджеры. Но я тут опять про архитектурное моделирование, ибо накипело. "А что мы вообще тут делаем?" или почему архитектор - лучший друг менеджера Я ненавижу ремонт. Терпеть не…
P.S. Предыдущий текст был создан с использованием LLM.
Было интересно попробовать, насколько этот зверек способен реально помочь с написанием текстов. Не могу сказать, что он был в полной мере написан моделью, но модель сделала значительную часть работы.
В промте была задана тема, несколько тезисов, заданы стиль и ограничение на размер. Попросил добавить примеры.
В полученном тексте процентов 20-30 пришлось переписать полностью, в частности, название и начальную подводку. Остальную часть показалось достаточно слегка подредактировать с точки зрения стиля.
Интересно мнение аудитории - имеет ли право на жизнь такой метод или текст получается отстойный и так больше делать не надо?
- лучше писать чаще и вот так ☝️☝️☝️
(ставь 👻)
- или как раньше, но тогда будет сильно реже
(ставь 🤡)?
🤡11👻5
Нужны ли архитектору нотации или квадратики со стрелочками как искусство

Великий сыщик Шерлок Холмс считал важным не забивать голову лишней информацией. Помнится, узнав что Земля вращается вокруг Солнца, он пожелал поскорее про это забыть, как бесполезное в его жизни знание.

Иногда встречаю похожее отношение к формальным нотациям, дескать нах.. зачем мне вникать в эти ваши UML/ArchiMate/BPMN, большинство стейкхолдеров впадают в ступор при виде "правильных" диаграмм, а все обсуждения происходят вокруг рисунков на салфетках с квадратиками и стрелочками. Может и правда, строгие нотации - это излишнее, устаревшее, древнее го.. знание, которое нужно как можно скорее забыть и более не вспоминать?

Но вот мне так вааще не кажется. Нотации - это же не просто способ рисования, это способ структурировать и упорядочить мышление. Самое главное, как по мне, это не то как оно изображается, важно что именно изображается. Нотации содержат ценное знание о том, какие аспекты системы важно выделять, какие отношения вообще бывают между компонентами. Они задают язык, на котором мы думаем и потом разговариваем.

Рисуя "квадратики со стрелочками" на салфетке, архитектор осознанно упрощает сложную модель, которая живет у него в голове (или, может быть она даже выражена где-то в формальной диаграмме), и целенаправленно выбирает те элементы модели, которые важны для конкретного разговора. Но чтобы создавать сложную модель - неплохо бы иметь в голове язык для её создания. Можно, конечно, придумать свой язык, а потом обижаться и расстраиваться, что его никто не понимает, а можно использовать уже кем-то выстраданные, вымученные и вылизанные абстракции. Нотаций много, выбирай на вкус подходящую к конкретной задаче.
Картинка к предыдущему посту - рисунок Фредерика Фореста. Она предельно проста и лаконична. Но почему-то у меня не возникает сомнений, что для того, чтобы добиться этой простоты, лаконичности и выразительности, он довольно долго изучал и анатомию, и законы перспективы, ну и всё остальное, что там еще художники изучают.

Так что не игнорируйте нотации. Не обязательно им прямо строго следовать в каждой схеме, но важно, чтобы всегда могли объяснить, а что же именно кроется за обозначениями. А в идеале, чтобы и объяснять ничего не надо было, а "наброски на салфетке" были столь же точными и выразительными, как этот рисунок.
👍21
Forwarded from Russian Association of Software Architects (Сергей Баранов)
Я сейчас активно применяю AI в PDLC, так как канал архитектурный, поделюсь наблюдениями в части архитектуры на основе проектов с клиентами.

1. Мусор на входе - мусор на выходе. AI анализирует данные и здесь очень большая проблема. Сейчас же только ленивый не идет в AI и с чем сталкивается сразу на входе? Либо данных нет, либо они в ужасном состоянии, либо они с огромными пробелами, разбросаны, в итоге мы получаем фрагментированный и непригодный контекст. Если раньше можно было отложить на второй план управление тех долгом, не уделять должного внимания документации, то теперь, если вы хотите получить преимущество от использования AI, придется эти долги отдавать, иначе он выдает какую-то глупость. А отдать этого долг AI никак не помогает, у него просто нет входной иформации. И вот мы начинаем проводить event storming, архитектурые воркшопы, архитектурную базу знаний (структуру документации), чтобы ее можно было начать использовать с AI и только после этого (не совсем только) получить значительный эффект.
2. Для архитектуры очень важен бизнес-контекст, а он обычно тоже слабо описан. Структурированное описание бизнес-требований, с метриками и бизнес-архитектурой тоже становятся достаточно важными. Еще очень важным становится качественный discovery-цикл. AI может прекрасно обрабатывать со всех сторон результаты интервью клиентов, но если интервью проведено плохо – ничего не поможет, поэтому навык проведения интервью (а тут уже AI особо не поможет) тоже достаточно важен. Опрос AI в некоторой роли тоже не сильно помогает, потому что у каждой компании свой контекст, который публично не транслируется за пределы компании того, с кем проводите интервью.
3. Все-таки AI в ближайшее время на заменит архитектора, политику никто не отменял. Он даст гипотезы, подсказки, кучу материалов, но окончательное решение, валидация и ответственность будет все равно за архитектором, поэтому развитие архитектурных скилов критически важно (да, и навык критисеского мышления становится еще более важным, потому что AI порой выдает очень уверенно и обоснованно чепуху). Сильного архитектора, если у него в материалах порядок и у бизнеса в материалах порядок AI действительно очень сильно усиливает, проверено.

В общем, очень похоже на микросервисы. Микросервисы - это архитектурный стиль, один из многих. Чтобы спроектировать хорошее микросервисное решение, нужно хорошо понимать фундамент архитектуры, проектирования распределенных систем и DevOps и микросервисы тогда становятся всего лишь одним из стилей в арсеналей архитектора. С AI выглядит точно так же. Так что потребность в базе никуда не делась, а, видимо, стала даже более важной, иначе мы рискуем получить тысячи нерабочих решений и экспоненциальный рост техдолга.
💯2👍1
Сегодня заканчивается подача заявок на осеннюю конференцию Flow в Питере

Если кто хотел выступить — самое время вписаться: https://flowconf.ru/callforpapers/

Моя тема:

Пошаговая технология проектирования архитектуры. Срываем покровы таинственности с самой непонятной и мутной дисциплины в современном ИТ.

Аннотация

Как начинать проектировать архитектуру как инженер, а не профан? Где взять целостный подход, если вокруг лишь фрагменты общей картины — DDD, атрибуты качества, интеграционные шаблоны, event storming, модели C4?

В этом докладе я расскажу о полной технологии проектирования архитектуры, которую мы разработали вместе с ноосферой в лице OpenAI (в основном книги издательства O'Reilly) и отточили с архитекторами информационных систем. Эта технология описана в открытой методичке и охватывает всё: от стратегических целей бизнеса до физической архитектуры.

В отличие от разрозненных методов, я собрал воедино:
- подходы от DDD до Attribute-Driven Design;
- чек-листы, шаблоны и таблицы, одобренные архитекторами;
- релевантные кейсы из сферы FinTech, ритейла и госсектора.

Этот доклад — приглашение в архитектуру как в процесс, в котором опытный ИТ-специалист может наконец выступить не просто наблюдателем игр демиургов, а активным деятелем, равноправным участником. Расскажу, с чего начать, как не утонуть в деталях и частностях и какие шаги ведут к обоснованной и устойчивой архитектуре.

Целевая аудитория

- опытные системные аналитики и разработчики, которые всё чаще сталкиваются с архитектурными задачами и хотят понимать, как проектировать архитектуру от и до, а не обрывками;
- руководители отделов анализа, проектирования и архитектуры, стремящиеся расширить архитектурную экспертность в команде;
- ИТ-преподаватели, авторы учебных курсов и руководители ИТ-школ, которым нужно разобраться, чему именно учить в сфере проектирования архитектуры.

С чем уйдут участники доклада

- с пониманием, какие шаги включает проектирование архитектуры согласно современным методикам;
- с готовыми шаблонами и чек-листами, которые можно использовать уже завтра;
- с инструментом, который помогает идти по предложенной технологии и создавать качественные артефакты в ходе проектирования в рабочем контексте;
- с ощущением, что архитектурное проектирование — это не сакральные знания, а устойчивая и постижимая за конечное время технология деятельности.
🤮3👎1🤡1
Погружение в Лейкхаус! Офигенная новость, ребят – качаем, наконец, DWH! В следующую среду 13-го августа в 18:30 msk в Zoom состоится встреча с Алексеем Белозерским, руководителем группы BigData Services VK Cloud.

Тема встречи “Погружение в Лейкхаус: почему все о нём говорят”.

Обсудим:
- Ретроспектива развития хранилищ данных. Принципы и компоненты. Озера vs DWH. ETL vs event streaming. Витрины. Базовые классы компонент: базы и подтипы, распределенные хранилища, стриминг и процессинг, in-memory grids. HDFS/Hadoop, Spark, колоночные базы (Clickhouse, Vertica etc), Greenplum/Greengage, Exasol, Snowflake и тд и трансформация в современный стэк, Trino/Iceberg/S3 или in-memory processing, аналитические embedded-базы типа DuckDB
- Тренды, разделение compute/storage, in-memory вычисления. Почему сейчас старые методы не едут. Какие требования от современного бизнеса и почему старые ХД не удовлетворяют им: рост объемов, рост аналитической нагрузки, требования регуляторов в разных странах.
- Как это все расшивается на "новом" стеке из Лейкхауса - и почему об этом все говорят.

Встреча состоится в Zoom, в этот раз она свободна и для сообщества Devhands Club (слушатели наших курсов) и для всех остальных желающих принять участие в живой дискуссии, но обязательно нужно быть авторизованным в Zoom.

Topic: Devhands Open Sessions: Lakehouse deep-dive (A. Belozersky)
Time: Aug 13, 2025 06:30 PM Istanbul/MSK
Zoom: https://us06web.zoom.us/j/85409552470?pwd=mfmnt6aRvmllJB1iLx8Ws4sdiIqVD3.1
Добарить в календарь: https://addcal.io/e/k0dw9sgjk8ai

Приходите, приводите друзей!
Не так давно я писал, что что нотации - это не просто способ рисовать квадратики со стрелочками, а в первую очередь - инструмент структурирования мышления аналитика или архитектора. Сегодня хочу показать это на конкретном примере — нотации EPC (Event-driven Process Chain).

Суть нотации EPC удивительно проста: мир состоит из событий (состояний) и функций (действий). События запускают функции, функции порождают новые события. Вокруг функций крутятся информационные сущности, являющиеся входными или выходными данными функций, а также ресурсы, необходимые для их работы (например, сервис-исполнитель функции). И всё, больше почти ничего не нужно для описания любого процесса.

При попытке описать автоматизируемый процесс терминах EPC невольно задаёшься вопросами:
- Какие события случаются в процессе или в каких состояниях бывают объекты, задействованные в процессе?
- Какие действия переводят объекты из одного состояния в другое?
- Кто или что выполняет эти действия?
- Какая информация и какие ресурсы нужны для выполнения действий?

Можно провести определенные параллели этой нотации с концепцией Event Storming. Оранжевые стикеры событий и синие стикеры команд в Event Storming — это почти те же события и функции из EPC, только в более неформальном виде. Но есть нюанс, в Event Storming подразумевается, что событие триггерит команду (т.е. событие достаточно для запуска команды), а в EPC связь между событием и функцией означает, что функция может исполняться только после наступления определенного события, т.е. событие/состояние необходимо для функции, но недостаточно. EPC дополнительно уделяет внимание информационным потокам, исполнителям и другим ресурсам, необходимым для работы функций.

В свое время эта нотация очень помогла мне осознать и структурировать процесс конфигурирования IDM системы. Наша система имела большое количество взаимосвязанных конфигурационных параметров и настроек. Технически все было не очень сложно, но из-за их количества и разбросанности по элементам конфигурации было очень сложно понять и объяснить другим с чего и как нужно начинать настройку, какие опции на какие аспекты поведения влияют.

И я начал просто выписывать процесс настройки по шагам: вот, настраиваю вот это (элемент-действие, например, настройка подключения к Active Directory), использую для этого вот такие элементы конфигурации (информационный объект - параметры конфигурации подключенной информационной системы), получаю в результате событие (например, подключена AD). Событие описывает новое состояние системы, в котором я получаю возможность переходить к следующим действиям - настройками других элементов.

Так постепенно я задействовал все элементы конфигурации в разных процессах конфигурирования и увязал процессы конфигурирования в цепочку через события. Дальше аналогичным образом описал использование элементов конфигурации в процессе функционирования системы как исполнителя действий с учетными записями в ответ события жизненного цикла сотрудника компании, от приёма на работу до увольнения.

Эти две диаграммы позволили четко увязать между собой элементы конфигурации, шаги процесса конфигурирования и собственно функции IDM - что и зачем нужно настроить для того, чтобы корректно работали определенные функции процесса управления учетными данными.

Не скажу, что я супер строго следовал нотации, когда рисовал эти модели. Как я уже говорил, важна не сама нотация, важна картина мира, которая создается с её помощью, аспекты, которые нотация подсвечивает и делает явными.

Именно про это ключевой тезис этого поста: нотация EPC - очень полезный инструмент для анализа процессов с целью выявления и структурированного документирования событий и промежуточных состояний самых разных систем, действий, приводящих к этим событиям и состояниям, ну и нужных для этого ресурсов.
👍52
Геннадий высказался очень созвучно моим мыслям. Просто продублирую его пост.
Сейчас в моду вошло философское течение, осмысляющее роль архитектора.

Выскажусь и я, раз уж всё равно толком ничего не успеваю.

Я отношусь к числу радикалов, считающих, что архитектура — это фикция. И рассматривать роль архитектора стоит через призму роли самой архитектуры.

Разложу по слоям:

- Бизнес-архитектура — это вовсе не архитектура, но при этом крайне важная штука.
- Корпоративная архитектура — это де-факто учет, секретариат при службе завхоза (офиса CTO).
- Архитектура приложений — это чистая инженерия, программная инженерия.
- Архитектура решений - это пересечение множества элементов структуры того, что назвается бизнес-архитектурой и множества элементов структуры приложений

Если напрямую связать, в том числе инструментально, то, что называют бизнес-архитектурой, с инженерией, то учетную функцию можно полностью автоматизировать.

А всё, чем я занимался за свою карьеру в должностях со словом «архитектор» в названии, — это либо чистая инженерия, либо сопряжение чего-то важного со стороны бизнеса с чем-то важным со стороны инженерии. И да, без такого сопряжения никакой инженерии и не бывает.
👍21
Свежие вести с полей!

В Obsidian-е подвезли новый core plugin - Bases (см. https://help.obsidian.md/bases)!
По сути - встроенный аналог плагина DataView.
С функциональной точки - послабже будет, чем DataView, в частности, не умеет выводить список задач. Впрочем, я думаю, что это только пока. А вот с точки зрения usability - довольно мощная штука.

Итак, к сути. Данный плагин, несмотря на громкое название Bases, представляет собой встроенный механизм запросов, фильтров к заметкам, а также представлений результатов, причем описания этих самых фильтров и представлений сохраняются в заметке в виде блока неформатированного текста.

``` base
filters:
and:
- file.mtime >= now() - "3d"
views:
- type: table
name: Table
...

```


Плагин интерпретирует фильтры и умеет показывать результаты в виде таблички или набора карточек. Но главная фишка, что делать редактировать это описание не обязательно только руками. Есть довольно удобный UI для его редактирования.

П
👍1
(сработало ограничение на размер текста под картинкой)
UI для редактирования - это сильное преимущество core:Bases по сравнению с community:DataView. Там много прикольных фишечек, сильно снижает порог входа для начала использования плагина.
Отдельная прикольная плюшка - возможность редактирования (!) заметок по месту, прямо в табличке с результатами поиска - редактировать свойства заметок, проставлять теги.

Итог - выглядит красиво, наверное полезно будет для всяких каталожных, справочных наборов заметок. Но для себя сходу применения не увидел...

Почему так?
У меня основная масса заметок - это попытка размотать разрозненные мысли в какие-то структуры - списки, структуры, тексты с отбивками, т.е. большое и непонятное разбивается на связанные каким-то образом части. И все эти части оказываются в одной заметке. Мне было бы интересно иметь возможность поиска, фильтров и редактирования не только заметок, но и отдельных элементов (строк в списках, абзацев, задач) в составе заметок. Тогда, наверное, я бы перетащил сюда управление проектами и задачами, попробовал бы организовать управление знаниями на основе разных классификаторов.
👍2
Роли - одно из самых базовых и одновременно одно из самых трудно понимаемых понятий системного мышления. На днях у меня случайно оформилась одна аналогия, которая, как мне кажется, может помочь освоение этого понятия тем, кто в школе хорошо учил физику.

Системное мышление учит, что не стоит рассматривать человеков вокруг как сложных, непонятных личностей со своими внутренними установками и переживаниями. Ну, т.е. это тоже можно делать, это прикольно, но не очень полезно в деятельности. Вместо этого предлагается сделать умственное усилие и каждого человека виртуально декомпозировать в набор ролей, которые он "играет" в интересующей нас части мира, а дальше анализировать интересы и поведение именно этих ролей. Роль - это некоторый изолированно рассматриваемый аспект поведения человека, некоторая целенаправленная, логически выделенная, целостная часть общего поведения. Подробнее про как и зачем это всё читайте в учебниках по СМ, формат тележки не очень предназначен для такого рода материалов.

Так вот, опыт показывает, что перейти к такого рода восприятию ОЧЕНЬ сложно, умственное упражнение кажется очень искусственным и нелогичным. Как можно нарезать настоящую сложную личностную целостность человека на какие-то сухие, скучные, искусственные роли? Ну глупость же..

А на днях, решая с сыном школьную задачу, я вдруг осознал, что в физике применяется очень похожий приём. Помните школьные задачи? На столе лежит брусок со скошенным краем, на нем кирпич, а сверху на нити, пропущенной через систему блоков, спускается металлический шарик. Ну да, я немножко утрирую :). В условиях задачи мы видим кучу разнообразных тел, которые взаимодействуют друг с другом некоторым образом. И чтобы разобраться в этих взаимодействиях, мы начинаем выделять силы - отдельные взаимодействия. Сила тяжести действует на брусок, он, в свою очередь, давит на стол, а стол в ответ сопротивляется силой реакции опоры. Есть сила трения между кирпичом и бруском, есть сила сопротивления воздуха, действующая на падающий шарик. Смотрите, в условиях (т.е. наблюдаемом мире) нет никаких сил, есть лишь взаимодействующие тела. Физика дает нам знание, что взаимодействия - это результат действия сил, рассказывает, какие силы бывают, от чего они зависят, как проявляются и т.п. Глядя на реальный мир, мы (в уме!!) раскладываем взаимодействие тел на силы, чтобы, используя физические законы из соответствующих теорий, спрогнозировать результаты этого взаимодействия.

Упражнение с выделением поведенческих ролей очень похоже на то, как выявляются силы при решении физической задачи. Чтобы начертить нужные силы на чертеже нужны теоретические знания: какие силы вообще бывают, чтобы их учесть. С ролями такая же история, но вот беда - нет на свете учебника, в котором бы все возможные роли были бы перечислены. И это еще один момент, который затрудняет понимание этого концепта. Т.е., чтобы получать от этого мыслительного инструмента заметную пользу, мало осознать, что можно и нужно декомпозировать взаимодействие и поведение людей на отдельные части, надо еще откуда-то знать, какие части выявлять, какие они вообще бывают.

Мне показалось, что аналогия с силами может помочь облегчить освоение ролей, как мыслительного инструмента, так как иллюстрирует сам принцип декомпозиции поведения на отдельные части. Но, конечно же, это не отменяет необходимости наличия насмотренности и кругозора, без которых не удастся понять, какие же роли выявлять и высматривать в людях вокруг.
1🔥1
Отличный чеклист о чем нужно не забыть спросить/подумать при проксировании интеграции
👍1
Я привез на Flow обновленную карту интеграций.

Обновлений много:

* Изменена структура: добавлены колонки "Семантика взаимодействия", "Стандарты", "Гарантии доставки"
* Добавлена семантика для REST: ресурсный стиль (REST уровня 2) и гипермедиа стиль (HATEOAS, REST уровня 3)
* Добавлены JSON:API, HAL, JSON-LD
* SOAP включен в асинхронные методы
* Добавлен WS-RM для SOAP — протокол гарантированной доставки
* Добавлены подходы к целостности транзакций: ACID и BASE
* Добавлено описание паттернов API Gateway и ESB
* Добавлено описание ETL-процесса
* Добавлена CAP-теорема
* Добавлено описание семантик гарантированной доставки
* Раздел "Особенности" объединен с разделом "Когда использовать"
* Исправлены опечатки

А самое главное — я, кажется, придумал шаблон для описания любой технологии интеграции!

Какие вопросы мы должны задать, когда смотрим на технологию?
1. Что это? Протокол, язык, набор принципов, конкретный продукт?
2. Какой верхнеуровневый паттерн? (по Грегору Хопу: файловый обмен, общая БД, удаленный вызов, сообщения)
3. Режим взаимодействия — синхронный или асинхронный? (скорость против пропускной способности)
4. Семантика запроса / интеграционный стиль: RPC, Query, ресурсный (REST 2 lvl — ресурсы и методы HTTP), гипермедиа (REST 3 lvl, HATEOAS), стриминг, публикация/подписка — в общем, как мы смотрим на интеграцию?
5. Протокол: опираемся на HTTP или используем что-то низкоуровневое? Если HTTP — то используем ли строку запроса и хедеры? То есть, получится ли подключить кэширование, маршрутизацию и все эти готовые штуки?
6. Формат сериализации: текстовый или бинарный? Есть ли схема? Обязательна ли она? Насколько строгая типизация? Есть ли сложные структуры: вложенные объекты, массивы, maps, множества?
7. Есть ли возможность определять и передавать кастомные ошибки?
8. Есть ли встроенные средства гарантированной доставки, и какие семантики поддерживаются?
9. Что с безопасностью? Шифрование, аутентификация, контроль прав.
10. Скорость сериализации / десериализации, размер сообщений
11. Есть ли инструменты преобразования данных?
12. Есть ли язык определения интерфейсов / спецификаций?
13. Статус стандартизации / распространенность / надежность / поддержка в разных языках и фреймворках
14. Какие особенные фишки есть у технологии?
15. С какими проблемами мы столкнемся?

Вот такие 15 вопросов, возможно ещё что-то появится. Но уже с этим можно оценивать и сравнивать разные технологии — насколько они близки, что будет стоить переход и имеет ли он смысл, как вообще об этом думать.

Ссылка на актуальную версию карты: https://disk.yandex.ru/i/k69r0Qr39_1P-w
Записки системного архитектора
Что archimate грядущий нам готовит... #archi #archimate https://habr.com/ru/posts/932602/
Про модель Кано

В бытность свою продуктологом я узнал, что есть такая прикольная штука - модель Кано. Японский профессор Нориаки Кано придумал её в 80-х годах для анализа лояльности и удовлетворенности клиентов продуктом. Он обнаружил, что не все фичи/характеристики одинаково полезны, и что с точки зрения влияния на лояльность клиентов их можно разложить на пять кучек.

Сейчас меня интересуют три из них:
- 🎉 Привлекательные (Attractive) — неожиданные или дополнительные функции, которые вызывают восторг при наличии, но отсутствие их не вызывает неудовольствия.
- 📈 Одномерные (One-Dimensional) — характеристики, которые прямо влияют на степень удовлетворённости: чем лучше, тем выше удовлетворение.
- 🧐 Обязательные (Must-be) — базовые характеристики, без которых продукт не приемлем, но их наличие воспринимается как должное и не повышает удовлетворённость.

Замечено, что есть тенденция постепенного переползания функций из привлекательной кучки в обязательные. Так, когда-то давным-давно наличие камеры в телефоне было дополнительной привлекательной фишкой, а сейчас телефон без камеры не воспринимается в принципе. Другой пример - группировка писем в цепочки, впервые сделанная в GMail, теперь является базовой функцией любого email-клиента. Эффект чисто психологический, что бы удивительное ни было предложено, клиенты к этому привыкают и постепенно начинают воспринимать как само собой разумеющееся.

И подумалось мне, что аналогичная история творится с ожиданиями от разрабатываемых приложений и компетенций программистов. Еще не так давно устойчивость сервисов к отказам сети, возможности мониторинга и сквозной трассировки были удивительными (attractive) особенностями самых лучших и передовых приложений, про это рассказывали на конференциях и хвастали в статьях. А сейчас, когда подходы к решению этих задач стандартизованы, а лучшие практики неоднократно описаны, невольно ожидаешь от разработчика безусловного, обязательного владения этим инструментарием.

Например, когда идет речь о разработке простенького микросервиса в составе большого решения, который принимает команды, скажем, по REST, сохраняет состояние в своей базенке и отправляет события в кафку, я почему-то ожидаю, что без дополнительных слов и указаний этот сервис будет:
- Реализован в концепции stateless, т.е. у него не будет своего состояния и его можно масштабировать без дополнительных приседаний
- Иметь базовый набор метрик (счетчики количества и длительности обработки запросов, обращений к БД, потребления CPU и памяти)
- Сохранять структурированные логи с атрибутом трассировки, позволяющим связать записи, относящиеся к одному запросу
- Реализовывать какие-то базовые механики устойчивости к сетевым сбоям, например Retry с переменным временем ожидания при обращениях по сети к кафке или СУБД.

Т.е. этот набор характеристик в моём восприятии уже относится к обязательным. А вот реализованный Circuit Breaker в этот набор не входит, я его воспринимаю как что-то среднее между привлекательными и одномерными характеристиками - хорошо (но не удивительно) если оно есть, но не так страшно, если его нет.

А у вас какие ожидания перешли из области удивительного в пространство обязательного?
👍31
2025/10/17 19:43:47
Back to Top
HTML Embed Code: