TGViewer
Devs Hive Devs Hive @devshive · 1.41K subscribers
Post #136 683
Transactional Outbox

Хочу розповісти про один з реально корисних патернів, який спрощує життя при роботі з legacy системами.

Сучасне legacy - це не завжди стара система. AI вніс свої поправки в розуміння legacy і тепер це може бути відносно новий продукт, який важко розвивати і мінорні зміни можуть призвести до каскадного падіння всієї системи.

Які є варіанти роботи з такими системами?

1️⃣ Переписати з нуля 😁😁

Найочевидніше, що може прийти в голову - знести все і зробити по нормальному.

Але на практиці таке не працює через велику кількість нюансів і бізнес-аспектів, які не видно на поверхні тому зазвичай або виходить така сама какуля або проєкт згортається і приймається рішення розвивати існуючу систему.

2️⃣ Залишити як є і найняти більше розробників

Це робочий варіант, який часто використовують. Але тут є важливий нюанс - чим складніша система тим дорожче будуть коштувати розробники. При цьому технічний борг продовжуватиме рости і на довгостроковому горизонті вам все одно потрібно буде щось робити з системою.

3️⃣ Залишити legacy і паралельно створювати нову систему

Найбільш робочий варіант, суть якого полягає в тому щоб паралельно з legacy-системою розробляти нову систему, яка буде сумісна з поточною і поступово її замінить.
Тут багато підходів, патернів і набитих шишок, про які я буду писати в Telegram. Один з них - це Transactional Outbox.

Суть його в тому, щоб синхронізувати legacy і нову систему за допомогою подій, не ризикуючи втратити дані в момент їх передачі. Для цього буде використовуватися окрема таблиця (Outbox) де ми будемо зберігати інформацію про зміни в базі даних

Окрім цього, в нас буде окремий worker, який буде читати outbox таблицю і передавати події в брокер, який відправить їх в нову систему для синхронізації даних.

У спрощеному вигляді це працює так:

Legacy → таблиця Outbox → брокер → нова система.

Я декілька разів обмазувався legacy, як у ролі розробника так і на більш кошерних позиціях і можу сказати, що це реально робочий підхід. Зазвичай, його реалізація буде різною в кожному конкретному кейсі, але суть залишається та сама.

Детальніше читай тут.

#microservices
microservices.io Microservices Pattern: Pattern: Transactional outbox First, write the message/event to a database OUTBOX table as part of the transaction that updates business objects, and then publish it to a message broker.
  • ❤ 8
  • 👍 6
More from @devshive
  1. Oct 7, 2026Post #289
  2. Oct 7, 2026Post #288
  3. Oct 6, 2026Цікаве оновлення в Nest.js 🔥 Вони випиляли Axios з HTTP клієнта і тепер використовують na…
  4. Oct 6, 2026Ще одне практичне застосування Jev - jevgrep 🤯☕️ Це інструмент для пошуку потрібного коду…
  5. Oct 5, 2026Post #285
  6. Oct 4, 2026Дуже багато відповіли, що Promise виконає обчислення в окремому потоці 🚬 Треба робити від…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →