Size: a a a

Архитектура ИТ-решений

2019 August 15

GK

Gennadiy Kruglov in Архитектура ИТ-решений
А где Governance, там и архитекторы))
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Sergey Baranov
Меня это натолкнуло на то, что эмерджентное поведение от взаимодействия сервисов в общем случае не детерминировано и может быть шире, чем изначальная потребность. И то, что выходит за рамки изначальной потребности будет находиться вне контроля (вне поля зрения).
Хорошая мысль. Тогда можно говорить о контроле в конечном итоге
источник

RT

Roman Tsirulnikov in Архитектура ИТ-решений
Неявные связи сервисов порождают неожиданные спецэфекты в большой системе
источник

RT

Roman Tsirulnikov in Архитектура ИТ-решений
Maxim Smirnov
Давай будем формулировать более аккуратно. Термин dependency hell https://ru.wikipedia.org/wiki/Dependency_hell относится к использованию общих пакетов. В этом смысле, вызывающие друг-друга микросервисы могут (и должны) быть полностью независимыми компонентами. Т.е. в микросервисах нет такой проблемы. А на страшных рисунках выше нарисованы не зависимости, а нечто иное
Wikipedia
Dependency hell
Dependency hell (англ. ад зависимостей) — это антипаттерн управления конфигурацией, разрастание графа взаимных зависимостей программных продуктов и библиотек, приводящее к сложности установки новых и удаления старых продуктов. В сложных случаях различные установленные программные продукты требуют наличия разных версий одной и той же библиотеки. В наиболее сложных случаях один продукт может косвенно потребовать сразу две версии одной и той же библиотеки. Проблемы с зависимостями возникают у общих пакетов/библиотек, у которых некоторые другие пакеты имеют зависимости от несовместимых и различных версий общих пакетов. Если установлена одна версия общего пакета/библиотеки, для решения этой проблемы автоматизатору тестирования/программисту/администратору понадобится получить новые или старые версии зависимых пакетов. Это, в свою очередь, может нарушить работу других зависимых пакетов и добавить проблем в другой набор пакетов, таким образом образуя настоящий ад.
Не согласен:
программыне библиотеки тоже как-бы должны быть независимы друг от друга.
Но для сложных задач всегда встает вопрос повторного использования решений и появляются ссылки одних модулей на другие.
В MSA аналогично - никому к примеру не придет в голову в каждом приложении отдельно реализовывать скажем шлюз отправки SMS,
а значит всегда будут зависимости между сервисами.
Задача в том чтобы правильно организовать эти зависимости, например чтобы не было циклических связей.
источник

SB

Sergey Baranov in Архитектура ИТ-решений
Roman Tsirulnikov
Неявные связи сервисов порождают неожиданные спецэфекты в большой системе
Причем если для технических характеристик мы учимся сейчас с этим жить через chaos engineering, а с точки зрения функционального поведения вообще непонятно.
источник

SB

Sergey Baranov in Архитектура ИТ-решений
На ум только exploratory testing приходит
источник

SB

Sergey Baranov in Архитектура ИТ-решений
А существует ли реально такая проблема (про функциональное поведение) или это фантазии?)
источник

MS

