Книжный куб
11.1K subscribers
2.66K photos
6 videos
3 files
1.96K links
Рекомендации интересных книг, статей и выступлений от Александра Поломодова (@apolomodov), технического директора и эксперта в архитектуре
Download Telegram
Генерация архитектурных схем и метаданных - Кирилл Ветчинкин - E-community 2023 (Рубрика #Architecture)

Интересный доклад от Кирилла, в котором он продолжает тему про архитектурный репозиторий, которую он поднял на ArchDays 2022. В этом продолжении идет речь о том, как сделать архитектурные диаграммы актуальными и основные мысли доклада следующие
- Кирилл начинает с постановки проблемы неактуальных схем и выделяет 4 момента:
-- По неактуальной схеме невозможно принимать решения
-- К неактуальной схеме низкое доверие у всех участников процесса разработки
-- Сложно анализировать состояние системы тем, кому это нужно делать (аудиторы, участники процесса разработки)
-- Такие схемы не помогают и во время operations - техподдержка и SRE не могут их эффективно использовать
- Для решения проблемы заводим архитектурный репозиторий, где с помощью C4 Model и подходов из DDD описываем свои сервисы (компоненты, из которых состоит наша система). Причем список компонентов должен вестись централизованно, чтобы мы могли их однозначно идентифицировать и переиспользовать внутри наших схем
- Для того, чтобы архитектурный репозиторий актуализировался автоматически нам требуется завязаться на наши конфигурационные данные о наших сервисах:
-- Описание самого сервиса - в Sber Market это app.toml (конфигурация в формате TOML). Кстати, данные из этого файла используются для пополнения каталога сервисов, что используется для описания в архрепо
-- Конфигурацию и зависимости сервиса - этот файл values.yaml используется для деплоя сервисов в production, поэтому он содержит актуальные параметры или сервис просто не будет работать как задумывалось в проде. Ну а для архитектуры можно использовать файлы из разных сервисов можно построить граф зависимостей для сервисов.
-- Описание базы данных - в Sber Market это structure.sql, который содержит схему базы данных и может использоваться для составления ER-диаграмм.

В итоге, построение архитектурных диаграмм выглядит примерно так:
- Чтение файлов app.toml, values.yaml, structure.sql
- Преобразование данных из файлов к объектной модели
- Построение графа взаимосвязей для разных сервисов
- Рендеринг схем для всех сервисов - внутри сервиса есть ER-диаграммы, а также container диаграммы, на которые подтягиваются как сервисы в которые мы стучимся, так и те, что ходят к нам (они подтягиваются из values.yaml потребителей)
- Сохранение схемы
- Отображение схемы

В общем и целом, именно такой подход мне кажется правильным движением в сторону архитектуры как код:
- Использование стандартного тулинга для документации архитектуры
- Сама информация о сервисах и их взаимосвязах не заполняется руками, а тянется из системы, что является источником истины и определяет как наши сервисы задеплоены в реальности
- Поверх накручиваются тесты для контроля архитектурной целостности, что гоняются в пайплайнах (fitness functions из книги "Building evolutionary architecture")

P.S.
На тему управления архитектурой уже было недавно несколько постов, которые тоже интересно почитать
- Архитектура как код - Роман Пионтик - ArchDays 2022
- Архитектурный репозиторий на базе GitLab и C4 Model для большой компании - Кирилл Ветчинкин - ArchDays 2022
- Материалы к моему докладу "Architecture at T-Bank: how we design our solutions"
- Раз архитектура — «as Code», почему бы её не покрыть тестами?!
- Проводим архитектурное ревью продуктовой фичи
- Опыт использования подхода «Архитектура как код» в ГК Самолет - Роман Пионтик, Валентин Козлов - ArchDays 2023

#SoftwareArchitecture #Architecture #SystemDesign #Software #SoftwareDevelopment #DistributedSystems
👍16🔥65
Архитектура приложения и ошибки проектирования - Рустам Ахметов - Joker 2022 (Рубрика #Architecure)

Интересный доклад от Рустама Ахметова на тему архитектуры того, как можно организовывать свой код приложений. Автор подошел к снаряду основательно и сделал обзор всех распространенных вариантов архитектуры, делая отсылки к оригинальным статьям, где про них в первый раз вспоминали. Собственно автор сначала говорит о том, что хорошая архитектура и структура кода помогает нам бороться со сложностью. А это значит, что новички на проекте, открыв IDE, легко смогуть понять как он устроен и как наносить пользу без долгого изучения, а как же тут принято раскладывать код по папкам:)

Основные мысли доклада следующие
- Horizontal Design - это привычная всем слоенная архитектура. Так писали код уже давно и там было обычно деление на presentation tier, app tier, database tier. Этот подход был доминирующим долгое время, он доминирует и сейчас, но постепенно он вобрал в себя плюсы из других подходов. Кстати, иногда tiers было больше трех:) Например, в 2003 году появилась книга "Domain-Driven Design" Рика Эванса и начал появляться еще отдельный doaimn layer
- Vertical design - этот подход появился еще в девяностые годы и нужен был для масштабирования команды, чтобы отдельные подкоманды могли автономно работать. В итоге, внутри монолитного приложения появлялись отдельные изолированные модули внутри приложения (модули делились по доменам или функциям). Это был прообраз микросервисов. Кстати, сейчас популярна становится vertical slice architecture, про которую я уже как-то рассказывал при разборе выступления "Designing for change with Vertical Slice Architecture - Chris Sainty" с NDC. Этот подход хорош для небольших приложений
- Hexagonal - в 2005 году эту архитектуру предложил Alistair Cockburn. Суть была в том, чтобы внешние абстракции хорошо уметь в отдельных модулях. Здесь новинка в том, чтобы изолировать бизнес-логику от внешних интеграциях. Но как это организовать на уровне кода Алистер не показал.
- Onion - луковичная архитектура была описана в 2008 году Jeffrey Palermo, который взял примерно ту же идею, что и hexagonal architecture, но показал как это сделать на уровне приложения и сделать не круговой, а разложить по слоям: отдельные папки для взаимодействий, отдельная папка для бизнес-логики, отдельная папка для объектной модели данных
- Clean Architecture - предложил в 2012 Uncle Bob (Robert Martin), который попытался объединить hexagonal и onion и отделить бизнес-логику от внешних зависимостей, куда вошли и фреймворки. В общем, идея стала популярной, но догматизм Uncle Bob мешает воспринимать его серьезно.

