Прямоугольники и стрелочки – Telegram
Прямоугольники и стрелочки
803 subscribers
37 photos
44 files
60 links
Заметки по Архитектуре программного обеспечения и около того.
Ведущий Максим Юнусов.
Download Telegram
Автоматизация_архитектурного_процесса.png
163.1 KB
Автоматизация архитектурного процесса

Что лично я ожидаю от инструментов автоматизации архитектурного процесса.
Презентовал доклад в IT-One

Выкладываю здесь:

https://disk.yandex.ru/d/_GIBNU85PSS4mQ
👍9
Скоро боты заменят технических писателей.

Компания «Яндекс» планирует заменить технических писателей на ботов. Об этом сообщает «Коммерсантъ». Предполагается, что боты будут писать тексты для внутренних проектов компании. Сейчас в компании работают 22 технических писателя, которые пишут тексты для «Яндекса». Боты, в свою очередь, смогут писать для «Яндекс.Карт», «Яндекс.Музыки» и «Яндекс.Такси».
😁1
Архитектурное совещание
или работа по контексту

Как известно, архитектор принимает осмысленные эффективные решения не так как проектировщик.
Проектировщик (разработчик) видит условия задачи (дано) и выводит решение (ответ).
Архитектор кроме "дано" имеет еще и понимание контекста задачи.
В контекст входят интересы стейкхолдеров, ограничения, понимание рисков и др.

Эффективность работы архитектора пропорциональна его погруженности в контекст.

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

Что делать если погруженность в контекст не произошло, а решение требуется?

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

Первый вариант обычно дает крайне неоптимальное решение.
Второй вариант - затратен.

Господа менеджеры, хотите получать оптимальные, быстрые и дешевые ответы, держите на проекте бессменного выделенного архитектора и предоставляйте ему максимум информации.
🔥4
Профессиональная деформация

Известно, что всякое решение плодит новые проблемы (Закон Мэрфи).
Отсюда одно из определений специалиста:
Специалист не только решает проблемы, но и знает где их стоит ожидать.

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

Пример:
Дано:
Сотни тысяч клиентов. Каждый порождает небольшой трафик из сообщений, которые необходимо складывать на диск.
Задача:
Обеспечить приемлемую задержку записи.
Решение:
Пишем сообщения пакетами, смешивая в одном пакете сообщения различных клиентов (например в Apache Pulsar)
Порожденные проблемы:
1. Очевидное (классическое противоречие скорость против объем):
Пакет нельзя удалить с диска пока там находится хотя бы одно сообщение. Один медленный клиент будет удерживать большие объемы от утилизации.
2. Не очевидное и понятное только тому, кто с этим уже работал, то есть специалисту:
Служба эксплуатации не сможет определить, какой объем держит каждый конкретный клиент. Как настроить лимиты?

Если архитектор уже сталкивался с подобным решением, он не только обозначит все подводные камни, но и набросает пути их преодоления.
Если не сталкивался – будет искать проблемы/риски используя анализ и аналогии.

И да, про деформацию.
Постоянно приходится объяснять – что я не пессимист. Это работа такая )
👍1🔥1
О пользе эволюционной архитектуры

Предложив решение, архитектор анализирует возможные риски/проблемы от его внедрения
(где проблема это тот же риск, но который стрельнет наверняка)

Нил Форд описывает различные способы выявления риска:
1. Прототипирование
2. Моделирование (в том числе математическое)
3. Эволюционный подход (пустим в прод. и посмотрим, что получилось)

Кроме этого я бы добавил очевидное:
1. Выявление рисков на основании опыта (по аналогии с предыдущими проектами)
2. Выявление рисков на основании чужого опыта (изучая архитектурные концепты, в частности паттерны)

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

В плане скорости и стоимости принятия решения ранжировал бы так
1. Опыт
2. Паттерн
3. Модель
4. Прототип
5. Проба в проде

Однако, в плане точности предсказания ранжировать достаточно трудно.
Опыт (свой и чужой) может обмануть – у каждого проекта своя специфика.
Математика – слишком абстрактна. Можно упустить значимое.
Прототип тоже не засветит всех грядущих проблем.

Единственно надежный вариант – попробовать.
Дорого и сердито.
👍5
Ещё одна классификация архитекторов

Пока писал предыдущий пост👆, подумал, что можно классифицировать архитекторов на основании их любимого метода выявления рисков.

1. Специалист (опыт)
2. Теоретик (паттерны)
3. Инженер (модель)
4. Кодер (прототип)
5. Экспериментатор (проба в проде)

