Интеграция в интеграцию и с интеграцией внутри!

Есть особый вид архитектуры, который не описан ни в одном учебнике, но стабильно встречается в проде. Это когда ты открываешь систему и понимаешь, что она не просто интегрирована с внешними сервисами. Она состоит из интеграций.

Снаружи это выглядит прилично. Есть API, есть сервисы, есть документация, которая последний раз обновлялась в эпоху, когда еще верили в светлое будущее микросервисов.

Но стоит копнуть глубже и начинается.

Сервис А ходит в сервис Б. Сервис Б ходит в сервис С. Сервис С по старой доброй традиции ходит в сервис А, но через промежуточный адаптер, который написан на скорую руку и теперь считается критически важным компонентом бизнеса.

Дальше веселее.

Каждый сервис не просто что то делает, он обязательно интегрируется с чем то еще. Иногда даже сам с собой, но через очередь сообщений, потому что так надежнее.

В итоге получается архитектура уровня

Интеграция внутри которой интеграция которая вызывает интеграцию которая проверяет интеграцию и в конце еще одна интеграция на всякий случай.

И самое прекрасное в этом то, что никто уже не может сказать где заканчивается система и начинается внешняя интеграция. Граница стирается примерно на втором ретрае.

Любая ошибка выглядит как магия.

Почему не работает ответ зависит от фазы луны, таймаута очереди и того, кто последний деплоил этот слой интеграций.

А самое страшное что все это работает.

Плохо, нестабильно, с молитвами, но работает.

И когда кто то предлагает упростить архитектуру, в комнате становится тихо. Потому что все понимают что если убрать хотя бы одну интеграцию, вся конструкция может наконец начать вести себя предсказуемо. А к этому никто не готов.

Интеграция в интеграцию и с интеграцией внутри! | Сетка — социальная сеть от hh.ru