Дальше автор рассмотрел современную hexagonal architecture from Netflix, которая с точки зрения автора похожа скорее на современную слоенную архитектуру:) В жизни автор предлагает этот шестиугольник от Netflix превратить в слои примерно так: input -> adapter -> app core (service layer) -> adapter -> output.

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

#Architecture #SoftwareArchitecture #SystemDesign #Engineering
👍20🔥8💘2
Выезд на биостанцию Чашниково (Рубрика #Kids)

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

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

#ForKids #ForParents
👍268😁3
Бизнес-линии, сервис-линии и платформы @ T-Bank - Part I - (Рубрика #Management)

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

1) Бизнес-линии - характерной особенностью такого подразделения является продукт, который предоставляется внешним клиентам (продукт может быть разных типов: b2c, b2b, b2g, b2b2c, ...). У продукта обычно есть план развития и продуктовые метрики, а также PnL (profit and losses). Такое подразделение похоже на мини-компанию внутри большой компании. Примерами бизнес-линий могут быть: банк физлиц и отдельные продукты внутри (дебетовые, кредитные, ...), банк для юрлиц и отдельные продукты внутри (РКО, бухгалтерия, ...), инвестиции, страховая и так далее. В нашей схеме у таких бизнес-линий есть собственные бизнесовые руководители (CPO) и их ребята в виде продактов и бизнес-аналитиков, а также собственные технические руководители (CTO) и вся структура IT команд под ними. В идеальном случае бизнес и IT выровнены по целям и используют какой-то фреймворк для каскадирования целепологания по всем уровням.

2) Сервис-линии - такие подразделения оказывают некоторый сервис, который необходим бизнес-линиям для эффективной работы. Такой сервис часто проще строить централизованно и получать эфффект экономии на масштабе. Также очень важно, что в сервис-линиях часто концентрируется некоторый важный ресурс, который надо уметь использовать совместно и не допускать эффекта трагедии общих ресурсов (tragedy of the commons). Поэтому снаружи сервис-линия для бизнес-линий выглядит как некоторый интерфейс, куда они приходят за сервисом, который предоставляется с определенным уровнем качества. Внутри же сервис-линия часто состоит из какого-то набора специалистов, которые в рамках операционной деятельности оказывают сервис. Деятельность этих сециалистов автоматизируется командой разработки этой сервис-линии и на выходе получается большое количество инструментария, который позволяет оказывать сервис эффективнее. Для сервис линии важно уметь считать косты, которые аллоцируются на бизнес-линии, которым оказывается этот сервис. А вот profit часть здесь считается сложнее, но обычно есть матмодельки, которые показывают как его можно оценить:) Например, для онлайн-привлечения затратами являются траты на ФОТ сотрудников, рекламу, а прибыль считают из моделей NPV продукта, куда привлекают пользователей или LTV привлеченного клиента (этот подход посложнее NPV).