Надо бы протестировать эту модель на собеседованиях )
Прямоугольники и стрелочки
Скоро боты заменят технических писателей. Компания «Яндекс» планирует заменить технических писателей на ботов. Об этом сообщает «Коммерсантъ». Предполагается, что боты будут писать тексты для внутренних проектов компании. Сейчас в компании работают 22 технических…
В продолжении темы.

Много более осмысленный текст:

Заменят ли боты технических писателей ?
PERPLEXITY
View Concise
It is unlikely that bots will completely replace technical writers in the near future
[2]
[3]
[5]
. While AI and automation tools can be used to assist with certain aspects of writing, such as generating content quickly and accurately
[1]
, they are not yet sophisticated enough to consider all the humanly factors important for good user manuals
[2]
. Additionally, AI tools are not yet able to communicate effectively with subject matter experts or other teams
[2]
.Therefore, while AI and automation tools may change the writing profession in a number of ways, such as making some roles redundant and creating new career opportunities for writers who use them
[3]
, it is unlikely that they will completely replace technical writers in the near future
[2]
[3]
[5]
Джуниор архитектор

Обобщая сказанное выше:
1. Архитектор находит и оценивает риски/проблемы, возникающие при реализации решений.
2. Архитектор находит проблемы не только по условиям задачи (дано), но и во всём контексте задачи.

Существует только три способа обнаружения риска:
1. Быстрый, на основе опыта (специалист)
2. Дорогой, через "попробовать" (экспериментатор, эволюционная архитектура)
3. "Средний путь", через делегирование проблемы (вынос обсуждения на совещания)

Может ли быть полезен начинающий архитектор без опыта, для которого первый вариант не приемлем?

Именно для такого случая и пишутся всякие методологии, позволяющие разложить сложную задачу на последовательность мелких шагов.

В плане оценки архитектурных решений популярны два метода:
1. Классика ATAM от SEI (со многими альтернативными вариантами)
2. Эволюционная архитектура от Нила Форда и к.

В первом случае нас призывают собрать совещание и пригласить туда всех стейкхолдеров.
Во втором написать сценарии верификации архитектуры (фитнес функции).

У меня есть веские основания сомневаться в полезности фитнес функций при выявлении рисков в контексте задачи.

То есть вывод простой:
Джуниор архитектор возможен, но только в режиме непрерывных совещаний по оценке рисков.

#ArchReview
👍6
О шарлатанах

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

В моем понимании, "честный экспериментатор" работает "прозрачно", то есть уведомляет бизнес о возможных последствиях и о грядущих нескольких итераций переписывания.
Шарлатан напротив, заверяет стейкхолдеров в успехе и расписывает радужные перспективы:
"Продукт X решит все наши проблемы. Клянусь статьей на медиум".

Если у бизнеса нет денег на опытного архитектора, то почему бы не пойти итерационно (оно же гибко).

Если деньги есть, то не факт, что нанятый архитектор не окажется шарлатаном.
Увы.

То есть эволюционная архитектура выглядит дорогим, но предсказуемым процессом.

Поиск специалиста с опытом - рулетка.
Прямоугольники и стрелочки
В продолжении темы. Много более осмысленный текст: Заменят ли боты технических писателей ? PERPLEXITY View Concise It is unlikely that bots will completely replace technical writers in the near future [2] [3] [5] . While AI and automation tools can be used…
И наконец https://chat.openai.com/
(Я однозначно буду это использовать) )


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

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

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

Однако вполне возможно, что в будущем боты можно будет использовать для помощи техническим писателям, автоматизируя определенные задачи, такие как сбор данных, проверка фактов и создание контента, что позволит техническим писателям сосредоточиться на более стратегических и творческих аспектах своей работы.
Паттерны и Сюхари

В одном из арх. чатов матерые архитектора в очередной раз усомнились в полезности паттернов.
Их можно понять. Шаблонное мышление многими воспринимается как синоним глупости.

Но я все-таки не буду столь категоричен.
Всему своё место. Есть место и архитектурным паттернам.

Если вспомнить японскую модель обучения боевым искусствам Сюхари
(https://ru.wikipedia.org/wiki/%D0%A1%D1%8E%D1%85%D0%B0%D1%80%D0%B8
https://martinfowler.com/bliki/ShuHaRi.html),
то освоение любого материала можно разбить на три ступени:
- Сю (守) — первая ступень, означающая, что надо заучивать всё точно так, как показывает учитель.
- Ха (破) — вторая ступень, на которой ученик обдумывает свои действия, изменяет правила, пробует их нарушать
- Ри (離) — третья ступень, согласно которой нужно освободиться от правил

На ступени Сю паттерн необходим, как образец для копирования.
На ступени Ха паттерн используется для изучения ограничений.
И только на ступени Ри паттерн теряет смысл.

Кроме того, имена паттернов крайне удобны при коммуникации.
Сравните:
- Сервис группировки сообщений
- Message Router
Какое из этих наименований расскажет Вам больше о цели и реализации компоненты ?

#АрхПаттерны
👍4
Ответственность архитектора

Тут в очередной раз предлагают возлагать на архитекторов ответственность за судьбу проекта. Отсюда вопрос: Коллеги, готовы ли вы стать лицом, отвечающим за реализуемые решения ?
Anonymous Poll
9%
1. Да. Готов
17%
2. Да, но при наличии определенных полномочий (власти)
3%
3. Да, при наличии соответсвующего вознагрождения (за процент)
34%
4. Да, но нужна и власть, и вознаграждение
0%
5. Нет, ни при каких условиях
37%
6. Хочу только посмотреть результат или оставить свой вариант в комментариях
👍1
Использование паттернов в общении

Возвращаясь к теме полезности паттернов.
Было замечено, что использование паттернов делает наши обсуждения более лаконичными.

Однако не указано одно важное ограничение - наличие общего тезауруса.

За конкретным термином участники взаимодействия должны видеть одно и тоже.

В наше время это преимущество паттернов почти утрачено.

Паттерны не в моде. Многие их не знают или знают понаслышке.

Попросил я как-то написать брокера...

Таким образом , увы, в начале пишешь текст с указанием паттернов. Потом отдельно каждый объясняешь.
🔥1
Архитектор и корпоративная культура

Когда-то на курсах по управлению нам рассказывали, что существует три типа корпоративной культуры:
1. Административная (она же бюрократическая), в которой решения обусловлены требованиями начальника.
Девиз: «Я начальник – ты дурак».
Главный актор – Начальник.
2. Техническая, в которой проводятся решения технических специалистов.
Девиз: «Руководить — это значит не мешать хорошим людям работать» (академик Петр Капица).
Главный актор – инженер.
3. Сервисная, т.е. клиенто-ориентированная.
Девиз: «Клиент всегда прав»
Главный актор – клиент маркетолог, так как именно он формирует желания клиента.

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

В корпорации первого типа архитектор не нужен. В свое время китайские правители заменили строптивых технократов на лояльных евнухов и были правы.
Основной вопрос, решаемый начальником – вопрос власти (удержаться или расширить). Соответственно и все решения должны приниматься в этом ключе.
Решение должно удовлетворять вышестоящего сюзерена (скорость, бюджет, киллер фича), а все неприятности должны быть заметены под ковер.
Задача начальника – уйти на повышение до того момента, когда все взорвётся, или использовать схему «три письма».

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

В сервисной культуре архитектор погружается в контекст. Собирает хотелки стейкхолдеров и вынашивает компромиссные решения, в равной степени не удовлетворяющие никого.

Пример работы архитектора в каждом случае приведу в следующем посте.

А пока небольшое резюме:
Перед тем, как определить обязанности архитектора и сформировать процесс, неплохо бы определить с каким типом культуры мы имеем дело.

#КорпоративнаяКультура
🔥7👍1
Архитектор и корпоративная культура
Практический кейс (по посту выше 🖕)

Задача:
Необходимо обеспечить хранение правил авторизации (ABAC) в гео-распределенной системе.

1. Административная культура
Решение должно быть быстрым и дешёвым. Но при этом, в случае провала, должна быть возможность «делегировать» проблему на кого-нибудь другого.
Правильный ответ: Postgres
Правда, в этом случае у нас на роли архитектора лояльный разработчик, поэтому выбор не оптимальный – MongoDB .)

2. Техническая культура
Нужна казуальная согласованность. Нужно учесть требования по надежности, 0downtime, производительность.
MongoDB не дает нужной консистентности.
Не попробовать ли CoackroachDB?
По ходу внедрения освоим и воспитаем специалистов по поддержке.

3. Сервисный подход
Служба эксплуатации ни за что не осилит поддержку CoackroachDB. Накоплен опыт по использованию Postgres.
Postgres + Patroni.
Достойный компромисс при отсутствии вариантов.

#КорпоративнаяКультура
👍2
Прямоугольники и стрелочки
Архитектор и корпоративная культура Когда-то на курсах по управлению нам рассказывали, что существует три типа корпоративной культуры: 1. Административная (она же бюрократическая), в которой решения обусловлены требованиями начальника. Девиз: «Я начальник…
Мне подсказывают, что есть еще одна культура - мобилизационная.
Здесь правят военные, подчиняясь понятию чести и слову Надо.

