Руслан Сафин ♟️ (@razonrus) header
Руслан Сафин ♟️ (@razonrus) profile picture

Архитектор распределённых систем. Автор курса и тг-канала: https://nitter.gq/t.co/rl1jh1QwtB | CTO и соучредитель @byndyusoft | ПК #CodeFest и #TechLeadConf | КМС по ♟️

Челябинск → Санкт-Петербург
Joined December 2008
Photo by Руслан Сафин ♟️ (@razonrus)Photo by Руслан Сафин ♟️ (@razonrus)Photo by Руслан Сафин ♟️ (@razonrus)Photo by Руслан Сафин ♟️ (@razonrus)Photo by Руслан Сафин ♟️ (@razonrus)Photo by Руслан Сафин ♟️ (@razonrus)Photo by Руслан Сафин ♟️ (@razonrus)Photo by Руслан Сафин ♟️ (@razonrus)Photo by Руслан Сафин ♟️ (@razonrus)Photo by Руслан Сафин ♟️ (@razonrus)
Твит для закрепа. Несмотря на то, что мой курс по проектированию микросервисной архитектуре теперь можно купить отдельно (t.me/rsa_enc/330), почти все теоретические материалы есть и будут в открытом доступе. Ссылки в треде:
Ссылки на опубликованные в общем доступы материалы, на которых основан мой авторский курс по проектированию микросервисной архитектуре. Тред ⏬
1
14
4,512
Горы 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
Подвёл (😉) итоги года! 🥂 vc.ru/dev/1729640-2024-lichn…
6
296
Всех с наступающим! Всех жду 31 мая в Новосибе! Мы готовим нечто воистину особенное! 🚀 #codefest – at Saint Petersburg, Russia
1
4
633
А есть тут подписчики моего канала? Какие тоже есть советы, рекомендации, пожелания? ☺️ – at Chelyabinsk, Russia
1
272
В Питер пришел снег – at Saint Petersburg, Russia
8
535
Как бы мы не были завалены работой, мы всегда сможем её развалить
1
6
416
Отчётный ролик CodeTalks 2024: youtu.be/l0jXvHJPGPM?si=gfLR…
4
321
Про документацию, неоднозначность термина "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… Всё. Теперь точно всё ) ❤️
2
1
6
804
ахахах )
1
1
8
556
Так, мне уже не хватает максимальной длины поста в телеграм-канале (вроде бы 4096 символов). А вы говорите Твиттер вести... 😅😂
1
1
2
786
Впервые публично рассказал про выведенный мной Принцип каскадного снижения связанности! 🚀 Как и обещал — делюсь слайдами (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
1
1
2
15
1,531
Краткое описание доклада: 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
А есть кто из Перми? Чем можно заняться, что посмотреть? Буду с завтрашнего дня по субботу
2
442
Текущее состояние: устав и загон
2
8
615