
Архитектор распределённых систем. Автор курса и тг-канала: https://nitter.gq/t.co/rl1jh1QwtB | CTO и соучредитель @byndyusoft | ПК #CodeFest и #TechLeadConf | КМС по ♟️
Челябинск → Санкт-Петербург
Joined December 2008
- Tweets3.9K
- Following0
- Followers1.5K
- Likes0
Pinned Tweet
Твит для закрепа. Несмотря на то, что мой курс по проектированию микросервисной архитектуре теперь можно купить отдельно (t.me/rsa_enc/330), почти все теоретические материалы есть и будут в открытом доступе. Ссылки в треде:
Горы 2024.
Питер → Стамбул → Питер → Челябинск → Питер → Москва → Питер → Сколково → Питер → Москва → Питер → Казань → Иннополис → Казань → Питер → Новосибирск → Екатеринбург → Питер → Челябинск → Питер → Москва → Питер → Терскол (Эльбрус) → Питер → Выборг → Питер → Тбилиси → Питер → Москва → Питер → Челябинск (Таганай) → Питер → Москва → Питер → Алматы → Питер → Сколково → Питер → Пермь → Питер → Челябинск (Тургояк) → Питер
перелетов: 25
поездов: 12
А следующий перелёт уже послезавтра 🛫 – и снова горы – at Saint Petersburg, Russia
1
10
608
Спасибо вам! За все сердечки и огонёчки и слова 🥰
Это меня драйвит и заряжает энергией двигаться дальше! 💙 – at Saint Petersburg, Russia
1
298
Поздравление Сергея Борисовича Переслегина с новым годом.
Вдвойне приятно, что я лично присутствовал на упоминаемой деньрожденческой лекции "Россия. Предрассветные годы"
youtu.be/uSH61pmk1xM
Рутуб: rutube.ru/video/private/0061… – at Saint Petersburg, Russia
2
291
Всех с наступающим! Всех жду 31 мая в Новосибе! Мы готовим нечто воистину особенное! 🚀 #codefest – at Saint Petersburg, Russia
Разбор моего телеграм-канала "Архитектура распределённых систем" (t.me/rsa_enc) от Дениса Бескова: t.me/denis_beskov/346 ❤️
1
3
465
Про документацию, неоднозначность термина "as Code" или вопросы от подписчиков.
> Руслан, привет!) а подскажи пож-та, может есть у тебя ссылочки на шаблоны/примеры/лучшие практики по документированию архитектуры и инфраструктуры системы
Вопросы документирования и особенно актуальности документации — на мой взгляд, одни из самых больных в нашей с вами айтишечке. Но, если дело касается сущностей, которые мы можем описать кодом (или как код) — всё становится сильно проще.
1️⃣ Лучшая документация — это всегда актуальная документация. Такой вариант возможен только в двух случаях:
🌹 при автоматической генерации документации (описания) из реального положения дел (для исполняемого кода API таким примером будет Swagger)
🌹 или же наоборот — генерации "реальности" из описания (в случае Infrastructure as Code примером может быть разворачивание инфраструктуры из её описания в yaml-формате).
2️⃣ Если лучший вариант нам недоступен, то хорошо бы нам хотя бы иметь автоматический сигнал о том, что наша документация разъехалась с реальностью (или наоборот). 🚨
Источником такого сигнала должны стать тесты — мы их можем и будем запускать при любом изменении и системы (реальности), и её описания. И в случае расхождения тесты должны падать (блокируя тем самым дальнейшее попадание порождающих несоответствие изменений в основную ветку/новый релиз и т.д.).
Базовое свойство тестов — они должны быть воспроизводимы и независимы от внешних условий. Именно поэтому ручные проверки не попадают в эту категорию (регламентированная ручная проверка на актуальность документации при каждом тестировании не работает, т.к. имеет в основе своей человеческий фактор).
3️⃣ а вот третьего, на мой взгляд, не дано. Либо у вас есть автодокументация, либо есть автоматизированные тесты, проверяющие актуальность. В противном случае — всё, ваша документация рано или поздно в бо́льшей или меньшей степени, но станет неактуальной. Без вариантов. И никакими оффлайн-процессами или регламентами это не решить.
Есть, конечно, ещё один граничный случай — это когда в проект никаких изменений не вносится.. Но это означает, что проект мёртв, и этот случай нам неинтересен ⚰️
Итак, возвращаясь к архитектуре и инфраструктуре.
🌺 Начнём с инфры. Если у вас реализован подход Infrastructure as Code (IaC) и всё разворачивается из кода (описания) инфры — то уже всё хорошо. По сути ваши yaml или другие файлы и являются документацией (сюда попадает не только статичная инфра, но и различная инфраструктурная логика: мониторинг и правила алертинга, например). А если хочется иметь документацию по инфраструктуре в более удобном и наглядном виде — всегда можно написать различные генерилки/визуализаторы из yaml и json в красивый текст и схемки (или даже интерактивный, как у Swagger). А возможно, такие инструменты уже и существуют (накидайте, плиз, если да).
🌺 С архитектурой всё чуть сложнее. Подход Architecture as Code (AaC) в отличие от IaC не предполагает, что по описанной в коде архитектуре всё будет разворачиваться и работать согласно ей. В большинстве случаев предполагается лишь описание архитектурных схем кодом из которого генерируется картинка, а не просто картинкой. В таком случае Architecture as Code на самом деле всего-то навсего Architecture Scheme as Code ☹️. Т.е. не сама ИТ-архитектура, а лишь опять же её документация в виде схемки или нескольких.
Тут некоторые читатели могут задаться вопросом — а что же такое ИТ-архитектура, если не просто схемка или набор схемок?
Готовясь к одному из своих докладов, я гуглил разные определения ИТ-архитектуры. И к своему удивлению нашел одно из лучших, на мой взгляд, в стандарте (ANSI/IEEE Std 1471-2000):
«Фундаментальная организация системы, реализованная в её компонентах, их взаимоотношениях друг с другом и средой и принципах, определяющих её конструкцию и развитие»
Т.е. архитектура — это даже больше чем просто "описание реальности" как IaC, но и принципы, определяющие в том числе и её развитие (т.е. будущее). Но сейчас не об этом... Про то, что такое архитектура надо будет как-нибудь отдельный пост написать 🙂 (и это на 4й-то год существования моего тг-канала (t.me/rsa_enc) со словом "архитектура" в названии 😅😆 ).
Скрепя сердце приравняв архитектуру к документации, вернемся к вопросу актуальности этой документации. Описав архитектурные схемки кодом (т.е. применив AaC) мы можем пойти описанными выше путями в плане автодокументации или тестов на актуальность, но для этого нужны ещё инструменты над AaC (см. ниже). Т.е. всё-таки as Code нам помогает, хоть и в меньшей степени, чем в IaC, где as Code уже гарантирует соответствие реальности и описанию (коду).
Вот так, размышляя о документации, мы пришли к выводу о различии подходов, называемых as Code в инфраструктуре и архитектуре 🥲.
А теперь обещанные ссылки на мои инструменты, если кто ещё не видел.
Разделы Open-Source репозитория (github.com/Byndyusoft/aact) с инструментами и примерами:
- автогенерация архитектуры: github.com/byndyusoft/aact?t…
- тесты на актуальность архитектуры: github.com/byndyusoft/aact?t…
Статья про покрытие тестами: habr.com/ru/articles/800205/
Общий доклад про все инструменты: rutube.ru/video/8ed42e502d51…
Оффтоп. И всё-таки, согласно в том числе и определению из стандарта, архитектура — это в том числе и принципы на которых она построена, а один из способов описания таких принципов (ещё и сразу же автоматизирующий проверку их выполнения) — это тесты на соблюдение архитектурных принципов: github.com/byndyusoft/aact?t…
Всё. Теперь точно всё )
❤️
А теперь и в виде статьи на Хабре: habr.com/ru/articles/866198/
➕'аните, если считаете полезным/интересным 😊
1
228
Так, мне уже не хватает максимальной длины поста в телеграм-канале (вроде бы 4096 символов). А вы говорите Твиттер вести... 😅😂
Впервые публично рассказал про выведенный мной Принцип каскадного снижения связанности! 🚀
Как и обещал — делюсь слайдами (docs.google.com/presentation…), а также еще полезными материалами, на которые ссылался в рамках необыкновенно продолжительной сессии вопросов и ответов в экспертной зоне:
⭐️ Гранулярность микросервисов. Статья: habr.com/ru/companies/oleg-b… и видео доклада: youtube.com/watch?v=x1xqlXny…
⭐️ Лаконичное и понятное описание паттернов проектирования микросервисной архитектуры: microservices.io/
⭐️ Ссылки на телеграм-каналы Максима Смирнова и Максима Юнусова, а также на архитектурный хакатон публиковал ранее: t.me/rsa_enc/306
⭐️ Канал архитектурных кат: t.me/arch_katas_russia
Краткое описание доклада: nitter.gq/razonrus/status/185098…
Часто ли вы слышите о новом принципе проектирования IT-архитектуры? А об обновлении классических принципов? Попробую вас удивить и привнести что-то новое. 😎
У вас никогда не вызывало недоумения, что связанность (coupling) и прочность (или связность, cohesion) — это про примерно одно и то же, но одно — хорошо, а другое — почему-то плохо?
Компоненты в большой сложной системе вложены друг в друга, и то, что являлось связанностью (скорее отрицательной характеристикой) на одном уровне — становится прочностью на следующем (т.к. становится внутренней связью компонента, а не внешней)!
Даже если взять микросервис, как единицу гранулярности — слоёв над ним может быть несколько:
⏺ограниченный контекст микросервисов внутри продукта/системы;
⏺продукт/система;
⏺ландшафт предприятия (enterprise архитектура).
А в больших продуктах и компаниях системы могут делиться на подсистемы или проекты, enterprise уровень разделяется на архитектуру домена и междоменный ландшафт, а ещё добавляется слой или слои платформизации...
Сложность систем и компаний растёт, а стандартный приём борьбы со сложностью — это увеличение слоёв абстракции. Таким образом компонентизация архитектуры — это нормальный процесс, где количество уровней ничем не ограничивается.
При таком раскладе уже недостаточно стандартного разделения на архитектуру и архитекторов решений и предприятия (solution и enterprise), либо наоборот — грань этого разделения стирается.
Логичным выводом будет переход от бинарного деления на связанность и прочность к цепочке зависимостей:
Микросервисы → Контексты микросервисов → Продукты → Архитектура предприятия.
Звеньев в такой цепочке на самом деле может быть сколько угодно. И для таких цепочек сформулируем новое правило взамен низкой связанности и высокой прочности:
Мера зависимостей между элементами каждого последующего уровня должна быть не выше, чем у предыдущего.
Как вам идея? Что думаете, про новый предлагаемый мной новый принцип (или правило) проектирования архитектур? Пока назвал его принцип каскадного падения связанности.
Более подробно, с примерами и вариантами реализации автоматического отслеживания соблюдения правила расскажу в ноябре на CodeTalks в Казахстане и позже оформлю в виде статьи.
2024.codetalks.kz/lecture/99
1
290
А вот и видео моего выступления о каскадном снижении связанности! 🔥
Подписывайтесь и ставьте 👍 ))
🍿 Ютуб: youtube.com/watch?v=F5LcLIwi…
🍿 Рутуб: rutube.ru/video/650d974e0ab0…
Описание: t.me/rsa_enc/338
Ссылка на слайды 👇
Впервые публично рассказал про выведенный мной Принцип каскадного снижения связанности! 🚀
Как и обещал — делюсь слайдами (docs.google.com/presentation…), а также еще полезными материалами, на которые ссылался в рамках необыкновенно продолжительной сессии вопросов и ответов в экспертной зоне:
⭐️ Гранулярность микросервисов. Статья: habr.com/ru/companies/oleg-b… и видео доклада: youtube.com/watch?v=x1xqlXny…
⭐️ Лаконичное и понятное описание паттернов проектирования микросервисной архитектуры: microservices.io/
⭐️ Ссылки на телеграм-каналы Максима Смирнова и Максима Юнусова, а также на архитектурный хакатон публиковал ранее: t.me/rsa_enc/306
⭐️ Канал архитектурных кат: t.me/arch_katas_russia
3
372















