Книжный куб
14.2K subscribers
2.87K photos
6 videos
6 files
2.19K links
Рекомендации интересных книг, статей и выступлений от Александра Поломодова (@apolomodov), технического директора и эксперта в архитектуре (no ads in channel)
Download Telegram
Продолжаю делиться своими мыслями насчет книги "Learning DDD". Вчера я дописал обзор на ту часть, где Влад Хононов рассказывал про связь DDD с микросервисами.
Эта часть мне особенно понравилась, так как я помню свои вопросы насчет того, как определять их границы. Особенно это было актуально после прочтения книги Сэма Ньюмана “Building Microservice”, после которой эти вопросы и остались. На часть вопросов Сэм ответил в книге “Monolith To Microservices”, но объяснения Влада мне понравились больше:)

Подробнее в обзоре https://bit.ly/learnDDD2

#SoftwareArchitecture #Microservices #Architecture #ExternalReview #DDD
👍13
Сегодня я решил вспомнить про очередную книжку по архитектуре программного обеспечения “Microservice Patterns and Best Practices” за авторством Vinicius Feitosa Pacheco.
Книжку я прочел несколько лет назад и она показалась мне интересной и с практическим уклоном, но это немного не мой профиль. Я люблю концепции и теории, а автор пошел от сохи:)
В итоге при чтении книги автор показывает построение микросервисной архитектуры для новостного портала и одновременно
- знакомит читателей как с архитектурными концепциями и паттернами
- так и дает им написать код на python и go
- сконфигурировать nginx
- написать docker файлы
- настроить docker compose и т.д.

А я люблю читать концепции, хотя ясно, что дьявол кроется в деталях, но явно не в настолько простых:)
Подробнее про концепции из этой книги можн прочитать в моем обзоре https://bit.ly/MPatternsBookRev

#Architecture #SoftwareArchitecture #Microservices #Patterns #DistributedSystems
👍5
Периодически, когда я ругаю перевод издательства Питер, мне говорят, что с переводом все ок и я просто придираюсь.
Поэтому я сегодня решил вспомнить про книгу "Микросервисы. Паттерны разработки и рефакторинга" за авторством Криса Ричардсона, которая у меня есть в бумаге в формате вандального перевода издательства Питер. Я не понял чем Крис так насолил переводчикам , но в русской версии семантика некоторых утверждений автора была прямо инвертирована, например, отправитель командных сообщений назывался стороной, запрашивающей командные сообщения:) Другие примеры "крутого" перевода в приложенных к посту изобраениях.

Если возвращаться к самой книге, то я рекомендую книгу к прочтению, но в английской версии: "Microservices Patterns"

Отдельно отмечу плюсы и минусы книги
+ автор очень хорошо структурировал контент.
- некоторые главы у него получились слишком занудно и я смог их прочитать только на силе воли:)

#Architecture #SoftwareArchitecture #Patterns #Microservices
👍3😢2😁1
AWS re:Invent 2022 - Keynote with Dr. Werner Vogels

Интересное выступление CTO Amazon.com, которое начинается с антуража матрицы и заканчивается призывом делать симуляции всего вокруг.
А внутри двухчасового выступления Верненр Фогель, в футболке с лямбда на груди, рассказывает об асинхронном мире вокруг и преимуществах создания асинхронных систем, которые учитывают это.
Он говорит про concurrency и parallelism и приводит примеры из дизайна распределенных систем, а точнее принципов, по которым было построено AWS S3 в свое время.
Рассказывает про эволюцию архитектуры самого Amazon через стадии Monolith -> SOA -> Microservices -> Shared Services
Вернер дает ссылку на документ 1998 года, который назывался Amazon Distributed Computing Manifesto и говорит, что уже почти 25 лет назад инженеры Amazon думали про наш распределенный мир. И если заглянуть в статью, то видно, что именно этот подход привел к тому, что в 2004 году он пообщавшись с ними стал их CTO на следующие 18 лет.
Дальше он рассказывает про работу workflow рассказывает про сервисы AWS Step Functions и AWS Event Bridge и их расширения.
И после этого он переходит к песне про Event Driven Architecture (EDA) про loosely coupled architecture, которое позволяет создавать системы, которые могут эволюционировать.
И дальше достаточно долго речь идет про то, как делать EDA на иструментах от AWS.
Интересно, что в процессе автор рассказывает про инструмент Amazon Builders Library, который является аналогом книги GoF про паттерны, но только от инженеров AWS и в контексте инструментов от AWS (надо будет почитать статьи оттуда).
Дальше автор анонсирует Amazon Code Catalyst для ускорения создания приложений для AWS, где объединен ваш код, CI/CD, issues и так далее.
Ну и заканчивается все переходом к 3D и моделированию окружающего мира, что закольцовывает выступление, которое начиналось с симуляции аля матрица.

#Architecture #SoftwareArchitecture #AWS #Patterns #EDA #Microservices #Technology #Conference
👍9🤔21🔥1
Just-in-time Architecture • Macklin Hartley • YOW! 2022 (Рубрика #Architecture)

Хорошее выступление про архитектуру, где автор рассказывает простую мысль о том, что нет универсальной архитектуры, которая подойдет всем. Выступление строится на примере системы для покупки пользователями картинок-аватаров, а в качестве наглядной метафоры используется работа кофейни. В этой метафоре кофейна постепенно растет и ей треубется эволюционировать, а в ходе этой эволюции автор успевает пройти по темам
1) Старта с монолита, а дальше переход на microservices, что становится скорее distributed monolith с availability coumpling
2) Потом распределенный монолит автор чинит с использованием event-driven architecture, где рассматривается два типа событий: event notification и event carried state transfer и 3 варианта генерации событий: transaction logs, transaction outbox pattern, event sourcing
3) И под конец автор доходит до communication patterns, где рассмотрели хореографию и оркестрацию. В хореографии события используются для общения сервисов между собой, децентрализованно и элегантно, но сложно для понимания что именно происходит, а в оркестрации у нас централизованный workflow

#Conference #Architecture #SoftwareArchitecture #SystemDesign #Software #DistributedSystems
👍114🔥1
Обзор white paper "Lifting the veil on Meta's microservice architecture: Analyses of topology and request workflows"

В середине июля вышла интересная статья про микросервисную архитектуру от компании, что делает крупнейшую социальную сеть. Авторами статьи были Darby Huye (Tufts University, Meta), Yuri Shkuro (Meta) и Raja R. Sambasivan (Tufts University) и они сфокусировались на недооцененных характеристиках микросервисной архитектуры, которые важны для создания микросервисных инструментов и моделирования топологий микросервисов. В итоге, они рассказывают о том, как эта архитектура и топология выглядит внутри одной из Bigtech компаний. В самом документе 15 страниц, разделенных на 8 частей, представленных ниже. Кстати, в разделе references представлены 46 статей, часть из которых неплохо пересекаются с темой этой статьи (особенно две статьи про анализ микросервисной архитектуры ByteDance и Alibaba).

Подробности в статье в моем блоге.

#Microservices #Architecture #SoftwareArchitecture #WhitePaper #SoftwareDevelopment #Software #SystemDesign #DistributedSystems
👍8🔥43
Architecture Modernization: Aligning Software, Strategy, and Structure - Nick Tune

Интересное выступление про модернизацию софта в крупных компаниях, которые сталкиваются со сложностями в legacy системах:) У таких компаний зачастую есть крутые преимущества: доля рынка, репутация бренда и лояльность клиентов. Поэтому есть смысл модернизировать системы и автор говорит с определения
Architecture Modernization is about converting architecture from a competitive disadvantage to a competitive advantage.

И дальше его подход содержит три пункта
1) Architecting for flow - проектирование для улучшения потока создания ценности и взаимосвязи изменений
2) 5 Essential tools for architecture modernization - инструменты для модернизации архитектуры
3) Kickstarting and enabling architecture modernization - как начать модернизацию

В первой части автор говорит про stream-aligned команды из team topologies, которые формируют вокруг value-stream. Отдельно надо отметить, что иногда между системами команд бывают зависимости, которые влияют на flow. Поэтому все и мечтают создавать автономные команды (про это было много в докладе, о котором я рассказывал вчера):)

Дальше спикер говорит про fullstack модернизацию по всем уровням
- User interface - modernize the UI to enable a better UX improving user happiness and productivity
- Software - modernize tech and alignment to domain model for code that is easier to understand and evolve.
- Domain model (conceptual) - modernize the conceptual domain model, creating a better shared understanding and language improving collaboration & innovation
- Domain - modernize the domain by adding new and better capabilities which create new business and customer value.


