I Made Everything Loosely Coupled. Does My App Fall Apart? (Рубрика Architecture)
Это keynote выступление Gregor Hohpe было на goto конференции в рамках EDA Day (event-driven architecture). Сам Gregor Hohpe еще 20 лет назад написал книгу "Enterprise Integration Patterns" В рамках этого выступления Gregor обсуждает много вопросов:
- Делает интро в EDA
- Обсуждает роль архитектора и говорит, что они не просто рисуют красивые картинки, а скорее думают в определенном формате и рассказывает как выглядит "thinking like an architect": -- архитекторы делают скетчи, а не blueprints -- архитекторы видят больше размерностей с разных точек зрения -- архитекторы умеют менять масштаб рассмотрения абстракций (zoom in & zoom-out) -- архитекторы избегают абсолютных утверждений и различают оттенки серого (понимают как работают компромиссы ака tradeoffs)
- Переходит к обсуждению рисования boxes & lines и показывает почему важны именно стрелки, которые связывают boxes. Суть в том, что именно стрелки определяют как компоненты связаны между собой. Дальше автор рассматривает какие реально технологии могут лежать в основе boxes и какой у нас есть контроль над ними. А кроме того, как эти кубики матчатся на команды.
- Делает zoom in в обсуждение того, как рисуются линии в архитектуре. Что означает линия под капотом: data or control flow, interaction model, sync/async, polling, pub/sub or point-to-point и так далее. А дальше он дает совет о разделении вашего подхода к архитектуре от выбора конкретных технологий и продуктов, которые вы будете использовать для ее реализации
- А дальше наступает время обсуждения connection & coupling. В самом начале он дает свое определение coupling - "coupling is a measure of independent variability between connected systems", дальше говорит о том, что decoupling имеет свою цену и что это понятие не черно-белое, а многомерное. Здесь автор обсуждает вопросы использования buzzwords и принятия решений - условно, что дает loose coupling: -- limit change radius (at design time), что дает higher agility & velocity -- limit error radius (at runtime), что дает reliable, tolerant operations и дальше он рекламирует будущую книгу Влада Хононова "Balancing coupling in software design" и заключает, что "the appropriate level of (design-time) coupling depends on the level of control you have over the endpoints"
- Потом идете обсуждение messages & events. Тут автор вспоминает про свое определение messaging из упомянутой выше книги. А дальше переходит к тому, что events - это особый тип messages с определенной семантикой. Помимо events еще бывают commands и documents. Дальше автор вспоминает про семантику каналов, посредством которых происходит обмен сообщениями и событиями. Дальше обсуждается вопросы как матчится producers и cosumers, как организована логика в виде оркестрации или complex event processing
- Ну и в конце автор показывает как можно делать EDA системы в cloud стиле с использованием AWS CDK, где автор пишет не код приложения, а код интеграции и размышляет в тех терминах, что были описаны выше. И именно такое описание автор называет everything loosely coupled:)
#EDA #Conference #SoftwareArchitecture #Architecture #DistributedSystems #SystemDesign