Джерело
Mockingbird Shares | Натрапив на пост про DBOS і трохи підвис: durable workflows прямо на P...
28 Охват/переглядів
2026-06-06 09:30
Повідомлення №2731
Натрапив на пост про DBOS і трохи підвис: durable workflows прямо на Postgres, без Temporal, без окремого кластера, без команди, що його доглядає. Зачепило не новизною, а дежавю, бо це ж було вже в мене. Років з двадцять тому в дотнет завезли штуку під назвою Windows Workflow Foundation, рушій для довгих процесів з паузами між кроками. Це був розрив шаблону: візуальний редактор, малюєш квадратики і стрілочки, зʼєднуєш мишкою, і ось твій процес, наче й коду писати не треба. На демо це виглядало дуже круто і ми вирішили його спробувати.Але магія швидко закінчувалась. Весь цей красивий граф зберігався у лютому згенерованому XML, і щойно воркфлоу ставало кілька, а в них треба було щось додати чи відрефакторити, то виявилось, шо треба то все вручну проклікувати. Бо поміняти це в тексті було нереально, а ШІ агентів тоді ще не було. Тоді я вперше задумався, що треба працювати з кодом і текстом, бо його легко версіонувати і опрацьовувати наявними інструментами. І ці думки були не лише в мене: індустрія розвивалась в сторону винесення таких довготривалих процесів в код. Тепер в нас є Celery, Temporal, Airflow, Step Functions тощо. З ними приємно працювати, все в коді — чого ще треба?Проте в більшості випадків можна обійтись простішим рішенням, і може навіть шось напиляти самим на колінці. В тому ж самому проекті, шо я згадував вище, в нас був workflow процесор, що працював з SQL Server. Все зберігалось в табличках, транзакції, блокування та інші знайомі штуки дозволяли закрити наші потреби. В іншому проекті аби зменшити цінник AWS ми реалізували процеси на базі dynamodb і лямбд, зекономивши на step functions. Вийшло ефективне рішення, яке ще й було цікаво реалізувати і ним було зручно користуватись. Але наступного разу коли треба буде durable workflows, я мабуть спробую DBOS. Під капотом там та сама табличка зі станом, чекпойнт кожного кроку і SELECT ... FOR UPDATE SKIP LOCKED щоб воркери розбирали чергу не наступаючи один одному на ноги, тільки вже як готова бібліотека. Гарний компроміс між легкістю і необхідністю кастомної розробки. Бо своє пилити то звісно прикольно, проте не завжди ефективно. Єдиний недолік, шо я бачу — це не Redis :)А ви на чому крутите свої довгі процеси, на готових продуктах чи на самопалі?