Transactional Outbox
Хочу розповісти про один з реально корисних патернів, який спрощує життя при роботі з legacy системами.
Сучасне legacy - це не завжди стара система. AI вніс свої поправки в розуміння legacy і тепер це може бути відносно новий продукт, який важко розвивати і мінорні зміни можуть призвести до каскадного падіння всієї системи.
Які є варіанти роботи з такими системами?
1️⃣ Переписати з нуля 😁😁
Найочевидніше, що може прийти в голову - знести все і зробити по нормальному.
Але на практиці таке не працює через велику кількість нюансів і бізнес-аспектів, які не видно на поверхні тому зазвичай або виходить така сама какуля або проєкт згортається і приймається рішення розвивати існуючу систему.
2️⃣ Залишити як є і найняти більше розробників
Це робочий варіант, який часто використовують. Але тут є важливий нюанс - чим складніша система тим дорожче будуть коштувати розробники. При цьому технічний борг продовжуватиме рости і на довгостроковому горизонті вам все одно потрібно буде щось робити з системою.
3️⃣ Залишити legacy і паралельно створювати нову систему
Найбільш робочий варіант, суть якого полягає в тому щоб паралельно з legacy-системою розробляти нову систему, яка буде сумісна з поточною і поступово її замінить.
Тут багато підходів, патернів і набитих шишок, про які я буду писати в Telegram. Один з них - це Transactional Outbox.
Суть його в тому, щоб синхронізувати legacy і нову систему за допомогою подій, не ризикуючи втратити дані в момент їх передачі. Для цього буде використовуватися окрема таблиця (Outbox) де ми будемо зберігати інформацію про зміни в базі даних
Окрім цього, в нас буде окремий worker, який буде читати outbox таблицю і передавати події в брокер, який відправить їх в нову систему для синхронізації даних.
У спрощеному вигляді це працює так:
Я декілька разів обмазувався legacy, як у ролі розробника так і на більш кошерних позиціях і можу сказати, що це реально робочий підхід. Зазвичай, його реалізація буде різною в кожному конкретному кейсі, але суть залишається та сама.
Детальніше читай тут.
#microservices
Хочу розповісти про один з реально корисних патернів, який спрощує життя при роботі з 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
Трохи забив сайт через брак часу 😐🚬
Але бачу, що за останній місяць там зареєструвалося доволі багато людей, тому планую потроху його розвивати.
На сайті вже зібрано чимало запитань, які трапляються на співбесідах як в українських, так і в європейських компаніях. Тож інформація буде особливо корисною для тих, хто зараз шукає роботу.
📎 - https://devs-hive.tech/interview-qa
Але бачу, що за останній місяць там зареєструвалося доволі багато людей, тому планую потроху його розвивати.
На сайті вже зібрано чимало запитань, які трапляються на співбесідах як в українських, так і в європейських компаніях. Тож інформація буде особливо корисною для тих, хто зараз шукає роботу.
📎 - https://devs-hive.tech/interview-qa
Devs Hive
In-depth Interview Question Breakdowns | Devs Hive
A collection of questions and answers for technical interview preparation. Includes JavaScript/Node.js, System Design, databases, and cloud technologies.
❤18👍2
Що означає висока селективність колонки в контексті індексів?
Anonymous Quiz
12%
Більшість рядків у колонці мають однакове значення
47%
Колонка містить багато унікальних значень відносно загальної кількості рядків
2%
Колонка займає мало місця на диску
40%
Колонка часто використовується в SELECT запитах
👍7
Що з наведеного можна використовувати для кешування результату SQL запиту?
Anonymous Quiz
25%
VIEW
8%
TRIGGER
40%
MATERIALIZED VIEW
26%
React.memo()
Code Review Graph (CRG)🔥🔥🔥
Натрапив на цікавий інструмент для code review, який будує структурний граф кодової бази і дає доступ AI через MCP.
Можна сказати, що це такий собі Obsidian для code review де описуються звʼязки між файлами, функціями, класами і так далі.
Скоріше за все для стартапчиків буде overhead, але для legacy кріпто казіно - це може бути дуже крутим інструментом.
Детально описувати не буду, бо вони заморочились і створили дуже гарний і зрозумілий README де все гарно розписано - https://github.com/tirth8205/code-review-graph
Натрапив на цікавий інструмент для code review, який будує структурний граф кодової бази і дає доступ AI через MCP.
Можна сказати, що це такий собі Obsidian для code review де описуються звʼязки між файлами, функціями, класами і так далі.
Скоріше за все для стартапчиків буде overhead, але для legacy кріпто казіно - це може бути дуже крутим інструментом.
Детально описувати не буду, бо вони заморочились і створили дуже гарний і зрозумілий README де все гарно розписано - https://github.com/tirth8205/code-review-graph
GitHub
GitHub - tirth8205/code-review-graph: Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase…
Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-rep...
❤14👍1
Для чого використовують Dead Letter Queue (DLQ)?
Anonymous Quiz
8%
Збереження завершених задач для аналітики і аналізу
82%
Ізоляція і повторне опрацювання задач, які знову і знову завершуються помилкою
2%
Кешування даних
8%
Балансування навантаження між воркерами
👍2🔥1
Що буде відбуватись з SQL запитом?
Anonymous Quiz
8%
Індекс буде ефективним, оскільки запит використовує дві його колонки
8%
Query planner автоматично змінить порядок колонок в індексі
66%
Індекс буде використовуватися не ефективно через відсутність умови за першою колонкою
17%
Порядок колонок не має значення, якщо індекс містить усі потрібні поля
Нове відео на каналі🍾
Детально розповів про одну з найбільш популярних сертифікацій по AI - AWS Certified AI Practitioner.
Розповів про те кому підходить ця сертифікація, основні теми і процес проходження
📎 - https://youtu.be/1nHIhpUBLto?si=r9Gw9R0Z1s1nzOP2
Детально розповів про одну з найбільш популярних сертифікацій по AI - AWS Certified AI Practitioner.
Розповів про те кому підходить ця сертифікація, основні теми і процес проходження
📎 - https://youtu.be/1nHIhpUBLto?si=r9Gw9R0Z1s1nzOP2
YouTube
Найкраща сертифікація для Junior - AWS Certified AI Practitioner
В цьому відео я розповім про популярну AI сертифікацію - AWS Certified AI Practitioner.
Підготовка до технічного інтервʼю - https://devs-hive.tech/
Linkedin - тут пишу багато цікавого про ІТ
https://www.linkedin.com/in/oleksandr-kazmirchuk-0aba41330/
Telegram…
Підготовка до технічного інтервʼю - https://devs-hive.tech/
Linkedin - тут пишу багато цікавого про ІТ
https://www.linkedin.com/in/oleksandr-kazmirchuk-0aba41330/
Telegram…
👍11
Ото в мене і підгоріло😅
Заходиш в інтернет, кожен пише про свій SaaS AI IPO Startup. Але що на практиці?
Всі ці Ілон Маски зосередились на туду лістах, фінансових апках, фітнес трекерах і тд. І ніхто не зробив простий Giveaway сервіс, щоб розіграти якісь речі👹
Так от, в мене є декілька хороших книжок, які я вже читав і хочу розіграти серед нашої спільноти.
Сьогодні, розіграємо Microservices patterns (Chris Richardson), на рос мові.
Умови
Все ізі, в коментарях під цим дописом напишіть microservices, ваш нік в тг. Наприклад microservices, @o_kazm
Ну і звісно треба бути підписаним на TG😁
Якщо ви в ЄС, то книгу отримаєте швидко, а якщо в Україні - доведеться почекати, так як укрпошта працює супер повільно (ну і я сподіваюсь, що на митниці її не завернуть).
Переможця визначимо 30.07.2026
Заходиш в інтернет, кожен пише про свій SaaS AI IPO Startup. Але що на практиці?
Всі ці Ілон Маски зосередились на туду лістах, фінансових апках, фітнес трекерах і тд. І ніхто не зробив простий Giveaway сервіс, щоб розіграти якісь речі👹
Так от, в мене є декілька хороших книжок, які я вже читав і хочу розіграти серед нашої спільноти.
Сьогодні, розіграємо Microservices patterns (Chris Richardson), на рос мові.
Умови
Все ізі, в коментарях під цим дописом напишіть microservices, ваш нік в тг. Наприклад microservices, @o_kazm
Ну і звісно треба бути підписаним на TG😁
Якщо ви в ЄС, то книгу отримаєте швидко, а якщо в Україні - доведеться почекати, так як укрпошта працює супер повільно (ну і я сподіваюсь, що на митниці її не завернуть).
Переможця визначимо 30.07.2026
🔥9🥰2🤡1
Покращення там де ніхто не чекав🔥
В Node.js почали працювати над новим UI для документації і превʼю вже доступно - https://beta.docs.nodejs.org/
Як на мене виглядає красиво. Єдине, що в екосистемі JS ніхто особливо доку не читає тому я навіть не знаю для кого це😁
В Node.js почали працювати над новим UI для документації і превʼю вже доступно - https://beta.docs.nodejs.org/
Як на мене виглядає красиво. Єдине, що в екосистемі JS ніхто особливо доку не читає тому я навіть не знаю для кого це😁
beta.docs.nodejs.org
Index | Node.js 26.7.0 Documentation
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
😁13👍4
Ранкова розминка☕️
Що відбувається під час виконання SELECT ... FOR UPDATE всередині транзакції?
Що відбувається під час виконання SELECT ... FOR UPDATE всередині транзакції?
Anonymous Quiz
3%
Вибрані рядки видаляються після завершення транзакції
74%
На вибрані рядки встановлюється блокування для запобігання їх конкурентній зміні
14%
Результат запиту зберігається в кеші до завершення транзакції
9%
Блокується вся таблиця для читання та запису
❤9👍1
Яким чином відбувається блокування перезапису змін, зроблених іншою транзакцією при Optimistic locking?
Anonymous Quiz
21%
Блокує рядок одразу після виконання SELECT
11%
Блокує всю таблицю на час виконання транзакції
9%
Автоматично об’єднує зміни з двох конкурентних транзакцій
58%
Перевіряє версію запису і скасовує операцію, якщо запис уже був змінений
👍4❤1
Це сталось, JavaScript нарешті навчився додавати числа😱😱😱
Отак подивишся і скоро вже не буде як пожартувати над JS з їхніми оновленнями
Детальніше тут
Отак подивишся і скоро вже не буде як пожартувати над JS з їхніми оновленнями
Детальніше тут
MDN Web Docs
Math.sumPrecise() - JavaScript | MDN
The Math.sumPrecise() static method takes an iterable of numbers and returns the sum of them. It is more precise than summing them up in a loop, because it avoids floating point precision loss in intermediate results.
🔥15😱2
Яка різниця між null та undefined у JavaScript?
Anonymous Quiz
1%
null використовується лише для масивів, а undefined - для обʼєктів
0%
null і undefined повністю однакові
96%
null - значення відсутнє, undefined - значення не задане
3%
undefined потрібно задавати вручну, а null JavaScript встановлює автоматично
🏆7
Яке твердження про unknown у TypeScript правильне?
Anonymous Quiz
7%
unknown може зберігати лише значення невідомого типу з API
34%
Значення типу unknown можна присвоїти змінній будь якого типу
45%
Перед використанням змінної типу unknown, потрібно зробити type narrowing
15%
TypeScript автоматично визначає тип unknown після присвоєння значення
RAG мертвий😱😱😱
Натрапив на цікавий інструмент, який дозволяє реалізувати RAG без embeddings і векторної бази даних.
PageIndex пропонує інший підхід - reasoning-first retrieval.
Замість пошуку тексту за семантичною схожістю він будує ієрархічне дерево документа, схоже на зміст книги.
Після цього LLM аналізує структуру документа і визначає в яких розділах може бути відповідь та читає лише потрібні сторінки.
Основна перевага - система працює з логічними розділами документа, а не з випадковими chunks. Це сильно спрощує роботу з великими і структурованими документами.
Дуже раджу ознайомитись, так як технологія виглядає цікавою і перспективною.
Є навіть JavaScript SDK, але змія має стабільнішу версію - https://pageindex.ai/
Натрапив на цікавий інструмент, який дозволяє реалізувати RAG без embeddings і векторної бази даних.
PageIndex пропонує інший підхід - reasoning-first retrieval.
Замість пошуку тексту за семантичною схожістю він будує ієрархічне дерево документа, схоже на зміст книги.
Після цього LLM аналізує структуру документа і визначає в яких розділах може бути відповідь та читає лише потрібні сторінки.
Основна перевага - система працює з логічними розділами документа, а не з випадковими chunks. Це сильно спрощує роботу з великими і структурованими документами.
Дуже раджу ознайомитись, так як технологія виглядає цікавою і перспективною.
Є навіть JavaScript SDK, але змія має стабільнішу версію - https://pageindex.ai/
PageIndex
Vectorless, reasoning-based RAG engine achieving 98.7% accuracy on FinanceBench.
👍23❤1🤯1
Devs Hive
Ото в мене і підгоріло😅 Заходиш в інтернет, кожен пише про свій SaaS AI IPO Startup. Але що на практиці? Всі ці Ілон Маски зосередились на туду лістах, фінансових апках, фітнес трекерах і тд. І ніхто не зробив простий Giveaway сервіс, щоб розіграти якісь…
Нагадую про розіграш, хто хоче взяти участь доєднюйтесь, завтра в 18:00 по Києву закину в рандомайзер і визначимо переможця🎰