Возможно так. Сам не сталкивался.

Вернее слышал как проходит приемка на объектах ВПК (работал там консультантом).
Предполагаю, что есть и другие "правильные" военные.
👎1🤔1
Текущая и целевая архитектуры

Ранее я активно упоминал два вида архитектур: текущею и целевую.
Опишу их подробнее.

1. Текущая (As Is). Фиксирует результат. Может быть снята с уже реализованной системы.
Отнюдь не только структура. Сюда относятся также решения и резоны, по которым эта структура формировалась.
В следствии этого автоматическое формирование описания As Is архитектуры весьма проблематично. Требуется пообщаться с автором или разработчиком, посвященным в детали.
Архитектуру As Is обоснования по которой утрачены часто называют «Унаследованной» (Legacy)
Перед тем как работать с унаследованной системой её необходимо осмыслить, т.е. попытаться понять причины ее формирования.
Без этого получаем «вялотекущую» архитектуру.

2. Целевая (Target)
Целевая архитектура показывает как должно быть. Мне нравится размазывать целевую архитектуру во времени (подход 4D, https://news.1rj.ru/str/rect_arrow/101), формируя представления на ближайшие этапы реализации и итоговое представление, как недостижимую цель.
Замечу, что в процессе построения решения я использую и другие типы целевых архитектур. Вот они:

2.1. Базовая архитектура
Так как я начинаю формировать архитектурное решение с поиска противоречий, мне нужно определить, чему противоречат новые требования.
Можно попытаться «примерить» новый функционал на текущую архитектуру, но это не всегда удается. В текущей архитектуре может не оказаться подходящих структур.
В этом случае я выбираю простейшее (самое дешевое) решение (например, rpc-http сервис + Postges) и примеряюсь к нему.
Выявленные противоречия (чаще всего по NFR) дают мне первый список архитектурных задач.
Базовое решение обычно сразу же привязывают к текущему/выбранному архитектурному стилю.

2.2. Идеальная архитектура
Получив список задач и требований, я могу построить идеальное решение, то есть решение без учета ограничений.
Как бы выглядела архитектура если бы меня не сдерживали бюджет и технологические ограничения.
Часто на этом этапе я не выбираю готовые продукты (те же БД), а формирую представления продукта, который идеально бы решил поставленную задачу.
Идеальная архитектура дает мне вектор. И я стараюсь не залочить путь к этому решению.

2.3. Собственно целевая архитектура
Опускаясь с неба на землю, я начинаю натягивать на идеальную архитектуру имеющиеся ограничения.
Здесь слишком дорого. Здесь команда выставляет слишком большие сроки. Это технически нереализуемо (пока), а это противоречит имеющимся интерфейсам.

Уродливый результат компромиссов я и выдаю за целевую архитектуру )

#ЦелеваяАрхитектура #ТекущаяАрхитектура
👍2🤔1😢1
Целевые архитектуры в различных культурах

Продолжу тему.

Рассмотрим, до какого уровня целевой архитектуры доходят в различных корпоративных культурах.

1. Административная культура принимает базовую архитектуру. Нефункциональные требования не выявляются. Производительность, доступность, безопасность поддерживаются только в том случае, если они явно заказаны.
По умолчанию предполагается, что система и так хороша.
Риски не воспринимаются. Архитектор должен не озвучивать проблемы, а решать их, притом в рамках заранее оговоренного бюджета.
Менеджер уверен, что любой инцидент можно решить закрытием тех. долга на уровне разработчиков.
Если же архитектурные проблемы перебивают пользу, формируем новую версию системы.
2. Техническая культура тяготеет к идеальной архитектуре. Принимаются лишь самые существенные ограничения. Например, предельные сроки разработки. Но и их зачастую не соблюдают.
Совершенный продукт может быть бесполезен по соотношению прибыли к затратам. Дорогущий монстр. И хорошо если талантливый архитектор отработал на пользу. Иначе вундерваффе.
3. Сервисный подход - это компромисс. Обычно это решение худо-бедно попадает в требования и в общем случае, хоть и раздражает, но вполне удовлетворяет стейкхолдеров. Технический специалист может признать компромиссное решение безобразным, но работающим.
Главное чтобы всем стейкхолдерам результат не нравился в равной степени )

Резюмируя:
1. Административная культура хорошо справляется с решением типовых задач. Технически сложные системы придется многократно перекраивать.
2. Техническая культура хороша для решения сложных и "нерешаемых" задач. Условия успеха - безграничное финансирование и гениальный проектировщик
3. Сервисный подход - хорошее соотношение цены и качества, при вечно недовольном архитекторе )
🔥2👍1