Telegram Group & Telegram Channel
💬 Хочешь без потерь? Пиши в Outbox

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

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

Каждый раз, когда действия в системе имеют какую-то степень важности вне её контура, требуется механизм, который обеспечит надежный процесс: "сначала надёжно зафиксируй факт внутри системы, а потом передавай наружу".

🔸Что такое Transactional Outbox
Это архитектурный подход, который позволяет связать бизнес-операции и отправку событий в одну цепочку, минимизируя риск потерь и рассинхронизации. Кстати, в кейсе факапа мы начали применять именно такой подход + CDC на базе Debezium, чтобы исправить обсёр.

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


Идея простая:
©️Изменение в бизнес-данных.
©️Создание события в специальной таблице Outbox (outbox_events) о том, что произошло.
©️Только после коммита транзакции воркер берёт событие и отправляет его в брокер, очередь или другой сервис.

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

🔸Когда применять, а когда нет
©️Обязательно применять, если:
➡️Событие критично для бизнес-процесса.
➡️Нужно обеспечить строгую согласованность данных.
➡️Возможны сбои внешних систем.

©️Можно обойтись без Outbox, если:
➡️Потеря отдельных событий некритична (например, счётчики кликов).
➡️Данные касаются только логов или метрик.

Руководствуйся принципом:

Потеря события = риск → нужен Outbox.


Паттерн Transactional Outbox прост и все еще актуален особенно если тебе важна историчность - отличный способ повысить надежность взаимодействия между системой и внешним получателем событий. Именно так я строил интеграции даже 10 лет назад.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1051👏1



group-telegram.com/yazhanalitik/55
Create:
Last Update:

💬 Хочешь без потерь? Пиши в Outbox

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

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

Каждый раз, когда действия в системе имеют какую-то степень важности вне её контура, требуется механизм, который обеспечит надежный процесс: "сначала надёжно зафиксируй факт внутри системы, а потом передавай наружу".

🔸Что такое Transactional Outbox
Это архитектурный подход, который позволяет связать бизнес-операции и отправку событий в одну цепочку, минимизируя риск потерь и рассинхронизации. Кстати, в кейсе факапа мы начали применять именно такой подход + CDC на базе Debezium, чтобы исправить обсёр.

Если попробовать объяснить это паттерн просто и без лишнего академизма, то получится что-то такое:

Давайте сначала сохраним и бизнес-данные и информацию о событии в одной транзакции базы данных. А уж потом, асинхронно, будем рассылать это событие наружу.


Идея простая:
©️Изменение в бизнес-данных.
©️Создание события в специальной таблице Outbox (outbox_events) о том, что произошло.
©️Только после коммита транзакции воркер берёт событие и отправляет его в брокер, очередь или другой сервис.

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

🔸Когда применять, а когда нет
©️Обязательно применять, если:
➡️Событие критично для бизнес-процесса.
➡️Нужно обеспечить строгую согласованность данных.
➡️Возможны сбои внешних систем.

©️Можно обойтись без Outbox, если:
➡️Потеря отдельных событий некритична (например, счётчики кликов).
➡️Данные касаются только логов или метрик.

Руководствуйся принципом:

Потеря события = риск → нужен Outbox.


Паттерн Transactional Outbox прост и все еще актуален особенно если тебе важна историчность - отличный способ повысить надежность взаимодействия между системой и внешним получателем событий. Именно так я строил интеграции даже 10 лет назад.

BY #ЯЖАНАЛИТИК | Системный подход к хаосу




Share with your friend now:
group-telegram.com/yazhanalitik/55

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

In this regard, Sebi collaborated with the Telecom Regulatory Authority of India (TRAI) to reduce the vulnerability of the securities market to manipulation through misuse of mass communication medium like bulk SMS. And indeed, volatility has been a hallmark of the market environment so far in 2022, with the S&P 500 still down more than 10% for the year-to-date after first sliding into a correction last month. The CBOE Volatility Index, or VIX, has held at a lofty level of more than 30. In 2014, Pavel Durov fled the country after allies of the Kremlin took control of the social networking site most know just as VK. Russia's intelligence agency had asked Durov to turn over the data of anti-Kremlin protesters. Durov refused to do so. False news often spreads via public groups, or chats, with potentially fatal effects. READ MORE
from us


Telegram #ЯЖАНАЛИТИК | Системный подход к хаосу
FROM American