3) Платформы - такие подразделения создают продукты для внутренних пользователей. Характерной особенностью таких продуктов является возможность использования их в формате self-service. Самым ярким представителем таких платформ является IDP (internal developer platform), которая направлена на инженеров внутри компании, которые создают цифровые продукты. На тему IDP можно почитать whitepaper от CNCF и мой разбор в трех частях: 1, 2 и 3. Платформа бывает представлена в виде коллекции возможностей, что определены и представлены в соотоветствии с потребностями пользователей платформы. Здесь важно, что все эти возможности интегрированы вместе и предоставляют возможность выполнять типичные сценарии пользователей платформы. Помимо IDP бывают и более высокоуровневые платформы, которые предоставляют возможность использовать платформу в формате as a Service или развернуть для себя какую-то часть сервисов платформы, если коммунальная версия почему-то не подходит.

Интересно, что большая часть моей деятельности в Т-Банке связана с автоматизацией сервис-линий, а иногда и переход от сервис-линии к платформе. Дальше я поделюсь своими примерами из практики и покажу как тип подразделения диктует некоторую стратегию развития и цели для команд:)

#Management #Leadership #Software #Processes
👍34🔥81
MBA - Модуль "Стратегирование и самоактуализация/визионерство" - Part 1 - (Рубрика #Management)

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

Теперь немного тезисов о том, что мы вчера обсуждали
- Начали мы с изучения трех абстрарктных картин, из которых надо было выбрать ту, что нравится и дальше описать возникающую эмоцию и дать название картины
- Дальше мы перешли к обсуждению концепции базового доверия к миру Эрика Эриксона и поняли, что есть 2 диаметральных позиции "мир опасен" и "мир безопасен".
- Каждый человек находится где-то на этой шкале и это определяется генотипом (генами) и фенотипом (опытом, полученным в ходе развития). Важно понимать свое отношение к миру
- Следующей большой темой стали "нарративы" и как они влияют на людей. Ну и начали мы с рассмотрения гештальтов и разбора концепции Фредерика Перлза. Кстати, я вчера сразу заказал основную книгу Фреда "Внутри и снаружи помойного ведра"
- Для этого мы вспомнили про устройство мозга: базальные ядра, лимбическая система, кортекс. На пальцах это примерно как мозг ящерицы, коровы и человека.
- Собственно, незакрытые гештальты появляются, когда мы не прожили ситуацию до конца, например, подавили эмоции и на уровне кортекса решили, что все ок
- В итоге, гештальт по Фреду выглядит так 1) потребность, 2) пред-контакт, 3) контакт, 4) пост-контакт
- Дальше мы ушли обсуждать ценностное предложение, которое обычно мы создаем как организация. Здесь важно подумать про всех ключевых стейкхолдеров: акционеры, клиенты, сотрудники, общество. Если про кого-то забыть, то наша компания потенциально уязвима для конкурентов. Похожее ценностное предложение можно составить и на личном уровне, где надо ответить на вопросы про пользу для: ваших руководителей, сотрудников под вами, горизонтальных peers и дальше для семьи:) А мне особенно понравилась отсылка к взаимоотношениям в семье и вопросу жене вида "Дорогая, а какой у тебя со мной клиентский путь":)
- Дальше мы ушли в обсуждение создания стратегии сверху-вниз (портерианство) и снизу-вверх (ресурсники).
- Портерианство - это подход к стратегии от Майкла Портера, где он строит матрицу 2x2 и расссматривает размер рынка (узкий/широкий) и тип конкурентного преимущества (преимущество в затратах/преимущество в продукте). На выходе у нас получается 4 квадратика и три варианта стратегии:
-- дифференциация (лидерство в продукте) - это создание уникального продукта в своей отрасли
-- лидерство в издержках (ценовое лидерство) - это получение самого низкого уровня расходов (минимизация затрат на производство)
-- специализация (лидерство в нише) - это концентрация всех усилий фирмы на ограниченной группе покупателей
- Портерианство подходит для тех, у кого мир безопасен. Они могут планировать свою стратегию сверху-вниз и верить в то, что все пойдет по плану:) В больших корпорациях часто именно так подходят к формированию стратегии
- Ресурсный подход к построению стратегии придумал Джей Барни. Суть в том, что тут мы идем снизу от ресурсов и компетенций, к конкурентного преимуществу, привлекательной отрасли, а дальше построению стратегии и внедрению. Интересно, что этот подход привлекателен для людей, у которых мир опасен, так как таким образом они избегают конкуренции алого океана и могут найти свою стратегию голубого океана.

