Size: a a a

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

2019 September 20

PS

Petr Shmotov in Архитектура ИТ-решений
При том, что количество и цели сервисов не известны в любой точке проекта, ибо эджайл, mvp, и тд
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Petr Shmotov
Ещё раз по шагам. Взаимодействие сервисов - это про архитектуру? Вроде да. Теперь вопрос - когда по вашему стоит проработать взаимодействие - в начале глобально и для всех, или для каждого микросервиса стоит рассматривать индивидуально?
Вначале, глобально, для всех.
Так как потом изменить это решение крайне дорого, а разные решения этой задачи не совместимы друг с другом (и еще с кучей внешних ограничений).
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Но я вот не видел еще проекта, для которого хотя бы примерное количество и цели сервисов не были понятны на ранних точках.
Так как из предметной модели все вполне очевидно вытекает.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
И чем больше система, тем более очевидны требования к коммуникациям )
источник

PD

Phil Delgyado in Архитектура ИТ-решений
А если менять подходы к коммуникациям на каждом спринте - то зачем там архитектор? И что он вообще делает-то?
источник

PS

Petr Shmotov in Архитектура ИТ-решений
Phil Delgyado
Вначале, глобально, для всех.
Так как потом изменить это решение крайне дорого, а разные решения этой задачи не совместимы друг с другом (и еще с кучей внешних ограничений).
Вот в этом мы и расходимся. Потому что у нас в зависимости от того, на что направлен сервис, выбирается способ взаимодействия - тот, который подходит оптимально под решаемую задачу: от graphql и grps, до amqp/msmq и тд
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Это не способы взамодействия. Взаимодействия могут синхронные и асинхронные, асинхронные могут быть Publish/Subscribe, Request/Reply, One-way и т.д.
источник

AP

Alexey Pryanishnikov in Архитектура ИТ-решений
Phil Delgyado
Документация всегда врет, статьи почти всегда (и нет возможности отличить правдивые от лживых), экспертное мнение всегда необъективно.
Так что таки нужно разворачивать, настраивать, проводить нагрузочное тестирование, разбираться в реальных гарантиях и ограничениях, читать код.
Где-то самому архитектору, где-то вместе с программистами или DBA/OPS, но понимать внутренности нужно.
Иначе будут получаться ненадежные, плохосопровождамые и нерасширяемые системы.
Ой, а ведь все крупные системы, где архитекторы код не пишут - именно такие. Что телеком, что крупные банки...
Для того, чтобы развернуть и потыкать, не всегда нужно читать код. Но согласен, что это просто альтернативный подход, а суть та же, что и при читании кода
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Также нужно определиться с типом организации взамодействия, хореография или оркестровка
источник

GK

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

PD

Phil Delgyado in Архитектура ИТ-решений
Petr Shmotov
Вот в этом мы и расходимся. Потому что у нас в зависимости от того, на что направлен сервис, выбирается способ взаимодействия - тот, который подходит оптимально под решаемую задачу: от graphql и grps, до amqp/msmq и тд
И для меня это свидетельство отсутствия архитектуры в проекте вообще.
Так как приводит к необходходимости для каждой пары взаимодействующих микросервисов решать с нуля задачи надежности, гарантий, взаимодействий и т.п. И зачастую выяснять, что организовать взаимодействие конкретной пары вообще нереально (так как один сервис использует нетфликсовскую работу с облаком, а другой рассчитывает на истио и они не совместимы вообще, я уж не говорю про разные реализации grpc в разных языках и фреймворках и мешах)
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
И для всего этого уже выбираются инструменты
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Gennadiy Kruglov
Это не способы взамодействия. Взаимодействия могут синхронные и асинхронные, асинхронные могут быть Publish/Subscribe, Request/Reply, One-way и т.д.
Этого мало, увы. Нужно глубже опускаться, так как гарантии уж очень разные для разных подходов и инструментов.
И нужно уметь совмещать разные подходы минимальным количеством совместимых инструментов, а это ой как не просто.
Ну и помнить о надежности, развертывании и т.п.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
А на самом деле ещё сложнее. Используется EDA или нет. Если используется, то точно будет асинхрон и паб/саб, а значит и брокер. И тогда уже важно какой, точнее понятно, что если не IoT, то Kafka)
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Зачастую вообще НФТ диктуют инструменты, а уже под них - подходы к взаимодействию...
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Gennadiy Kruglov
А на самом деле ещё сложнее. Используется EDA или нет. Если используется, то точно будет асинхрон и паб/саб, а значит и брокер. И тогда уже важно какой, точнее понятно, что если не IoT, то Kafka)
Ну, а почему кафка, а не RMQ? А если нужно 10M топиков? А что между датацентрами? А есть ли у всех используемых языков нормальные клиенты к кафке? И т.д...
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Phil Delgyado
Этого мало, увы. Нужно глубже опускаться, так как гарантии уж очень разные для разных подходов и инструментов.
И нужно уметь совмещать разные подходы минимальным количеством совместимых инструментов, а это ой как не просто.
Ну и помнить о надежности, развертывании и т.п.
Да, согласен. Дальше нужно опускается ниже. Вопрос, должен ли это делать архитектор и если да, то какой
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Phil Delgyado
Зачастую вообще НФТ диктуют инструменты, а уже под них - подходы к взаимодействию...
Точно
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Phil Delgyado
Ну, а почему кафка, а не RMQ? А если нужно 10M топиков? А что между датацентрами? А есть ли у всех используемых языков нормальные клиенты к кафке? И т.д...
Да я пошутил)) сорри
источник

PS

Petr Shmotov in Архитектура ИТ-решений
Phil Delgyado
И для меня это свидетельство отсутствия архитектуры в проекте вообще.
Так как приводит к необходходимости для каждой пары взаимодействующих микросервисов решать с нуля задачи надежности, гарантий, взаимодействий и т.п. И зачастую выяснять, что организовать взаимодействие конкретной пары вообще нереально (так как один сервис использует нетфликсовскую работу с облаком, а другой рассчитывает на истио и они не совместимы вообще, я уж не говорю про разные реализации grpc в разных языках и фреймворках и мешах)
Палка о двух концах. Там где требуется минимальный латенси приходится идти таким путем. Потому что серебряной пули, чтобы для всех задач сразу и в начале, не существует.
источник