Рисунок 9. Пример продуктовой микросервисной архитектуры
Надо отметить, что внедрение продуктового подхода в концепции микросервисной архитектуры упростило организацию атомарных единиц развертывания (под которыми понимаются уже не отдельные микросервисы, а микросервисные группы, отвечающие за автоматизацию продуктовой логики), но концепция интеграции осталась потенциально сложной. Также необходимо отметить сложность современных продуктов цифрового мира. Отдельные группы микросервисов могут (в случае автоматизации сложного продукта) представлять собой программные комплексы, соответствующие информационным системам предыдущего поколения. И в таком случае упомянутые выше проблемы, например, «распределенный монолит», могут остаться для них актуальными. Поэтому вторым аспектом, обеспечивающим революционность перехода к микросервисной архитектуре, стало внедрение в нее концепций событийно-ориентированной архитектуры.
Нельзя не упомянуть, что само понятие событийно-ориентированной архитектуры (event-driven architecture, EDA) и ее концепции старше, нежели микросервисная архитектура. В свое время методики EDA конкурировали с SOA за право считаться наиболее распространенными и применимыми при автоматизации различных областей человеческой деятельности, но не приобрели аналогичной популярности. Более того, зачастую концепция интеграции компонентов информационных систем и систем между собой посредством событий (основополагающая методика EDA) подменялась на практике обычным асинхронным обменом, представлявшим собой отложенные команды на исполнение. Можно сказать, что массовый переход к микросервисной архитектуре стал «вторым дыханием» для EDA. Решение таких задач как слабая связность компонентов между собой, снижение числа прямых интеграций, масштабируемость и надежность программных комплексов, независимость исполнения бизнес-функций, не терявших своей актуальности при переходе к микросервисной архитектуре обеспечивалось практиками EDA. Рассмотрим более подробно применение EDA в микросервисной архитектуре.
Основой взаимодействия микросервисов между собой является событие. Под событием понимается изменение состояния микросервиса, оказывающее влияние на состояние информационной системы или ИТ-ландшафта в целом. Соответственно, реализуемые микросервисы должны содержать прослушивающие процессы, позволяющие обеспечить реакцию на публикуемые события. Указанный подход позволяет минимизировать непосредственные взаимодействия микросервисов между собой (публикуемое