Продолжение в следующем посте.

#Management #Leadership #Processes #Strategy
👍18🔥85
MBA - Модуль "Стратегирование и самоактуализация/визионерство" - Part 2 - (Рубрика #Management)

Продолжая первый пост на тему модуля про стратегию, расскажу что мы еще успели обсудить вчера
- После портерианства и ресурсников мы вспомнили Нортона и Каплана и их систему сбаалансированных показателей (balanced scorecard). Эта концепция появилась в 90-х годах и позволила показывать бизнес с четырех сторонах: финансы, сотрудники, клиенты, организация/процессы
- Дальше мы продолжили говорить про нарративы, которые позволяют двигать вперед компании. В плане изучения нарративов можно почитать книгу Владимира Проппа "Морфология волшебной сказки", в которой он рассказывает о том, что все волшебные сказки по сути состоят из ограниченного набора паттернов, которые выстраиваются в определенном порядке. Это позволяет сказке доносить свой метафорический смысл до слушателей. Так и нарративы, которые мы создаем позволяют нам направлять стратегию как свою, так и людей в компании:) Кстати, про книгу Проппа я уже рассказывал и рекомендовал ее почитать
- После этого мы вспомнили про отношение к успеху в обществе и что оно определяется религией, а христианство (католичество и православие) не очень про успех, а больше про превозмогания и страдание. Но вот протестанство и старообрядчество в этом плане как раз отличаются от мейнстрима в сторону того, что там быть успешным это ок:)
- Дальше мы перешли к занятию с прямым стратегированием насчет своих планов на 5 и 10 лет. Суть была в том, чтобы выбрать 2 основных вызова, дальше выбрать 2 крайние альтернативы в этиъ вызовах, а потом построить матрицу 2x2 и нанести на нее расширяющиеся квадраты: меньший для текущего момента, побольше для будущего через 5 лет и самый большой для будущего через 10 лет. А дальше попробовать выбрать то, а где ты хочешь оказаться через 10 лет, потом понять а где ты будешь через 5 лет. А дальше проанализировать как должно выглядеть развитие событий для попадания в цель:)
- Интересно, что для того, чтобы так строить стратегию надо понимать, что восприятие успеха зависит от двух факторов: рационального и эмоционального. Про первый помнят многие, когда ставят себе амбициозные цели, а вот про эмоциональную часть забывают. В итоге, можно достичь всех атрибутов успеха, но оказаться глубоко несчастным человеком. То упражнение, что мы делали позволяло пойти не просто от рацион, но и попробовать подключить эмоциональное восприятие.
- Прикольно было обсудить как настраиваться на встречи через трио
-- Что у меня сейчас с телом, как себя чувствую (базальные ядра)?
-- Что у меня сейчас с эмоциями (лимбическая система)?
-- Какое у меня намерение сейчас (кортекс)?
- Интересно было посмотреть на стратегию со стороны работы терапии и коучинга, а также прошлого и будущего
-- Прошлое - с ним работают терапевты
-- Будущее - с ним работают коучи
-- Настоящее - а тут поляна для религии, когда настоящий момент стараются сделать более полным и растянуть в молитву или медитацию
- Финальная часть вчерашнего дня была посвящена самоакутализации и вопросам вида
-- Кто я?
-- Откуда я?
-- Куда мне?
-- Зачем все?
- И тут пригодился Эфроимсон и его импрессинг, который говорит про информационное воздействие, ранние и сверхранние впечатления детства, которые определяют мотивы и направление деятельности личности на всю жизнь, формируют интересы, шкалу ценностей, и при позитивном влиянии средовых факторов приводят к значительным достижениям в той или иной области. Круто, если удается вспомнить а что это были за воздействия - это позволяет понять почему нас так тянет к определенным видам деятельности.
- Ну и в конце мы сели писать эссе про то, как бы мы отмечали свой 70-летний юбилей: где, с кем, в какой обстановке, и так далее. Очень интересное упражнение для того, чтобы подумать над своим будущим.

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

