Вставлю свои 15 копеек.
Видится мне, что разница между оркестрацией и хореографией не столько техническая, сколько идеологическая. Вопрос в том, каков принцип организации взаимодействия между компонентами системы. Это тема столь же холиварная, как синхронное/асинхронное взаимодействие. Ничего не мешает организовать синхронное взаимодействие поверх синхронных протоколов обмена данными, так же как асинхронное взаимодействие поверх синхронных протоколов.
Исходя из этого, можно сказать, что оркестрация - это такое взаимодействие, в котором какой-то сервис играет роль оркестратора, т.е. синхронно или асинхронно получает данные от других сервисов и в ответ вызывает команды других сервисов. При этом ни источники данных, ни получатели команд, могут не знать о существовании этого оркестратора, они просто делают свою работу. И не важно, один тут оркестратор, или несколько - такое взаимодействие - это оркестрация.
Хореография же, в противовес этому явлению, заключается в том, что каждый компонент - участник хореографии делает свою часть работы в ответ на какие-то внешние по отношению к нему раздражители, выдает какие-то данные наружу (в шину, в топики и т.п.) и не особо осведомлен о том, что с ними потом будет происходить. При этом комбинация таких слабо связанных друг с другом поведений формирует некоторый общий полезный результат. Красивый пример оркестрации, не имеющий отношения к ИТ - это всякие ролики, когда что-то куда-то катится, за что-то задевает, ручка проворачивается, вода наливается и в итоге получается красиво. Или взять к примеру древнюю игру "Жизнь" - чистая хореография и никакой оркестрации, а какие интересные эффекты.
В реальных системах встречается комбинация подходов, какие-то процессы кем-то оркестрируются (полностью или частично), какие-то являются результатом хореографического взаимодействия.
Лично мне очень нравится хореографический подход, меня завораживает, когда сложные эффекты возникают из простых взаимодействий.
Post #92
396
Forwarded from Boris Romanov
- 👍 4