Дальше речь идет про инструменты:
1) Активное слушание - оно помогает понять бизнес-цели и проблемы заинтересованных сторон
2) Impact mapping - в этом подходе создается связка: strategic business objectives - actor - impact - deliverables. Подробнее можно почитать в книге "Impact mapping", про которую я писал раньше
3) Wardley mapping - здесь компоненты архитектуры связаны с цепочкой создания ценности, а также стадиями жизненного цикла продукта. Интересная концепция, про которую я узнал впервые и которую можно использовать для определения текущего состояния и эволюции компонентов архитектуры.
4) Event storming - это интересный подход lkz проведения воркшопов для коллаборативного изучения сложного бизнес домена ... Подробнее можно прочитать в моем посте
5) Modernization strategy selector - график для обсуждения вариантов модернизации через раскладывание по осям platform modernization и product, domain, software modernization
В конце перечисления автор еще вспоминает CodeScene - инструмент для поведенческого анализа кода.

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

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

#Processes #Management #Performance #Engineering #Software #SoftwareDevelopment
5👍3🔥2
Modular Monoliths and Other Facepalms - Kevlin Henney - NDC London 2026 (Рубрика #Architecture)

Интересное видео Kevlin Henney, где он выступает евангелистом монолитов, модульных монолитов:) Если сокращать, то он говорит, что проблема была не в монолитах, а в запутанных зависимостях и размытых границах. Союственно, микросервисы не лечат плохую декомпозицию. Но они просто делают ошибки дороже (сеть, консистентность, наблюдаемость, эксплуатация). Забавно, что свой первый монолит в Т-Банке я начал пилить как раз для того, чтобы довести эту стоимость до предела и перейти Рубикон (первая бекенд система, что мне досталась была сделана фронтедерами для фронтендеров и напоминала лапшу - по-другому выставить границы было нельзя).Но если возвращаться к рассказу Кевлина, то его совет в том, чтобы начинать с хорошо структурированного модульного монолита → и только потом (если есть устойчивые драйверы) выделяйте сервисы.

Отдельно мне понравилась история вокруг эволюции подходов, так как я сам люблю так выстраивать сторителлинг для своих докладов
- 1972 - Дэвид Пэрнас: критерии декомпозиции + information hiding (прячем то, что часто меняется)
- 1974 - Лисков и Зиллс: abstract data types (ADT), работа с абстракциями данных
- 1997 - Foote & Yoder: антипаттерн Big Ball of Mud (система "уползает" в комок без дисциплины)
- 2014 - Fowler/Lewis: микросервисы как набор independently deployable сервисов (а не "мелкие модули по сети")
- 2014+ - Simon Brown: предупреждение про distributed big ball of mud

Если говорить про инсайты, то они примерно такие
🧩 Модульность - свойство кода и зависимостей, а не инфраструктуры

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

🕸 Архитектура проявляется в зависимостях сильнее, чем в диаграммах
Значит архитектуру можно (и нужно) делать проверяемой: правила → CI → "ломаем билд" на нарушениях.

🧩 “Монолит” становится проблемой, когда он превращается в tangled monolith
То есть не "один деплой" плохо, а переплетённость (циклы, обход границ, случайные импорты, нарушение слоёв).

🤑 Микросервисы - это инвестиция (техническая + организационная).
Они оправданы, когда реально нужно независимо деплоить, изолировать изменения, масштабировать по частям, разводить ответственность команд.
Если драйверов нет - вы покупаете overhead без выигрыша.

Для разработчиков следуют такие практические выводы
- Цель: сделать “границы” реальными, а не декоративными
Модуль = единица эволюции, а не папка. Есть публичный API, есть скрытая внутрянка, есть запреты на “обход”.
- Направление зависимостей важнее названий слоёв
Следите за циклами, “обратными” ссылками, протеканием инфраструктуры в домен.

Для технических руководителей следуют такие практические выводы
Архитектурные ярлыки не заменяют управления границами. Если мотивация “давайте микросервисы, чтобы код разделился сам” - это красный флаг.
Сначала: границы, ownership, правила, ревью‑политики, архитектурные тесты. Микросервисы по определению увеличивают:
- Число deploy‑единиц
- Количество коммуникаций
- Требования к CI/CD, observability, security, data contracts

Стратегия, которая обычно работает лучше:
- Modular monolith - дефолт
- Microservices - осознанная инвестиция при устойчивых драйверах

P.S.
Как обычно, расширенная версия есть на system-design.space.

#Architecture #Software #DistributedSystems #Engineering #Management
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2111💯5👍3