#Management #Leadership #Processes #Strategy
👍143🔥3
Новый офис на Белорусской

После переезда нашей компании в новый офис у меня теперь новый вид из окна - теперь я вижу крупную железнодорожную станцию:) Этот вид отлично подошел бы Шелдону Куперу из "Теории Большого взрыва", который любил железнодорожный транспорт. Я конечно не Шелдон, но мне тоже иногда нравится постоять в кабинете и подумать, глядя на подъезжающие и отъезжающие поезда. Иногда после этого приходят интересные мысли, которые можно превратить в очередную схему на электронной доске или какой-то осмысленный текст в wiki/jira/почте/tg:)
😁1612👍10🔥10
Вовка в Тридевятом царстве. Сказки (Рубрика #Kids)

Недавно с женой купили младшему сыну забавную книгу сказок из нашего детства. Сказки в книге адаптированы под формат комиксов и туда входят три сказки разных трех авторов, а иллюстрации сделал художник А. Савченко
- «Вовка в Тридевятом царстве» В. Коростылёва - мультик 1965 года, в котором советский школьник попадает в сказочную страну лентяем, который не желает работать. Путешествую по сказке на его пути попадаются Двое из ларца, одинаковых с лица, которые за него все делают (даже едят), правда, делают это не очень хорошо. Именно это его заставляет взять работу в свои руки и начать работать руками по книге "Сделай сам". В общем, это хорошая мотивирующая сказка.
- «Петя и Красная Шапочка» В. Сутеева - мультик 1958 года, в котром советский школьник попадает в сказку про Красную шапочку. В этой альтернативной версии сказки Петя как пионер пытается спасти бабушку и внучку и предупреждает их о грозящей беде. Прячет бабушку, подменяет красную шапочку и сам бьется с волком до прихода охотников. В общем, волк оказывается повержен, а все мирные жители цели, а Петя всех спас:)
- «Коза-дереза» А. Тимофеевского - мультик по мотивам народной сказке про козу-манипуляторшу:) Купил дед козу на базаре, привел домой, а она дальше начала настраивать деда и бабку против других зверей: петуха и зайца, устраивая подставы. Но потом все вскрылось и дерезу вывели на чистую воду.

В общем, сказки сами по себе крутые, а книжка их упаковывает в тот формат, который удобно читать детям перед сном - по-крайней мере, наш самый маленький часто выбирает почитать перед сном "Вовку". Так что я могу рекомендовать эту книгу родителям:)

#ForKids #ForParents #Tales
👍1210🔥2
Спектакль "Мойдодыр" в театре "Домик Фанни Белл" (Рубрика #Culture)

Были сегодня с женой и младшим сыном на представлении по мотивам Мойдодыра Чуковского в этом небольшом театре, что расположен в саду Баумана. Этот театр дает камерные представления для маленьких зрителей, которые сидят на подушках прямо у сцены, а родители сидят на стульчиках сзади. Артисты, которых обычно не больше трех, выступают прямо перед детишками и активно взаимодействуют с ними: задают вопросы куда побежал немытый трубочист или даже помогают его умывать при помощи только что выданных губок. Параллельно самой истории детей учат правильно гигиене, а точнее как правильно умываться, а также рассказывают как делать разминку как крокодил, что неряху чуть не проглотил. В общем, если изначально я не мог понять как растянуть этот стих на целых полчаса, то побывав на представлении я все понял:)
Рекомендую этот театр для тех, у кого есть маленькие дети.

P.S.
Я уже рассказывал про этот театр "Домик Фанни Белл", когда говорил про спектакль "Щелкунчик", на котором мы были с детишками перед Новым Годом.

#Theater #ForKids #ForParents #Culture
👍106🔥1