Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/java_fillthegaps/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
Java: fill the gaps@java_fillthegaps P.573
JAVA_FILLTHEGAPS Telegram 573
Сага

-- паттерн в микросервисах, который часто упоминается на собесах уровня сеньор и выше. В этом посте расскажу, зачем нужна сага, какие есть виды, плюсы, минусы и альтернативы.

Какую проблему решаем?

В системе много компонентов: стайка микросервисов, несколько БД, кэши и месседж брокер. Каждый микросервис в норме работает с одной БД и имеет четкий круг обязанностей.

Для многих задач нужно пройтись через несколько сервисов и зафиксировать изменения в нескольких БД.

Пример — покупка в интернет-магазине. Создать заказ, проверить наличие, снять деньги и тд. Если на каком-то шаге случится ошибка, предыдущие изменения можно откатить, чтобы система осталась в согласованном состоянии.

Для таких случаев на сцену выходит паттерн сага в двух вариантах: хореография и оркестрация.

💃 Хореография — каждый сервис “танцует” свой набор движений: знает, что делать при ошибке и кого предупредить. Например:
▫️ В сервисе А происходит ошибка
▫️ Сервис А шлёт сервису Б событие “я не смог”
▫️ Сервис Б дёргает у сервиса В команду “отмена”
▫️ Система снова в согласованном состоянии🥳

Плюсы:
Легко сделать для простых бизнес-процессов

Минусы:
Высокая связность и усложнение логики в сервисах. Сервис логистики должен знать, что если на складе нет товара, надо уведомить систему обработки заказов
Если процесс заглох на каком-то шаге, бывает сложно разобраться, что случилось и где проблема
Если шаги внутри процесса поменяются, получим задачу на много человекодней

🥁 Оркестрация — когда за порядком следит отдельный сервис. Если кто-то не смог, оркестратор шлёт остальным участникам компенсирующие указания.

Плюсы:
Сервисы меньше знают друг о друге, и логика внутри проще. Сервис оплаты не придумывает, что делать при отмене заказа, а получает четкую команду “Верни деньги”
Информация о шагах находится в одном месте
Легче понять, что происходит и разобраться в ошибках
Проще менять шаги в процессе
Проще в управлении, если в системе несколько сложных процессов

Минусы:
Ещё один компонент. Дополнительный деплой, мониторинг, страничка в конфлюенс и тд

Как реализуется оркестрация?

Есть миллион библиотек и фреймворков, например, Apache Camel или Netflix Conductor. Упомянете их — получите плюсик.

Почему сага редко встречается?

Система не выполняет в итоге нужное действие. Чаще проблема решается через Retry или Fallback. Откат предыдущих шагов — очень крайняя мера.

Собственно, на собесе ждут, что кандидат расскажет все, что выше. Хорошо, если на этом моменте обсуждение закончится, и вы перейдете к следующему вопросу.

Но в обсуждении саги есть важный нюанс, который меняет все. Если его не понимать, напротив вашей кандидатуры появится жирный минус.

Расскажу в следующем посте, а сейчас жду ваших огоньков🔥
🔥791👍5320👎3



tgoop.com/java_fillthegaps/573
Create:
Last Update:

Сага

-- паттерн в микросервисах, который часто упоминается на собесах уровня сеньор и выше. В этом посте расскажу, зачем нужна сага, какие есть виды, плюсы, минусы и альтернативы.

Какую проблему решаем?

В системе много компонентов: стайка микросервисов, несколько БД, кэши и месседж брокер. Каждый микросервис в норме работает с одной БД и имеет четкий круг обязанностей.

Для многих задач нужно пройтись через несколько сервисов и зафиксировать изменения в нескольких БД.

Пример — покупка в интернет-магазине. Создать заказ, проверить наличие, снять деньги и тд. Если на каком-то шаге случится ошибка, предыдущие изменения можно откатить, чтобы система осталась в согласованном состоянии.

Для таких случаев на сцену выходит паттерн сага в двух вариантах: хореография и оркестрация.

💃 Хореография — каждый сервис “танцует” свой набор движений: знает, что делать при ошибке и кого предупредить. Например:
▫️ В сервисе А происходит ошибка
▫️ Сервис А шлёт сервису Б событие “я не смог”
▫️ Сервис Б дёргает у сервиса В команду “отмена”
▫️ Система снова в согласованном состоянии🥳

Плюсы:
Легко сделать для простых бизнес-процессов

Минусы:
Высокая связность и усложнение логики в сервисах. Сервис логистики должен знать, что если на складе нет товара, надо уведомить систему обработки заказов
Если процесс заглох на каком-то шаге, бывает сложно разобраться, что случилось и где проблема
Если шаги внутри процесса поменяются, получим задачу на много человекодней

🥁 Оркестрация — когда за порядком следит отдельный сервис. Если кто-то не смог, оркестратор шлёт остальным участникам компенсирующие указания.

Плюсы:
Сервисы меньше знают друг о друге, и логика внутри проще. Сервис оплаты не придумывает, что делать при отмене заказа, а получает четкую команду “Верни деньги”
Информация о шагах находится в одном месте
Легче понять, что происходит и разобраться в ошибках
Проще менять шаги в процессе
Проще в управлении, если в системе несколько сложных процессов

Минусы:
Ещё один компонент. Дополнительный деплой, мониторинг, страничка в конфлюенс и тд

Как реализуется оркестрация?

Есть миллион библиотек и фреймворков, например, Apache Camel или Netflix Conductor. Упомянете их — получите плюсик.

Почему сага редко встречается?

Система не выполняет в итоге нужное действие. Чаще проблема решается через Retry или Fallback. Откат предыдущих шагов — очень крайняя мера.

Собственно, на собесе ждут, что кандидат расскажет все, что выше. Хорошо, если на этом моменте обсуждение закончится, и вы перейдете к следующему вопросу.

Но в обсуждении саги есть важный нюанс, который меняет все. Если его не понимать, напротив вашей кандидатуры появится жирный минус.

Расскажу в следующем посте, а сейчас жду ваших огоньков🔥

BY Java: fill the gaps


Share with your friend now:
tgoop.com/java_fillthegaps/573

View MORE
Open in Telegram


Telegram News

Date: |

In 2018, Telegram’s audience reached 200 million people, with 500,000 new users joining the messenger every day. It was launched for iOS on 14 August 2013 and Android on 20 October 2013. A Telegram channel is used for various purposes, from sharing helpful content to implementing a business strategy. In addition, you can use your channel to build and improve your company image, boost your sales, make profits, enhance customer loyalty, and more. 1What is Telegram Channels? Telegram iOS app: In the “Chats” tab, click the new message icon in the right upper corner. Select “New Channel.” ‘Ban’ on Telegram
from us


Telegram Java: fill the gaps
FROM American