Maxim Smirnov in Архитектура ИТ-решений
Roman Tsirulnikov
Не согласен:
программыне библиотеки тоже как-бы должны быть независимы друг от друга.
Но для сложных задач всегда встает вопрос повторного использования решений и появляются ссылки одних модулей на другие.
В MSA аналогично - никому к примеру не придет в голову в каждом приложении отдельно реализовывать скажем шлюз отправки SMS,
а значит всегда будут зависимости между сервисами.
Задача в том чтобы правильно организовать эти зависимости, например чтобы не было циклических связей.
С чем не согласны то? Могут ли два разных микросервиса использовать одну и ту же библиотеку? Да, могут. Но никому не придет в голову заставлять разработчиков этих сервисов синхронизировать версии. Могут ли два микросервиса вызывать один и тот же сервис? Да, могут. Но это не является зависимостью, в используемых выше терминах. Никому  в голову не придет рисовать картинку того, как, например, какой-нибудь поисковый запрос в гугле разойдется по разным модулям, повлияет на сервисы рекомендации, статистику посещений, результаты последующих выдач и пр. Если это (было бы возможно) проанализировать, то граф получился бы еще тот
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Maxim Smirnov
С чем не согласны то? Могут ли два разных микросервиса использовать одну и ту же библиотеку? Да, могут. Но никому не придет в голову заставлять разработчиков этих сервисов синхронизировать версии. Могут ли два микросервиса вызывать один и тот же сервис? Да, могут. Но это не является зависимостью, в используемых выше терминах. Никому  в голову не придет рисовать картинку того, как, например, какой-нибудь поисковый запрос в гугле разойдется по разным модулям, повлияет на сервисы рекомендации, статистику посещений, результаты последующих выдач и пр. Если это (было бы возможно) проанализировать, то граф получился бы еще тот
Если сервис вызывает другой сервис и зависит от результата вызова, то это зависимость.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Никому не придёт в голову, потому что все понимают, что это невозможно.
источник

MS

Maxim Smirnov in Архитектура ИТ-решений
Gennadiy Kruglov
Если сервис вызывает другой сервис и зависит от результата вызова, то это зависимость.
Такие "зависимости" не вызывают проблему, именуемую Dependency hell. Вот когда нам в один бинарник нужно влинковать две разные версии функции - это проблема, разные версии динамически подключаемых библиотек - это проблема, а то, что множество узлов в интернет постоянно вызывают друг-друга по http это, вообще, не проблема. Так сеть устроена. То, что новые вызовы зависят от результатов предшествующих - это, тем более не проблема, это называется бизнес-логика. Вложенные синхронные вызовы это проблема. Ну так со времен SOA прошло уже много лет и все успели понаделать асинхронных развязок. Некоторые, даже угадали где именно их надо сделать
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Maxim Smirnov
Такие "зависимости" не вызывают проблему, именуемую Dependency hell. Вот когда нам в один бинарник нужно влинковать две разные версии функции - это проблема, разные версии динамически подключаемых библиотек - это проблема, а то, что множество узлов в интернет постоянно вызывают друг-друга по http это, вообще, не проблема. Так сеть устроена. То, что новые вызовы зависят от результатов предшествующих - это, тем более не проблема, это называется бизнес-логика. Вложенные синхронные вызовы это проблема. Ну так со времен SOA прошло уже много лет и все успели понаделать асинхронных развязок. Некоторые, даже угадали где именно их надо сделать
Вызывают, если становятся неконтролируемыми
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Бизнес логика которая закодирована в виде макарон, это проблема. Распределённые макароны это тоже проблема
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Чтобы не было макарон нужен контроль
источник

SB

Sergey Baranov in Архитектура ИТ-решений
Gennadiy Kruglov
Чтобы не было макарон нужен контроль
Событийна модель скорее на суп похожа :)
источник

MS

Maxim Smirnov in Архитектура ИТ-решений
circuit breaker нужен, а не контроль :-))
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Maxim Smirnov
circuit breaker нужен, а не контроль :-))
Как он поможет?))
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Sergey Baranov
Событийна модель скорее на суп похожа :)
Точно, кипящий котёл)
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Если у вас макароны, то изменения в одном сервисе могут вызвать неконтролируемые ошибки в других. Circuit breaker защищает от недоступности сервисов, но не от распространения ошибок
источник

MS

Maxim Smirnov in Архитектура ИТ-решений
Gennadiy Kruglov
Как он поможет?))
отключит компонент, который нам не нравится(лучше навсегда). вообще, в средах, где доступные внешним клиентам сервисы явно декларируются предпосылок для лапши существенно меньше, чем при традиционном развертывании, когда каждый сервер светится по десяткам портов как новогодняя ёлка, а админы об этом даже не задумываются
источник